adding support for before and after interceptors and ability for js controller to write directly to the output stream