add Rack-based routing