update monads made difficult