About monad transformers, I don't really like to use them because they can get hairy in some cases, and because they have poor performance in other cases.