diff --git a/ethchain/state.go b/ethchain/state.go
index 63c4a32a63ce6da24b5cbbf0a1697a392e76ddb2..db715f1cb10ced82d6310fa78026b62b8b35a3c6 100644
--- a/ethchain/state.go
+++ b/ethchain/state.go
@@ -61,9 +61,6 @@ func (s *State) GetStateObject(addr []byte) *StateObject {
 	cachedStateObject := s.states[string(addr)]
 	if cachedStateObject != nil {
 		stateObject.state = cachedStateObject
-	} else {
-		// If it isn't cached, cache the state
-		s.states[string(addr)] = stateObject.state
 	}
 
 	return stateObject
diff --git a/ethpub/types.go b/ethpub/types.go
index 5d3bfcaaadca980fd0c3d0706f305f9927b4dc94..77cca78b9b6fb243b90bd800f70f848cceb35955 100644
--- a/ethpub/types.go
+++ b/ethpub/types.go
@@ -104,6 +104,14 @@ func (c *PStateObject) Nonce() int {
 	return 0
 }
 
+func (c *PStateObject) Root() string {
+	if c.object != nil {
+		return ethutil.Hex(ethutil.NewValue(c.object.State().Root()).Bytes())
+	}
+
+	return "<err>"
+}
+
 func (c *PStateObject) IsContract() bool {
 	if c.object != nil {
 		return len(c.object.Script()) > 0