start looking at this from a Haskell perspective
will need quickcheck at some point
define an arbitrary element
sketch out top level
generators
fix typos
neat!
slightly better
demonstrate
tidy
further tidy