can't make binary protocol to apply to self refering recursive types