app.run should be able to handle the output from controller commands

dispatch should return anything the controller commands return as well as the main app should try and render that output, if you override the render method you can control how and when that output is displayed, this way you can keep a lot of your controller commands as data in and data out and can easily be unit tested