*: add specs and documentation to protocols