diff --git a/cmd/ethereum/main.go b/cmd/ethereum/main.go
index afb90d72a349108e6a75b12f3edb86b8476b9a7d..f79f948d1e83e07d688264cce8d7dc139abb9cc1 100644
--- a/cmd/ethereum/main.go
+++ b/cmd/ethereum/main.go
@@ -31,6 +31,7 @@ import (
 	"github.com/ethereum/go-ethereum/eth"
 	"github.com/ethereum/go-ethereum/ethutil"
 	"github.com/ethereum/go-ethereum/logger"
+	"github.com/ethereum/go-ethereum/p2p"
 	"github.com/ethereum/go-ethereum/state"
 )
 
@@ -61,7 +62,7 @@ func main() {
 	utils.InitConfig(VmType, ConfigFile, Datadir, "ETH")
 
 	ethereum, err := eth.New(&eth.Config{
-		Name:         ethutil.MakeVersion(ClientIdentifier, Version),
+		Name:         p2p.MakeName(ClientIdentifier, Version),
 		KeyStore:     KeyStore,
 		DataDir:      Datadir,
 		LogFile:      LogFile,
diff --git a/cmd/mist/main.go b/cmd/mist/main.go
index 0ece20d2ccb2c3eb3ac581bcc5c61b891dccac2b..c9a07bfde7a4cc6c09120abf7e30bc626089f00f 100644
--- a/cmd/mist/main.go
+++ b/cmd/mist/main.go
@@ -28,8 +28,8 @@ import (
 
 	"github.com/ethereum/go-ethereum/cmd/utils"
 	"github.com/ethereum/go-ethereum/eth"
-	"github.com/ethereum/go-ethereum/ethutil"
 	"github.com/ethereum/go-ethereum/logger"
+	"github.com/ethereum/go-ethereum/p2p"
 	"github.com/ethereum/go-ethereum/ui/qt/webengine"
 	"github.com/obscuren/qml"
 )
@@ -52,7 +52,7 @@ func run() error {
 	config := utils.InitConfig(VmType, ConfigFile, Datadir, "ETH")
 
 	ethereum, err := eth.New(&eth.Config{
-		Name:         ethutil.MakeVersion(ClientIdentifier, Version),
+		Name:         p2p.MakeName(ClientIdentifier, Version),
 		KeyStore:     KeyStore,
 		DataDir:      Datadir,
 		LogFile:      LogFile,
diff --git a/eth/backend.go b/eth/backend.go
index 27d3f3b3f92486505fb11d62c7a0a9e8ff8ac366..f67f9c78b0c4612de58ea9724154eb4c867b83cf 100644
--- a/eth/backend.go
+++ b/eth/backend.go
@@ -132,8 +132,7 @@ type Ethereum struct {
 
 	logger ethlogger.LogSystem
 
-	Mining  bool
-	version string
+	Mining bool
 }
 
 func New(config *Config) (*Ethereum, error) {
@@ -176,7 +175,6 @@ func New(config *Config) (*Ethereum, error) {
 		blacklist:    p2p.NewBlacklist(),
 		eventMux:     &event.TypeMux{},
 		logger:       logger,
-		version:      config.Name,
 	}
 
 	eth.chainManager = core.NewChainManager(db, eth.EventMux())
@@ -233,7 +231,6 @@ func (s *Ethereum) PeerCount() int                       { return s.net.PeerCoun
 func (s *Ethereum) Peers() []*p2p.Peer                   { return s.net.Peers() }
 func (s *Ethereum) MaxPeers() int                        { return s.net.MaxPeers }
 func (s *Ethereum) Coinbase() []byte                     { return nil } // TODO
-func (s *Ethereum) ClientVersion() string                { return s.version }
 
 // Start the ethereum
 func (s *Ethereum) Start() error {
diff --git a/ethutil/common.go b/ethutil/common.go
index 88f4cd18998a490e1a4be8800cecb8e370d57c78..9b66763b81d4983ec1d41334a7e930c952de1da8 100644
--- a/ethutil/common.go
+++ b/ethutil/common.go
@@ -13,10 +13,6 @@ import (
 	"github.com/kardianos/osext"
 )
 
-func MakeVersion(name, version string) string {
-	return fmt.Sprintf("%s/v%s/%s/%s", name, version, runtime.GOOS, runtime.Version())
-}
-
 func DefaultAssetPath() string {
 	var assetPath string
 	pwd, _ := os.Getwd()
diff --git a/p2p/server.go b/p2p/server.go
index 25da04cd96a5c55ce50e6ef732254e803e2ff334..3ea2538d1c8a45dd5eeab35e6e5b4d99ae832a2e 100644
--- a/p2p/server.go
+++ b/p2p/server.go
@@ -6,6 +6,7 @@ import (
 	"errors"
 	"fmt"
 	"net"
+	"runtime"
 	"sync"
 	"time"
 
@@ -23,6 +24,13 @@ const (
 var srvlog = logger.NewLogger("P2P Server")
 var srvjslog = logger.NewJsonLogger()
 
+// MakeName creates a node name that follows the ethereum convention
+// for such names. It adds the operation system name and Go runtime version
+// the name.
+func MakeName(name, version string) string {
+	return fmt.Sprintf("%s/v%s/%s/%s", name, version, runtime.GOOS, runtime.Version())
+}
+
 // Server manages all peer connections.
 //
 // The fields of Server are used as configuration parameters.
@@ -37,7 +45,7 @@ type Server struct {
 	MaxPeers int
 
 	// Name sets the node name of this server.
-	// Use ethutil.MakeVersion to create a name that follows existing conventions.
+	// Use MakeName to create a name that follows existing conventions.
 	Name string
 
 	// Bootstrap nodes are used to establish connectivity
diff --git a/rpc/api.go b/rpc/api.go
index 64e9ed285055804c1a19e5c9c1389e7789f09bab..ddba422f84d69336d6c334e638524d993dddc495 100644
--- a/rpc/api.go
+++ b/rpc/api.go
@@ -609,8 +609,6 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
 			return err
 		}
 		return p.WhisperMessages(args.Id, reply)
-	case "client_version":
-		*reply = p.eth.GetClientVersion()
 	// case "eth_register":
 	// 	args, err := req.ToRegisterArgs()
 	// 	if err != nil {
diff --git a/xeth/xeth.go b/xeth/xeth.go
index b78a45f881b3cb7aba29a008d6c749cc167c1bf8..091743a957afe060c31f810c9a16b284aca0dec0 100644
--- a/xeth/xeth.go
+++ b/xeth/xeth.go
@@ -36,7 +36,6 @@ type Backend interface {
 	EventMux() *event.TypeMux
 	Whisper() *whisper.Whisper
 	Miner() *miner.Miner
-	ClientVersion() string
 }
 
 type XEth struct {
@@ -165,10 +164,6 @@ func (self *XEth) IsContract(address string) bool {
 	return len(self.State().SafeGet(address).Code()) > 0
 }
 
-func (self *XEth) GetClientVersion() string {
-	return self.eth.ClientVersion()
-}
-
 func (self *XEth) SecretToAddress(key string) string {
 	pair, err := crypto.NewKeyPairFromSec(fromHex(key))
 	if err != nil {