Allow routes to be completely customized

This is a backport of some changes from the 2.0 branch.
woah this is cool!