use operational monads