diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go
index 9df891f7888ebe8fc2422c481030388786118819..1cb975a177d7fd8692034fc96597f6bcd51d0b3b 100644
--- a/cmd/utils/flags.go
+++ b/cmd/utils/flags.go
@@ -749,6 +749,7 @@ func RegisterEthService(ctx *cli.Context, stack *node.Node, extra []byte) {
 		GpobaseCorrectionFactor: ctx.GlobalInt(GpobaseCorrectionFactorFlag.Name),
 		SolcPath:                ctx.GlobalString(SolcPathFlag.Name),
 		AutoDAG:                 ctx.GlobalBool(AutoDAGFlag.Name) || ctx.GlobalBool(MiningEnabledFlag.Name),
+		PowFake:                 ctx.GlobalBool(FakePoWFlag.Name),
 	}
 
 	// Override any default configs in dev mode or the test net
diff --git a/eth/backend.go b/eth/backend.go
index f98c9b72402ecae9712f1446fc287331a65483e7..dec8c0c6ed66c01c662d2eb4c55fb648b1184c6d 100644
--- a/eth/backend.go
+++ b/eth/backend.go
@@ -45,6 +45,7 @@ import (
 	"github.com/ethereum/go-ethereum/node"
 	"github.com/ethereum/go-ethereum/p2p"
 	"github.com/ethereum/go-ethereum/params"
+	"github.com/ethereum/go-ethereum/pow"
 	"github.com/ethereum/go-ethereum/rpc"
 )
 
@@ -79,6 +80,7 @@ type Config struct {
 	NatSpec   bool
 	DocRoot   string
 	AutoDAG   bool
+	PowFake   bool
 	PowTest   bool
 	PowShared bool
 	ExtraData []byte
@@ -125,7 +127,7 @@ type Ethereum struct {
 	chainDb ethdb.Database // Block chain database
 
 	eventMux       *event.TypeMux
-	pow            *ethash.Ethash
+	pow            pow.PoW
 	accountManager *accounts.Manager
 
 	ApiBackend *EthApiBackend
@@ -139,7 +141,6 @@ type Ethereum struct {
 	solcPath     string
 
 	NatSpec       bool
-	PowTest       bool
 	netVersionId  int
 	netRPCService *ethapi.PublicNetAPI
 }
@@ -174,7 +175,6 @@ func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) {
 		stopDbUpgrade:  stopDbUpgrade,
 		netVersionId:   config.NetworkId,
 		NatSpec:        config.NatSpec,
-		PowTest:        config.PowTest,
 		etherbase:      config.Etherbase,
 		MinerThreads:   config.MinerThreads,
 		AutoDAG:        config.AutoDAG,
@@ -293,15 +293,17 @@ func SetupGenesisBlock(chainDb *ethdb.Database, config *Config) error {
 }
 
 // CreatePoW creates the required type of PoW instance for an Ethereum service
-func CreatePoW(config *Config) (*ethash.Ethash, error) {
+func CreatePoW(config *Config) (pow.PoW, error) {
 	switch {
+	case config.PowFake:
+		glog.V(logger.Info).Infof("ethash used in fake mode")
+		return pow.PoW(core.FakePow{}), nil
 	case config.PowTest:
 		glog.V(logger.Info).Infof("ethash used in test mode")
 		return ethash.NewForTesting()
 	case config.PowShared:
 		glog.V(logger.Info).Infof("ethash used in shared mode")
 		return ethash.NewShared(), nil
-
 	default:
 		return ethash.New(), nil
 	}
@@ -399,7 +401,7 @@ func (s *Ethereum) AccountManager() *accounts.Manager  { return s.accountManager
 func (s *Ethereum) BlockChain() *core.BlockChain       { return s.blockchain }
 func (s *Ethereum) TxPool() *core.TxPool               { return s.txPool }
 func (s *Ethereum) EventMux() *event.TypeMux           { return s.eventMux }
-func (s *Ethereum) Pow() *ethash.Ethash                { return s.pow }
+func (s *Ethereum) Pow() pow.PoW                       { return s.pow }
 func (s *Ethereum) ChainDb() ethdb.Database            { return s.chainDb }
 func (s *Ethereum) IsListening() bool                  { return true } // Always listening
 func (s *Ethereum) EthVersion() int                    { return int(s.protocolManager.SubProtocols[0].Version) }
diff --git a/les/backend.go b/les/backend.go
index d21d5a98cfe6fef223174fa1c224c8a351b7dac3..3deab61f726e7f3313a52a3ba8209a4d610bb59e 100644
--- a/les/backend.go
+++ b/les/backend.go
@@ -22,7 +22,6 @@ import (
 	"fmt"
 	"time"
 
-	"github.com/ethereum/ethash"
 	"github.com/ethereum/go-ethereum/accounts"
 	"github.com/ethereum/go-ethereum/common"
 	"github.com/ethereum/go-ethereum/common/compiler"
@@ -42,6 +41,7 @@ import (
 	"github.com/ethereum/go-ethereum/node"
 	"github.com/ethereum/go-ethereum/p2p"
 	"github.com/ethereum/go-ethereum/params"
+	"github.com/ethereum/go-ethereum/pow"
 	rpc "github.com/ethereum/go-ethereum/rpc"
 )
 
@@ -61,13 +61,12 @@ type LightEthereum struct {
 	ApiBackend *LesApiBackend
 
 	eventMux       *event.TypeMux
-	pow            *ethash.Ethash
+	pow            pow.PoW
 	accountManager *accounts.Manager
 	solcPath       string
 	solc           *compiler.Solidity
 
 	NatSpec       bool
-	PowTest       bool
 	netVersionId  int
 	netRPCService *ethapi.PublicNetAPI
 }
@@ -97,7 +96,6 @@ func New(ctx *node.ServiceContext, config *eth.Config) (*LightEthereum, error) {
 		shutdownChan:   make(chan bool),
 		netVersionId:   config.NetworkId,
 		NatSpec:        config.NatSpec,
-		PowTest:        config.PowTest,
 		solcPath:       config.SolcPath,
 	}