put a strict definition of monads at the bottom