diff --git a/crypto/crypto.go b/crypto/crypto.go
index 9865c87c4ebdb510c07a3867ec23d14b85197452..89423e0c43796208914bcdf1fc28abecbf8b3a70 100644
--- a/crypto/crypto.go
+++ b/crypto/crypto.go
@@ -120,6 +120,7 @@ func HexToECDSA(hexkey string) (*ecdsa.PrivateKey, error) {
 }
 
 // LoadECDSA loads a secp256k1 private key from the given file.
+// The key data is expected to be hex-encoded.
 func LoadECDSA(file string) (*ecdsa.PrivateKey, error) {
 	buf := make([]byte, 64)
 	fd, err := os.Open(file)
@@ -139,8 +140,8 @@ func LoadECDSA(file string) (*ecdsa.PrivateKey, error) {
 	return ToECDSA(key), nil
 }
 
-// SaveECDSA saves a secp256k1 private key to the given file with restrictive
-// permissions
+// SaveECDSA saves a secp256k1 private key to the given file with
+// restrictive permissions. The key data is saved hex-encoded.
 func SaveECDSA(file string, key *ecdsa.PrivateKey) error {
 	k := hex.EncodeToString(FromECDSA(key))
 	return ioutil.WriteFile(file, []byte(k), 0600)
diff --git a/eth/backend.go b/eth/backend.go
index 7799326fe2557e79ecc45fe3605965ff1319ab67..264753aba80e52d3bb7b0172a77cd62aec966e36 100644
--- a/eth/backend.go
+++ b/eth/backend.go
@@ -3,7 +3,6 @@ package eth
 import (
 	"crypto/ecdsa"
 	"fmt"
-	"io/ioutil"
 	"math"
 	"path"
 	"strings"
@@ -110,7 +109,7 @@ func (cfg *Config) nodeKey() (*ecdsa.PrivateKey, error) {
 	if key, err = crypto.GenerateKey(); err != nil {
 		return nil, fmt.Errorf("could not generate server key: %v", err)
 	}
-	if err := ioutil.WriteFile(keyfile, crypto.FromECDSA(key), 0600); err != nil {
+	if err := crypto.SaveECDSA(keyfile, key); err != nil {
 		glog.V(logger.Error).Infoln("could not persist nodekey: ", err)
 	}
 	return key, nil
@@ -223,12 +222,10 @@ func New(config *Config) (*Ethereum, error) {
 	if err != nil {
 		return nil, err
 	}
-
 	protocols := []p2p.Protocol{eth.protocolManager.SubProtocol}
 	if config.Shh {
 		protocols = append(protocols, eth.whisper.Protocol())
 	}
-
 	eth.net = &p2p.Server{
 		PrivateKey:     netprv,
 		Name:           config.Name,