Introduce datatypes for dispatching.
Add the Monad typeclass and make Type a Monad.
Make List a Monad.