Couldn't the TransactionManager implement commit(Tx) methods rather than having those methods on the Tx itself? Then the two way references between TransactionManager and Transactions would be unneccessary