diff --git a/core/block_manager.go b/core/block_manager.go
index 7227c6f956612200823de3d78399264c2a6bc8ce..f6c73bc2ca9e26626104de4c4abef53d704f718b 100644
--- a/core/block_manager.go
+++ b/core/block_manager.go
@@ -60,14 +60,6 @@ type BlockManager struct {
 	Pow pow.PoW
 	// The ethereum manager interface
 	eth EthManager
-	// The managed states
-	// Transiently state. The trans state isn't ever saved, validated and
-	// it could be used for setting account nonces without effecting
-	// the main states.
-	transState *state.StateDB
-	// Mining state. The mining state is used purely and solely by the mining
-	// operation.
-	miningState *state.StateDB
 
 	// The last attempted block is mainly used for debugging purposes
 	// This does not have to be a valid block and will be set during
@@ -75,14 +67,17 @@ type BlockManager struct {
 	lastAttemptedBlock *types.Block
 
 	events event.Subscription
+
+	eventMux *event.TypeMux
 }
 
 func NewBlockManager(ethereum EthManager) *BlockManager {
 	sm := &BlockManager{
-		mem: make(map[string]*big.Int),
-		Pow: ezp.New(),
-		eth: ethereum,
-		bc:  ethereum.ChainManager(),
+		mem:      make(map[string]*big.Int),
+		Pow:      ezp.New(),
+		eth:      ethereum,
+		bc:       ethereum.ChainManager(),
+		eventMux: ethereum.EventMux(),
 	}
 
 	return sm
@@ -151,7 +146,7 @@ done:
 
 		// Notify all subscribers
 		if !transientProcess {
-			go self.eth.EventMux().Post(TxPostEvent{tx})
+			go self.eventMux.Post(TxPostEvent{tx})
 		}
 
 		receipts = append(receipts, receipt)
@@ -245,8 +240,6 @@ func (sm *BlockManager) ProcessWithParent(block, parent *types.Block) (td *big.I
 
 		chainlogger.Infof("Processed block #%d (%x...)\n", block.Number, block.Hash()[0:4])
 
-		sm.transState = state.Copy()
-
 		sm.eth.TxPool().RemoveSet(block.Transactions())
 
 		return td, messages, nil
diff --git a/core/chain_manager.go b/core/chain_manager.go
index 0322edaa5f3ef79dfb985db496431a5bc05a81d4..edf50e715c144b539e4d8c45ff4764c39e6644bb 100644
--- a/core/chain_manager.go
+++ b/core/chain_manager.go
@@ -288,6 +288,8 @@ func (self *ChainManager) InsertChain(chain types.Blocks) error {
 
 			self.SetTotalDifficulty(td)
 			self.insert(block)
+			self.transState = self.State().Copy()
+			//sm.eth.TxPool().RemoveSet(block.Transactions())
 		}
 
 		self.eventMux.Post(NewBlockEvent{block})