Clean-up event routing (and deal with all the associated TODOs).
Fix all tests except event routing.
Fix event routing tests.
Split up tests into smaller chunks.