added additional monad operations