diff --git a/eth/backend.go b/eth/backend.go
index 6fd211b352ddcda16d334302b45dc361812e73b3..bb203b4a6f1c40141b557e95b63eaf2c5b6e9ac2 100644
--- a/eth/backend.go
+++ b/eth/backend.go
@@ -131,6 +131,7 @@ type Ethereum struct {
 
 	Mining  bool
 	DataDir string
+	version string
 }
 
 func New(config *Config) (*Ethereum, error) {
@@ -165,6 +166,7 @@ func New(config *Config) (*Ethereum, error) {
 		logger:         servlogger,
 		accountManager: config.AccountManager,
 		DataDir:        config.DataDir,
+		version:        config.Name, // TODO should separate from Name
 	}
 
 	eth.chainManager = core.NewChainManager(blockDb, stateDb, eth.EventMux())
@@ -236,6 +238,7 @@ func (s *Ethereum) IsListening() bool                    { return true } // Alwa
 func (s *Ethereum) PeerCount() int                       { return s.net.PeerCount() }
 func (s *Ethereum) Peers() []*p2p.Peer                   { return s.net.Peers() }
 func (s *Ethereum) MaxPeers() int                        { return s.net.MaxPeers }
+func (s *Ethereum) Version() string                      { return s.version }
 
 // Start the ethereum
 func (s *Ethereum) Start() error {
diff --git a/rpc/api.go b/rpc/api.go
index b72a0dd60377126580e6ea1ca316da061620a4d5..05f4d0bc4228b217b6d32a96294b9988d30425de 100644
--- a/rpc/api.go
+++ b/rpc/api.go
@@ -477,6 +477,10 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
 			return err
 		}
 		*reply = toHex(crypto.Sha3(fromHex(args.Data)))
+	case "web3_clientVersion":
+		*reply = p.xeth().Backend().Version()
+	case "net_version":
+		return NewNotImplementedError(req.Method)
 	case "net_listening":
 		*reply = p.xeth().IsListening()
 	case "net_peerCount":
@@ -675,9 +679,7 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
 		*reply = uncle
 	case "eth_getCompilers":
 		return p.GetCompilers(reply)
-	case "eth_compileSolidity":
-	case "eth_compileLLL":
-	case "eth_compileSerpent":
+	case "eth_compileSolidity", "eth_compileLLL", "eth_compileSerpent":
 		return NewNotImplementedError(req.Method)
 	case "eth_newFilter":
 		args := new(FilterOptions)
@@ -715,8 +717,7 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
 			return err
 		}
 		return p.AllLogs(args, reply)
-	case "eth_getWork":
-	case "eth_submitWork":
+	case "eth_getWork", "eth_submitWork":
 		return NewNotImplementedError(req.Method)
 	case "db_put":
 		args := new(DbArgs)
@@ -744,8 +745,7 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
 			return err
 		}
 		return p.HasWhisperIdentity(args.Identity, reply)
-	case "shh_newGroup":
-	case "shh_addToGroup":
+	case "shh_newGroup", "shh_addToGroup":
 		return NewNotImplementedError(req.Method)
 	case "shh_newFilter":
 		args := new(WhisperFilterArgs)
diff --git a/xeth/xeth.go b/xeth/xeth.go
index 4c28caf86700256771bb6c2930c877581ed00d8a..7f89cbb2e284a9ae36e86f434ba368f12159ab2f 100644
--- a/xeth/xeth.go
+++ b/xeth/xeth.go
@@ -39,6 +39,7 @@ type Backend interface {
 	IsMining() bool
 	StartMining() error
 	StopMining()
+	Version() string
 }
 
 // Frontend should be implemented by users of XEth. Its methods are