monads finally compile