added MONAD Pattern