Initalisation
Simple accessors
Arrow scopes
Unique supply
Accessing input/output
Debugging
Typechecker global environment
Error management
Shared error message stuff: renamer and typechecker
Context management for the type checker
Error message generation (type checker)
Type constraints
Template Haskell context
Safe Haskell context
Stuff for the renamer's local env
Stuff for interface decls
Types etc.