diff --git a/ethereal/assets/qml/wallet.qml b/ethereal/assets/qml/wallet.qml
index 458ce90e4fe8261411cd14f69700c930619bc17e..bbb147d89762f2b677fbe009cfccbe714bcf7611 100644
--- a/ethereal/assets/qml/wallet.qml
+++ b/ethereal/assets/qml/wallet.qml
@@ -221,23 +221,30 @@ ApplicationWindow {
 				color: "#00000000"
 				anchors.fill: parent
 
-				Label {
-					id: addressLabel
-					text: "Address"
-					anchors {
-						margins: 5
-						top: parent.top
-						left: parent.left
+				Column {
+					spacing: 3
+					anchors.fill: parent
+					anchors.topMargin: 5
+					anchors.leftMargin: 5
+
+					Label {
+						id: addressLabel
+						text: "Address"
 					}
-				}
-				TextField {
-					anchors {
-						margins: 5
-						left: addressLabel.right
-						top: parent.top
+					TextField {
+						text: pub.getKey().address
+						width: 500
+					}
+
+					Label {
+						text: "Client ID"
+					}
+					TextField {
+						text: eth.clientId()
+						onTextChanged: {
+							eth.changeClientId(text)
+						}
 					}
-					text: pub.getKey().address
-					width: 500
 				}
 
 
diff --git a/ethereal/ethereum.go b/ethereal/ethereum.go
index a7e43cd9aa6d3640f931749eee54d7a6a3bfa592..b6e1c681b91311cc030200afc64fb384696bce98 100644
--- a/ethereal/ethereum.go
+++ b/ethereal/ethereum.go
@@ -50,7 +50,7 @@ func main() {
 	} else {
 		g.ParseAll()
 	}
-	ethutil.ReadConfig(".ethereal", ethutil.LogFile|ethutil.LogStd, Identifier)
+	ethutil.ReadConfig(".ethereal", ethutil.LogFile|ethutil.LogStd, g, Identifier)
 
 	// Instantiated a eth stack
 	ethereum, err := eth.New(eth.CapDefault, UseUPnP)
diff --git a/ethereal/ui/gui.go b/ethereal/ui/gui.go
index d6430d1feee0d714d51e3e8531dc9acabdade535..42d1c7a04106a951630715e20716fb7242752dc5 100644
--- a/ethereal/ui/gui.go
+++ b/ethereal/ui/gui.go
@@ -67,6 +67,7 @@ func (gui *Gui) Start(assetPath string) {
 	}})
 
 	ethutil.Config.SetClientString(fmt.Sprintf("/Ethereal v%s", version))
+
 	// Create a new QML engine
 	gui.engine = qml.NewEngine()
 	context := gui.engine.Context()
@@ -315,3 +316,11 @@ func (gui *Gui) Create(recipient, value, gas, gasPrice, data string) (*ethpub.PR
 
 	return gui.pub.Transact(ethutil.Hex(keyPair.PrivateKey), recipient, value, gas, gasPrice, data)
 }
+
+func (gui *Gui) ChangeClientId(id string) {
+	ethutil.Config.SetIdentifier(id)
+}
+
+func (gui *Gui) ClientId() string {
+	return ethutil.Config.Identifier
+}
diff --git a/ethereum/ethereum.go b/ethereum/ethereum.go
index 7bb668235eaae85b5a599445e07dbb048b5487a7..ecbf04c9a5e5dea88608d35c3360d40b40a29d00 100644
--- a/ethereum/ethereum.go
+++ b/ethereum/ethereum.go
@@ -6,10 +6,12 @@ import (
 	"github.com/ethereum/eth-go/ethchain"
 	"github.com/ethereum/eth-go/ethutil"
 	"github.com/ethereum/go-ethereum/utils"
+	"github.com/rakyll/globalconf"
 	"io/ioutil"
 	"log"
 	"os"
 	"os/signal"
+	"path"
 	"runtime"
 	"strings"
 )
@@ -59,7 +61,15 @@ func main() {
 		lt = ethutil.LogFile | ethutil.LogStd
 	}
 
-	ethutil.ReadConfig(".ethereum", lt, Identifier)
+	g, err := globalconf.NewWithOptions(&globalconf.Options{
+		Filename: path.Join(ethutil.ApplicationFolder(".ethereal"), "conf.ini"),
+	})
+	if err != nil {
+		fmt.Println(err)
+	} else {
+		g.ParseAll()
+	}
+	ethutil.ReadConfig(".ethereum", lt, g, Identifier)
 
 	logger := ethutil.Config.Log