imported HMonads
moving to full-typed free monad