Hi, Sugestion: 'when' in Control.Monad is typed as :: Bool -> IO () -> IO (). Why not type it as: :: forall a. => Bool -> IO a -> IO () ? It is easy for 'when' to ignore the result of the first computation, and this would not break existing code, and also save a lot of >> return ()s. Best, Mauríco