diff --git a/cmd/utils/bootnodes.go b/cmd/utils/bootnodes.go
index 23ac6c2faaca7a949bc545a708595c1c97173e27..1947030fc470667299659cda08fe2ccc10dab64e 100644
--- a/cmd/utils/bootnodes.go
+++ b/cmd/utils/bootnodes.go
@@ -46,14 +46,18 @@ var TestnetBootnodes = []*discover.Node{
 
 // MainnetChainConfig is the chain parameters to run a node on the main network.
 var MainnetChainConfig = &core.ChainConfig{
-	HomesteadBlock: params.MainNetHomesteadBlock,
-	DAOForkBlock:   params.MainNetDAOForkBlock,
-	DAOForkSupport: true,
+	HomesteadBlock:           params.MainNetHomesteadBlock,
+	DAOForkBlock:             params.MainNetDAOForkBlock,
+	DAOForkSupport:           true,
+	HomesteadGasRepriceBlock: params.MainNetHomesteadGasRepriceBlock,
+	HomesteadGasRepriceHash:  params.MainNetHomesteadGasRepriceHash,
 }
 
 // TestnetChainConfig is the chain parameters to run a node on the test network.
 var TestnetChainConfig = &core.ChainConfig{
-	HomesteadBlock: params.TestNetHomesteadBlock,
-	DAOForkBlock:   params.TestNetDAOForkBlock,
-	DAOForkSupport: false,
+	HomesteadBlock:           params.TestNetHomesteadBlock,
+	DAOForkBlock:             params.TestNetDAOForkBlock,
+	DAOForkSupport:           false,
+	HomesteadGasRepriceBlock: params.TestNetHomesteadGasRepriceBlock,
+	HomesteadGasRepriceHash:  params.TestNetHomesteadGasRepriceHash,
 }
diff --git a/mobile/core.go b/mobile/core.go
index 72acfbf875491be6085517c8eb2c9e4053f45dca..a49a4e6600120dcfc4df8ab8f7419ab7bb172802 100644
--- a/mobile/core.go
+++ b/mobile/core.go
@@ -23,32 +23,46 @@ import (
 	"github.com/ethereum/go-ethereum/params"
 )
 
-// MainnetChainConfig is the chain configurations for the main Ethereum network.
-var MainnetChainConfig = &ChainConfig{
-	HomesteadBlock: params.MainNetHomesteadBlock.Int64(),
-	DAOForkBlock:   params.MainNetDAOForkBlock.Int64(),
-	DAOForkSupport: true,
+// MainnetChainConfig returns the chain configurations for the main Ethereum network.
+func MainnetChainConfig() *ChainConfig {
+	return &ChainConfig{
+		HomesteadBlock:           params.MainNetHomesteadBlock.Int64(),
+		DAOForkBlock:             params.MainNetDAOForkBlock.Int64(),
+		DAOForkSupport:           true,
+		HomesteadGasRepriceBlock: params.MainNetHomesteadGasRepriceBlock.Int64(),
+		HomesteadGasRepriceHash:  Hash{params.MainNetHomesteadGasRepriceHash},
+	}
 }
 
-// MainnetGenesis is the JSON spec to use for the main Ethereum network. It is
-// actually empty since that defaults to the hard coded binary genesis block.
-var MainnetGenesis = ""
+// MainnetGenesis returns the JSON spec to use for the main Ethereum network. It
+// is actually empty since that defaults to the hard coded binary genesis block.
+func MainnetGenesis() string {
+	return ""
+}
 
-// TestnetChainConfig is the chain configurations for the Ethereum test network.
-var TestnetChainConfig = &ChainConfig{
-	HomesteadBlock: params.TestNetHomesteadBlock.Int64(),
-	DAOForkBlock:   0,
-	DAOForkSupport: false,
+// TestnetChainConfig returns the chain configurations for the Ethereum test network.
+func TestnetChainConfig() *ChainConfig {
+	return &ChainConfig{
+		HomesteadBlock:           params.TestNetHomesteadBlock.Int64(),
+		DAOForkBlock:             0,
+		DAOForkSupport:           false,
+		HomesteadGasRepriceBlock: params.TestNetHomesteadGasRepriceBlock.Int64(),
+		HomesteadGasRepriceHash:  Hash{params.TestNetHomesteadGasRepriceHash},
+	}
 }
 
-// TestnetGenesis is the JSON spec to use for the Ethereum test network.
-var TestnetGenesis = core.TestNetGenesisBlock()
+// TestnetGenesis returns the JSON spec to use for the Ethereum test network.
+func TestnetGenesis() string {
+	return core.TestNetGenesisBlock()
+}
 
 // ChainConfig is the core config which determines the blockchain settings.
 type ChainConfig struct {
-	HomesteadBlock int64 // Homestead switch block
-	DAOForkBlock   int64 // TheDAO hard-fork switch block
-	DAOForkSupport bool  // Whether the nodes supports or opposes the DAO hard-fork
+	HomesteadBlock           int64 // Homestead switch block
+	DAOForkBlock             int64 // TheDAO hard-fork switch block
+	DAOForkSupport           bool  // Whether the nodes supports or opposes the DAO hard-fork
+	HomesteadGasRepriceBlock int64 // Homestead gas reprice switch block
+	HomesteadGasRepriceHash  Hash  // Homestead gas reprice switch block hash
 }
 
 // NewChainConfig creates a new chain configuration that transitions immediately
diff --git a/mobile/geth.go b/mobile/geth.go
index 969919ba8c5a7f6802d772349305ecaeaf87e962..85ac7fec5da49eb3b6e2020195ea6c7d8679c7a9 100644
--- a/mobile/geth.go
+++ b/mobile/geth.go
@@ -24,12 +24,13 @@ import (
 	"math/big"
 	"path/filepath"
 
-	"github.com/ethereum/go-ethereum/cmd/utils"
 	"github.com/ethereum/go-ethereum/common"
 	"github.com/ethereum/go-ethereum/core"
 	"github.com/ethereum/go-ethereum/core/state"
 	"github.com/ethereum/go-ethereum/eth"
 	"github.com/ethereum/go-ethereum/ethclient"
+	"github.com/ethereum/go-ethereum/les"
+	"github.com/ethereum/go-ethereum/light"
 	"github.com/ethereum/go-ethereum/node"
 	"github.com/ethereum/go-ethereum/p2p/nat"
 	"github.com/ethereum/go-ethereum/whisper/whisperv2"
@@ -107,9 +108,11 @@ func NewNode(datadir string, config *NodeConfig) (*Node, error) {
 	}
 	// Create the empty networking stack
 	nodeConf := &node.Config{
+		Name:           clientIdentifier,
 		DataDir:        datadir,
 		KeyStoreDir:    filepath.Join(datadir, "keystore"), // Mobile should never use internal keystores!
-		Name:           common.MakeName(clientIdentifier, utils.Version),
+		NoDiscovery:    true,
+		DiscoveryV5:    true,
 		BootstrapNodes: config.BootstrapNodes.nodes,
 		ListenAddr:     ":0",
 		NAT:            nat.Any(),
@@ -123,12 +126,14 @@ func NewNode(datadir string, config *NodeConfig) (*Node, error) {
 	if config.EthereumEnabled {
 		ethConf := &eth.Config{
 			ChainConfig: &core.ChainConfig{
-				HomesteadBlock: big.NewInt(config.EthereumChainConfig.HomesteadBlock),
-				DAOForkBlock:   big.NewInt(config.EthereumChainConfig.DAOForkBlock),
-				DAOForkSupport: config.EthereumChainConfig.DAOForkSupport,
+				HomesteadBlock:           big.NewInt(config.EthereumChainConfig.HomesteadBlock),
+				DAOForkBlock:             big.NewInt(config.EthereumChainConfig.DAOForkBlock),
+				DAOForkSupport:           config.EthereumChainConfig.DAOForkSupport,
+				HomesteadGasRepriceBlock: big.NewInt(config.EthereumChainConfig.HomesteadGasRepriceBlock),
+				HomesteadGasRepriceHash:  config.EthereumChainConfig.HomesteadGasRepriceHash.hash,
 			},
 			Genesis:                 config.EthereumGenesis,
-			FastSync:                true,
+			LightMode:               true,
 			DatabaseCache:           config.EthereumDatabaseCache,
 			NetworkId:               config.EthereumNetworkID,
 			GasPrice:                new(big.Int).Mul(big.NewInt(20), common.Shannon),
@@ -141,9 +146,10 @@ func NewNode(datadir string, config *NodeConfig) (*Node, error) {
 		}
 		if config.EthereumTestnetNonces {
 			state.StartingNonce = 1048576 // (2**20)
+			light.StartingNonce = 1048576 // (2**20)
 		}
 		if err := stack.Register(func(ctx *node.ServiceContext) (node.Service, error) {
-			return eth.New(ctx, ethConf)
+			return les.New(ctx, ethConf)
 		}); err != nil {
 			return nil, fmt.Errorf("ethereum init: %v", err)
 		}