closes #349 - loading middlewares using async instead of crazy
middleware-stack modifying shenanigans
Merge branch 'middleware_refactor'