combine route and definition factories into RouteFactory