Protocol As Types