name consistent, tag instead of level or a
Monad instance implemented
Functor instance implemented