added a template for all the monad types