moved some helper classes into the same file as router
using a tuple instead of RouteResult