diff --git a/erisdb/pipe/blockchain.go b/erisdb/pipe/blockchain.go
index ff905304f4345cc6bde71c0713e7c4440dd11dd2..471ee69927790df6434c9ffc7bdcbd4cc82c0690 100644
--- a/erisdb/pipe/blockchain.go
+++ b/erisdb/pipe/blockchain.go
@@ -41,9 +41,9 @@ func newBlockchain(blockStore BlockStore) *blockchain {
 
 // Get the status.
 func (this *blockchain) Info() (*BlockchainInfo, error) {
-	chainId := config.GetString("chain_id")
+	chainId := config.GetString("erisdb.chain_id")
 	db := dbm.NewMemDB()
-	_, genesisState := state.MakeGenesisStateFromFile(db, config.GetString("erisdb_genesis_file"))
+	_, genesisState := state.MakeGenesisStateFromFile(db, config.GetString("erisdb.genesis_file"))
 	genesisHash := genesisState.Hash()
 	latestHeight := this.blockStore.Height()
 
@@ -63,13 +63,13 @@ func (this *blockchain) Info() (*BlockchainInfo, error) {
 
 // Get the chain id.
 func (this *blockchain) ChainId() (string, error) {
-	return config.GetString("chain_id"), nil
+	return config.GetString("erisdb.chain_id"), nil
 }
 
 // Get the hash of the genesis block.
 func (this *blockchain) GenesisHash() ([]byte, error) {
 	db := dbm.NewMemDB()
-	_, genesisState := state.MakeGenesisStateFromFile(db, config.GetString("erisdb_genesis_file"))
+	_, genesisState := state.MakeGenesisStateFromFile(db, config.GetString("erisdb.genesis_file"))
 	return genesisState.Hash(), nil
 }
 
diff --git a/erisdb/pipe/transactor.go b/erisdb/pipe/transactor.go
index a439f649a9502fc5310e1f1b82442f4a7612aa03..cd8d5d51090c1e553cba44ad0a1f71111f045d85 100644
--- a/erisdb/pipe/transactor.go
+++ b/erisdb/pipe/transactor.go
@@ -104,7 +104,7 @@ func (this *transactor) BroadcastTx(tx types.Tx) (*Receipt, error) {
 		return nil, fmt.Errorf("Error broadcasting transaction: %v", err)
 	}
 
-	chainId := config.GetString("chain_id")
+	chainId := config.GetString("erisdb.chain_id")
 	txHash := types.TxID(chainId, tx)
 	var createsContract uint8
 	var contractAddr []byte
@@ -246,12 +246,12 @@ func (this *transactor) SignTx(tx types.Tx, privAccounts []*account.PrivAccount)
 			return nil, fmt.Errorf("Invalid (empty) privAccount @%v", i)
 		}
 	}
-	chainId := config.GetString("chain_id")
+	chainId := config.GetString("erisdb.chain_id")
 	switch tx.(type) {
 	case *types.NameTx:
 		nameTx := tx.(*types.NameTx)
 		nameTx.Input.PubKey = privAccounts[0].PubKey
-		nameTx.Input.Signature = privAccounts[0].Sign(config.GetString("chain_id"), nameTx)
+		nameTx.Input.Signature = privAccounts[0].Sign(config.GetString("erisdb.chain_id"), nameTx)
 	case *types.SendTx:
 		sendTx := tx.(*types.SendTx)
 		for i, input := range sendTx.Inputs {
diff --git a/erisdb/serve.go b/erisdb/serve.go
index fc97c784707d99954be131e6eed6fc13d151b526..8b3ebe5ee5e639244705a09e71dfc0f371e3f17f 100644
--- a/erisdb/serve.go
+++ b/erisdb/serve.go
@@ -90,7 +90,7 @@ func ServeErisDB(workDir string, inProc bool) (*server.ServeProcess, error) {
 	state := sm.LoadState(stateDB)
 	var genDoc *stypes.GenesisDoc
 	if state == nil {
-		genDoc, state = sm.MakeGenesisStateFromFile(stateDB, config.GetString("genesis_file"))
+		genDoc, state = sm.MakeGenesisStateFromFile(stateDB, config.GetString("erisdb.genesis_file"))
 		state.Save()
 		buf, n, err := new(bytes.Buffer), new(int), new(error)
 		wire.WriteJSON(genDoc, buf, n, err)
@@ -106,9 +106,7 @@ func ServeErisDB(workDir string, inProc bool) (*server.ServeProcess, error) {
 			Exit(Fmt("Unable to read gendoc from db: %v", err))
 		}
 	}
-	// add the chainid to the global config
-	// for now it's same for both of them
-	config.Set("tm.chain_id", state.ChainID)
+	// add the chainid
 	config.Set("erisdb.chain_id", state.ChainID)
 
 	// *****************************
@@ -176,14 +174,14 @@ func startTMNode(app *edbapp.ErisDBApp) {
 	config.Set("tm.genesis_doc", genDoc)
 
 	// Get PrivValidator
-	privValidatorFile := config.GetString("priv_validator_file")
+	privValidatorFile := config.GetString("tm.priv_validator_file")
 	privValidator := types.LoadOrGenPrivValidator(privValidatorFile)
 	nd := node.NewNode(privValidator, func(addr string, hash []byte) proxy.AppConn {
 		// TODO: Check the hash
 		return tmspcli.NewLocalClient(new(sync.Mutex), app)
 	})
 
-	l := p2p.NewDefaultListener("tcp", config.GetString("node_laddr"), config.GetBool("skip_upnp"))
+	l := p2p.NewDefaultListener("tcp", config.GetString("tm.node_laddr"), config.GetBool("tm.skip_upnp"))
 	nd.AddListener(l)
 	if err := nd.Start(); err != nil {
 		Exit(Fmt("Failed to start node: %v", err))
@@ -192,13 +190,13 @@ func startTMNode(app *edbapp.ErisDBApp) {
 	log.Notice("Started node", "nodeInfo", nd.NodeInfo())
 
 	// If seedNode is provided by config, dial out.
-	if config.GetString("seeds") != "" {
-		seeds := strings.Split(config.GetString("seeds"), ",")
+	if config.GetString("tm.seeds") != "" {
+		seeds := strings.Split(config.GetString("tm.seeds"), ",")
 		nd.DialSeeds(seeds)
 	}
 
 	// Run the RPC server.
-	if config.GetString("rpc_laddr") != "" {
+	if config.GetString("tm.rpc_laddr") != "" {
 		_, err := nd.StartRPC()
 		if err != nil {
 			PanicCrisis(err)
diff --git a/txs/tx_test.go b/txs/tx_test.go
index 5c7df10b6c63200d1697a32662b900fcdf732468..734850dab603743d54c0ac56c77df5dd06879ef6 100644
--- a/txs/tx_test.go
+++ b/txs/tx_test.go
@@ -14,7 +14,7 @@ var chainID string
 
 func init() {
 	tendermint_test.ResetConfig("txs_test")
-	chainID = config.GetString("chain_id")
+	chainID = config.GetString("erisdb.chain_id")
 }
 
 func TestSendTxSignable(t *testing.T) {
@@ -45,7 +45,7 @@ func TestSendTxSignable(t *testing.T) {
 	signBytes := acm.SignBytes(chainID, sendTx)
 	signStr := string(signBytes)
 	expected := Fmt(`{"chain_id":"%s","tx":[1,{"inputs":[{"address":"696E70757431","amount":12345,"sequence":67890},{"address":"696E70757432","amount":111,"sequence":222}],"outputs":[{"address":"6F757470757431","amount":333},{"address":"6F757470757432","amount":444}]}]}`,
-		config.GetString("chain_id"))
+		config.GetString("erisdb.chain_id"))
 	if signStr != expected {
 		t.Errorf("Got unexpected sign string for SendTx. Expected:\n%v\nGot:\n%v", expected, signStr)
 	}
@@ -66,7 +66,7 @@ func TestCallTxSignable(t *testing.T) {
 	signBytes := acm.SignBytes(chainID, callTx)
 	signStr := string(signBytes)
 	expected := Fmt(`{"chain_id":"%s","tx":[2,{"address":"636F6E747261637431","data":"6461746131","fee":222,"gas_limit":111,"input":{"address":"696E70757431","amount":12345,"sequence":67890}}]}`,
-		config.GetString("chain_id"))
+		config.GetString("erisdb.chain_id"))
 	if signStr != expected {
 		t.Errorf("Got unexpected sign string for CallTx. Expected:\n%v\nGot:\n%v", expected, signStr)
 	}
@@ -86,7 +86,7 @@ func TestNameTxSignable(t *testing.T) {
 	signBytes := acm.SignBytes(chainID, nameTx)
 	signStr := string(signBytes)
 	expected := Fmt(`{"chain_id":"%s","tx":[3,{"data":"secretly.not.google.com","fee":1000,"input":{"address":"696E70757431","amount":12345,"sequence":250},"name":"google.com"}]}`,
-		config.GetString("chain_id"))
+		config.GetString("erisdb.chain_id"))
 	if signStr != expected {
 		t.Errorf("Got unexpected sign string for CallTx. Expected:\n%v\nGot:\n%v", expected, signStr)
 	}
@@ -123,7 +123,7 @@ func TestBondTxSignable(t *testing.T) {
 	signBytes := acm.SignBytes(chainID, bondTx)
 	signStr := string(signBytes)
 	expected := Fmt(`{"chain_id":"%s","tx":[17,{"inputs":[{"address":"696E70757431","amount":12345,"sequence":67890},{"address":"696E70757432","amount":111,"sequence":222}],"pub_key":"3B6A27BCCEB6A42D62A3A8D02A6F0D73653215771DE243A63AC048A18B59DA29","unbond_to":[{"address":"6F757470757431","amount":333},{"address":"6F757470757432","amount":444}]}]}`,
-		config.GetString("chain_id"))
+		config.GetString("erisdb.chain_id"))
 	if signStr != expected {
 		t.Errorf("Unexpected sign string for BondTx. \nGot %s\nExpected %s", signStr, expected)
 	}
@@ -137,7 +137,7 @@ func TestUnbondTxSignable(t *testing.T) {
 	signBytes := acm.SignBytes(chainID, unbondTx)
 	signStr := string(signBytes)
 	expected := Fmt(`{"chain_id":"%s","tx":[18,{"address":"6164647265737331","height":111}]}`,
-		config.GetString("chain_id"))
+		config.GetString("erisdb.chain_id"))
 	if signStr != expected {
 		t.Errorf("Got unexpected sign string for UnbondTx")
 	}
@@ -151,7 +151,7 @@ func TestRebondTxSignable(t *testing.T) {
 	signBytes := acm.SignBytes(chainID, rebondTx)
 	signStr := string(signBytes)
 	expected := Fmt(`{"chain_id":"%s","tx":[19,{"address":"6164647265737331","height":111}]}`,
-		config.GetString("chain_id"))
+		config.GetString("erisdb.chain_id"))
 	if signStr != expected {
 		t.Errorf("Got unexpected sign string for RebondTx")
 	}
@@ -174,7 +174,7 @@ func TestPermissionsTxSignable(t *testing.T) {
 	signBytes := acm.SignBytes(chainID, permsTx)
 	signStr := string(signBytes)
 	expected := Fmt(`{"chain_id":"%s","tx":[32,{"args":"[2,{"address":"6164647265737331","permission":1,"value":true}]","input":{"address":"696E70757431","amount":12345,"sequence":250}}]}`,
-		config.GetString("chain_id"))
+		config.GetString("erisdb.chain_id"))
 	if signStr != expected {
 		t.Errorf("Got unexpected sign string for PermsTx. Expected:\n%v\nGot:\n%v", expected, signStr)
 	}