restructured to have brouter stuff encapsulated in RouteProvider