Refactored TxState a little to be easier to work with and extend