[TASK] consolidate transaction logic

Major refactor of the way transactions are submitted
Not a fan of seeing the request and response objects in here. I would pull them back as close to the router as possible. 

If the request is only used for the params and query, then make those part of the data that is passed to this method. The router methods should know what to get out of the request object so you don't have to do that here anymore. 

Instead of the response object in here I'd rather see a callback to the router function that will then call response.