Get started on #9 (defprotocol/deftype)