diff --git a/ethpub/pub.go b/ethpub/pub.go
index 6dd7798ae54cb28640b412b7f860ee3aa4dc3ed7..6beab5cf9c0d5e9373887b81560278af27057d68 100644
--- a/ethpub/pub.go
+++ b/ethpub/pub.go
@@ -2,8 +2,10 @@ package ethpub
 
 import (
 	"encoding/hex"
+	"fmt"
 	"github.com/ethereum/eth-go/ethchain"
 	"github.com/ethereum/eth-go/ethutil"
+	"math/big"
 	"strings"
 )
 
@@ -95,13 +97,29 @@ func (lib *PEthereum) Create(key, valueStr, gasStr, gasPriceStr, script string)
 	return lib.createTx(key, "", valueStr, gasStr, gasPriceStr, script)
 }
 
+var namereg = ethutil.FromHex("bb5f186604d057c1c5240ca2ae0f6430138ac010")
+
+func GetAddressFromNameReg(stateManager *ethchain.StateManager, name string) []byte {
+	recp := new(big.Int).SetBytes([]byte(name))
+	object := stateManager.CurrentState().GetStateObject(namereg)
+	reg := object.GetStorage(recp)
+
+	return reg.Bytes()
+}
+
 func (lib *PEthereum) createTx(key, recipient, valueStr, gasStr, gasPriceStr, scriptStr string) (*PReceipt, error) {
 	var hash []byte
 	var contractCreation bool
 	if len(recipient) == 0 {
 		contractCreation = true
 	} else {
-		hash = ethutil.FromHex(recipient)
+		// Check if an address is stored by this address
+		addr := GetAddressFromNameReg(lib.stateManager, recipient)
+		if len(addr) > 0 {
+			hash = addr
+		} else {
+			hash = ethutil.FromHex(recipient)
+		}
 	}
 
 	var keyPair *ethutil.KeyPair