extract request allocation from the main app serving routine
pull request allocation up one frame
switch to the `serve` method so we can remove the request class (eventually)
pass the correct custom request to the recognize method
decouple the router object from the request class