#88 refactoring Monad: finished