Reduce duplication of protocol methods

The duplication can become confusing. Rather than letting this happen it
might be easier for newbies to see the extend-protocol use with
defrecords.
Provide some documentation for protocol method

This is our "interface", so make the interface easier to understand for
those that explore using the REPL.