diff --git a/ethchain/state_manager.go b/ethchain/state_manager.go
index 02d0345d75daf68cb7a92eb80e2ed6bc8f05d6ab..501ec102bf6bd00a6942a28ba6b6150a22baffe1 100644
--- a/ethchain/state_manager.go
+++ b/ethchain/state_manager.go
@@ -350,7 +350,7 @@ func (sm *StateManager) notifyChanges() {
 
 	for stateObjectAddr, mappedObjects := range sm.manifest.storageChanges {
 		for addr, value := range mappedObjects {
-			sm.Ethereum.Reactor().Post("storage:"+stateObjectAddr+":"+addr, value.String())
+			sm.Ethereum.Reactor().Post("storage:"+stateObjectAddr+":"+addr, &StorageState{[]byte(stateObjectAddr), []byte(addr), value})
 		}
 	}
 }
diff --git a/ethchain/state_object.go b/ethchain/state_object.go
index 4ec91d2e082b9ddd56a3c5a4dcb30e4714c864f2..6176460777d2d3801b9780e750536524327b66b3 100644
--- a/ethchain/state_object.go
+++ b/ethchain/state_object.go
@@ -186,3 +186,9 @@ type CachedStateObject struct {
 	Nonce  uint64
 	Object *StateObject
 }
+
+type StorageState struct {
+	StateAddress []byte
+	Address      []byte
+	Value        *big.Int
+}
diff --git a/ethpub/pub.go b/ethpub/pub.go
index c6f177124afed44ac85deee7fec74e44c49c6f60..5f23018f7f33fb15cf9f1fd3abcea15330f9bca1 100644
--- a/ethpub/pub.go
+++ b/ethpub/pub.go
@@ -47,6 +47,18 @@ func (lib *PEthereum) GetStateObject(address string) *PStateObject {
 	return NewPStateObject(nil)
 }
 
+func (lib *PEthereum) GetStorage(address, storageAddress string) string {
+	return lib.GetStateObject(address).GetStorage(storageAddress)
+}
+
+func (lib *PEthereum) GetTxCount(address string) int {
+	return lib.GetStateObject(address).Nonce()
+}
+
+func (lib *PEthereum) IsContract(address string) bool {
+	return lib.GetStateObject(address).IsContract()
+}
+
 func (lib *PEthereum) Transact(key, recipient, valueStr, gasStr, gasPriceStr, dataStr string) (*PReceipt, error) {
 	return lib.createTx(key, recipient, valueStr, gasStr, gasPriceStr, dataStr, "")
 }
diff --git a/ethpub/types.go b/ethpub/types.go
index bf06ce2f64bcbfea60192ffc74caf527f5b19ce2..7ae476339d191a8f7a3e3fba8054f7327896ade8 100644
--- a/ethpub/types.go
+++ b/ethpub/types.go
@@ -59,16 +59,6 @@ func NewPReciept(contractCreation bool, creationAddress, hash, address []byte) *
 	}
 }
 
-/*
-type PKeyRing struct {
-	Keys []interface{}
-}
-
-func NewPKeyRing(keys []interface{}) *PKeyRing {
-	return &PKeyRing{Keys: keys}
-}
-*/
-
 type PStateObject struct {
 	object *ethchain.StateObject
 }
@@ -105,3 +95,29 @@ func (c *PStateObject) Address() string {
 
 	return ""
 }
+
+func (c *PStateObject) Nonce() int {
+	if c.object != nil {
+		return int(c.object.Nonce)
+	}
+
+	return 0
+}
+
+func (c *PStateObject) IsContract() bool {
+	if c.object != nil {
+		return len(c.object.Script()) > 0
+	}
+
+	return false
+}
+
+type PStorageState struct {
+	StateAddress string
+	Address      string
+	Value        string
+}
+
+func NewPStorageState(storageObject *ethchain.StorageState) *PStorageState {
+	return &PStorageState{ethutil.Hex(storageObject.StateAddress), ethutil.Hex(storageObject.Address), storageObject.Value.String()}
+}