Separated routing start from the Transaction constructor, to make sure that the object that creates the transaction object is in a consistent state when the routing calls back that object