1. A method for executing transactions comprising: obtaining a memory location required by a first transaction, wherein the first transaction is identified using a first transaction identification and a first transaction version; determining a second transaction with ownership of a memory group comprising the memory location, wherein the second transaction is identified using a second transaction identification and a second transaction version; copying an intermediate value associated with the memory group from the second transaction into transactional metadata associated with the first transaction; changing ownership of the memory group to the first transaction; and committing the first transaction.