Add docstrings.
Supply a convenience function for setting.
Start each documented function on a new line.
Avoid protocols until we have to use them e.g. for performance.
Add TravisCI.