Routing rewritten, now Regexp(tm) free