Update docs; add tests, trait-based routers