MTL is a collection of monad classes, extending the 'transformers' package, using functional dependencies for generic lifting of monadic actions.