Make protocols instances

Assuming tests pass, this should fix #486.