finished free monads
scrive