diff --git a/les/backend.go b/les/backend.go
index 658c73c6ee8fcfd69649cac29eafd8db7703791a..a4e7726717859b46a86c3657b2977eaa156b45c4 100644
--- a/les/backend.go
+++ b/les/backend.go
@@ -70,8 +70,7 @@ type LightEthereum struct {
 	networkId     uint64
 	netRPCService *ethapi.PublicNetAPI
 
-	quitSync chan struct{}
-	wg       sync.WaitGroup
+	wg sync.WaitGroup
 }
 
 func New(ctx *node.ServiceContext, config *eth.Config) (*LightEthereum, error) {
diff --git a/les/flowcontrol/control.go b/les/flowcontrol/control.go
index e40e693464d4f5b5d1f5d521b785f5819dc68e1d..d50eb809cc97ce04bb6f104c5f0482bcd205bda7 100644
--- a/les/flowcontrol/control.go
+++ b/les/flowcontrol/control.go
@@ -157,9 +157,7 @@ func (peer *ServerNode) QueueRequest(reqID, maxCost uint64) {
 
 	peer.bufEstimate -= maxCost
 	peer.sumCost += maxCost
-	if reqID >= 0 {
-		peer.pending[reqID] = peer.sumCost
-	}
+	peer.pending[reqID] = peer.sumCost
 }
 
 // GotReply adjusts estimated buffer value according to the value included in
diff --git a/les/handler.go b/les/handler.go
index f50abaaa3e807183c46711f6cdd26a040b97aecd..234b6e998b7bb81d81a827bfa153029de16e63a7 100644
--- a/les/handler.go
+++ b/les/handler.go
@@ -69,8 +69,6 @@ func errResp(code errCode, format string, v ...interface{}) error {
 	return fmt.Errorf("%v - %v", code, fmt.Sprintf(format, v...))
 }
 
-type hashFetcherFn func(common.Hash) error
-
 type BlockChain interface {
 	HasHeader(hash common.Hash) bool
 	GetHeader(hash common.Hash, number uint64) *types.Header
@@ -119,10 +117,6 @@ type ProtocolManager struct {
 	quitSync    chan struct{}
 	noMorePeers chan struct{}
 
-	syncMu   sync.Mutex
-	syncing  bool
-	syncDone chan struct{}
-
 	// wait group is used for graceful shutdowns during downloading
 	// and processing
 	wg *sync.WaitGroup
diff --git a/les/handler_test.go b/les/handler_test.go
index 5df1d3463aca25f9107a0cf1ea065c75834c280f..b1f1aa0951ba57c7fd28ce02cf615146da0b9dcd 100644
--- a/les/handler_test.go
+++ b/les/handler_test.go
@@ -305,7 +305,7 @@ func testGetReceipt(t *testing.T, protocol int) {
 }
 
 // Tests that trie merkle proofs can be retrieved
-func TestGetProofsLes1(t *testing.T) { testGetReceipt(t, 1) }
+func TestGetProofsLes1(t *testing.T) { testGetProofs(t, 1) }
 
 func testGetProofs(t *testing.T, protocol int) {
 	// Assemble the test environment
@@ -327,7 +327,7 @@ func testGetProofs(t *testing.T, protocol int) {
 		for _, acc := range accounts {
 			req := ProofReq{
 				BHash: header.Hash(),
-				Key:   acc[:],
+				Key:   crypto.Keccak256(acc[:]),
 			}
 			proofreqs = append(proofreqs, req)
 
diff --git a/les/helper_test.go b/les/helper_test.go
index 52fddd117a4d53ad068fd008b1690cc609b164f8..7dccfc458237c970aacc8c7fb0d059c48f6d5c2a 100644
--- a/les/helper_test.go
+++ b/les/helper_test.go
@@ -20,7 +20,6 @@
 package les
 
 import (
-	"crypto/ecdsa"
 	"crypto/rand"
 	"math/big"
 	"sync"
@@ -140,7 +139,7 @@ func newTestProtocolManager(lightSync bool, blocks int, generator func(int, *cor
 			Alloc:  core.GenesisAlloc{testBankAddress: {Balance: testBankFunds}},
 		}
 		genesis = gspec.MustCommit(db)
-		chain       BlockChain
+		chain   BlockChain
 	)
 	if peers == nil {
 		peers = newPeerSet()
@@ -189,45 +188,6 @@ func newTestProtocolManagerMust(t *testing.T, lightSync bool, blocks int, genera
 	return pm
 }
 
-// testTxPool is a fake, helper transaction pool for testing purposes
-type testTxPool struct {
-	pool  []*types.Transaction        // Collection of all transactions
-	added chan<- []*types.Transaction // Notification channel for new transactions
-
-	lock sync.RWMutex // Protects the transaction pool
-}
-
-// AddTransactions appends a batch of transactions to the pool, and notifies any
-// listeners if the addition channel is non nil
-func (p *testTxPool) AddBatch(txs []*types.Transaction) {
-	p.lock.Lock()
-	defer p.lock.Unlock()
-
-	p.pool = append(p.pool, txs...)
-	if p.added != nil {
-		p.added <- txs
-	}
-}
-
-// GetTransactions returns all the transactions known to the pool
-func (p *testTxPool) GetTransactions() types.Transactions {
-	p.lock.RLock()
-	defer p.lock.RUnlock()
-
-	txs := make([]*types.Transaction, len(p.pool))
-	copy(txs, p.pool)
-
-	return txs
-}
-
-// newTestTransaction create a new dummy transaction.
-func newTestTransaction(from *ecdsa.PrivateKey, nonce uint64, datasize int) *types.Transaction {
-	tx := types.NewTransaction(nonce, common.Address{}, big.NewInt(0), big.NewInt(100000), big.NewInt(0), make([]byte, datasize))
-	tx, _ = types.SignTx(tx, types.HomesteadSigner{}, from)
-
-	return tx
-}
-
 // testPeer is a simulated peer to allow testing direct network calls.
 type testPeer struct {
 	net p2p.MsgReadWriter // Network layer reader/writer to simulate remote messaging
diff --git a/les/peer.go b/les/peer.go
index 791d0da24f354167023942b2c91864e3dd7aafba..3ba2df3fe8ca2d3238a9bc3f07b58785019cc54b 100644
--- a/les/peer.go
+++ b/les/peer.go
@@ -38,10 +38,7 @@ var (
 	errNotRegistered     = errors.New("peer is not registered")
 )
 
-const (
-	maxHeadInfoLen    = 20
-	maxResponseErrors = 50 // number of invalid responses tolerated (makes the protocol less brittle but still avoids spam)
-)
+const maxResponseErrors = 50 // number of invalid responses tolerated (makes the protocol less brittle but still avoids spam)
 
 type peer struct {
 	*p2p.Peer
diff --git a/les/protocol.go b/les/protocol.go
index 46da2b8c8b595fd61f73bfd1bb7594ae4625815b..33d930ee0cca59d6db68417eb1bab99ac4fe85ec 100644
--- a/les/protocol.go
+++ b/les/protocol.go
@@ -23,7 +23,6 @@ import (
 	"math/big"
 
 	"github.com/ethereum/go-ethereum/common"
-	"github.com/ethereum/go-ethereum/core/types"
 	"github.com/ethereum/go-ethereum/rlp"
 )
 
@@ -105,12 +104,6 @@ var errorToString = map[int]string{
 	ErrHandshakeMissingKey:     "Key missing from handshake message",
 }
 
-type chainManager interface {
-	GetBlockHashesFromHash(hash common.Hash, amount uint64) (hashes []common.Hash)
-	GetBlock(hash common.Hash) (block *types.Block)
-	Status() (td *big.Int, currentBlock common.Hash, genesisBlock common.Hash)
-}
-
 // announceData is the network packet for the block announcements.
 type announceData struct {
 	Hash       common.Hash // Hash of one particular block being announced
@@ -118,11 +111,6 @@ type announceData struct {
 	Td         *big.Int    // Total difficulty of one particular block being announced
 	ReorgDepth uint64
 	Update     keyValueList
-
-	haveHeaders uint64 // we have the headers of the remote peer's chain up to this number
-	headKnown   bool
-	requested   bool
-	next        *announceData
 }
 
 type blockInfo struct {
@@ -131,12 +119,6 @@ type blockInfo struct {
 	Td     *big.Int    // Total difficulty of one particular block being announced
 }
 
-// getBlockHashesData is the network packet for the hash based hash retrieval.
-type getBlockHashesData struct {
-	Hash   common.Hash
-	Amount uint64
-}
-
 // getBlockHeadersData represents a block header query.
 type getBlockHeadersData struct {
 	Origin  hashOrNumber // Block from which to retrieve headers
@@ -181,15 +163,6 @@ func (hn *hashOrNumber) DecodeRLP(s *rlp.Stream) error {
 	return err
 }
 
-// newBlockData is the network packet for the block propagation message.
-type newBlockData struct {
-	Block *types.Block
-	TD    *big.Int
-}
-
-// blockBodiesData is the network packet for block content distribution.
-type blockBodiesData []*types.Body
-
 // CodeData is the network response packet for a node data retrieval.
 type CodeData []struct {
 	Value []byte
diff --git a/les/server.go b/les/server.go
index 2ff715ea8581660ad658b74d6b10067dbc629ff2..39ef0efffe5830a7e1a35928a9e7c4d5390fd828 100644
--- a/les/server.go
+++ b/les/server.go
@@ -44,7 +44,6 @@ type LesServer struct {
 	defParams       *flowcontrol.ServerParams
 	lesTopic        discv5.Topic
 	quitSync        chan struct{}
-	stopped         bool
 }
 
 func NewLesServer(eth *eth.Ethereum, config *eth.Config) (*LesServer, error) {
@@ -118,16 +117,6 @@ func (list RequestCostList) decode() requestCostTable {
 	return table
 }
 
-func (table requestCostTable) encode() RequestCostList {
-	list := make(RequestCostList, len(table))
-	for idx, code := range reqList {
-		list[idx].MsgCode = code
-		list[idx].BaseCost = table[code].baseCost
-		list[idx].ReqCost = table[code].reqCost
-	}
-	return list
-}
-
 type linReg struct {
 	sumX, sumY, sumXX, sumXY float64
 	cnt                      uint64