diff --git a/ethchain/state_manager.go b/ethchain/state_manager.go
index 4b0ea25158852905c11739c842a910b592e2d2eb..c33ba92725de405ab7ab8cb9f1eda5039b01ad96 100644
--- a/ethchain/state_manager.go
+++ b/ethchain/state_manager.go
@@ -114,12 +114,12 @@ func (sm *StateManager) ApplyTransactions(block *Block, txs []*Transaction) {
 			// contract instead of moving funds between accounts.
 			var err error
 			if contract := sm.procState.GetContract(tx.Recipient); contract != nil {
-				err = sm.Ethereum.TxPool().ProcessTransaction(tx, sm.procState, true)
+				err = sm.Ethereum.TxPool().ProcessTransaction(tx, block, true)
 				if err == nil {
 					sm.ProcessContract(contract, tx, block)
 				}
 			} else {
-				err = sm.Ethereum.TxPool().ProcessTransaction(tx, sm.procState, false)
+				err = sm.Ethereum.TxPool().ProcessTransaction(tx, block, false)
 			}
 
 			if err != nil {
diff --git a/ethchain/transaction_pool.go b/ethchain/transaction_pool.go
index 849909677a49405c0e61194ab93696c8f8e360ba..0bcfe69234a4c3e407b97e44804bb36e6193106d 100644
--- a/ethchain/transaction_pool.go
+++ b/ethchain/transaction_pool.go
@@ -90,7 +90,7 @@ func (pool *TxPool) addTransaction(tx *Transaction) {
 
 // Process transaction validates the Tx and processes funds from the
 // sender to the recipient.
-func (pool *TxPool) ProcessTransaction(tx *Transaction, state *State, toContract bool) (err error) {
+func (pool *TxPool) ProcessTransaction(tx *Transaction, block *Block, toContract bool) (err error) {
 	defer func() {
 		if r := recover(); r != nil {
 			log.Println(r)
@@ -98,7 +98,7 @@ func (pool *TxPool) ProcessTransaction(tx *Transaction, state *State, toContract
 		}
 	}()
 	// Get the sender
-	sender := state.GetAccount(tx.Sender())
+	sender := block.state.GetAccount(tx.Sender())
 
 	// Make sure there's enough in the sender's account. Having insufficient
 	// funds won't invalidate this transaction but simple ignores it.
@@ -112,7 +112,7 @@ func (pool *TxPool) ProcessTransaction(tx *Transaction, state *State, toContract
 	}
 
 	// Get the receiver
-	receiver := state.GetAccount(tx.Recipient)
+	receiver := block.state.GetAccount(tx.Recipient)
 	sender.Nonce += 1
 
 	// Send Tx to self
@@ -128,10 +128,10 @@ func (pool *TxPool) ProcessTransaction(tx *Transaction, state *State, toContract
 		// Add the amount to receivers account which should conclude this transaction
 		receiver.Amount.Add(receiver.Amount, tx.Value)
 
-		state.UpdateAccount(tx.Recipient, receiver)
+		block.state.UpdateAccount(tx.Recipient, receiver)
 	}
 
-	state.UpdateAccount(tx.Sender(), sender)
+	block.state.UpdateAccount(tx.Sender(), sender)
 
 	log.Printf("[TXPL] Processed Tx %x\n", tx.Hash())