diff --git a/accounts/abi/numbers_test.go b/accounts/abi/numbers_test.go
index 6590e41a6febe0c3fb8de5a808848a3970f42076..d66a43258bb0d2db361dd74138bbf077fc679158 100644
--- a/accounts/abi/numbers_test.go
+++ b/accounts/abi/numbers_test.go
@@ -30,17 +30,17 @@ func TestNumberTypes(t *testing.T) {
 
 	unsigned := U256(big.NewInt(1))
 	if !bytes.Equal(unsigned, ubytes) {
-		t.Error("expected %x got %x", ubytes, unsigned)
+		t.Errorf("expected %x got %x", ubytes, unsigned)
 	}
 
 	signed := S256(big.NewInt(1))
 	if !bytes.Equal(signed, ubytes) {
-		t.Error("expected %x got %x", ubytes, unsigned)
+		t.Errorf("expected %x got %x", ubytes, unsigned)
 	}
 
 	signed = S256(big.NewInt(-1))
 	if !bytes.Equal(signed, sbytesmin) {
-		t.Error("expected %x got %x", ubytes, unsigned)
+		t.Errorf("expected %x got %x", ubytes, unsigned)
 	}
 }
 
@@ -75,10 +75,10 @@ func TestPackNumber(t *testing.T) {
 
 func TestSigned(t *testing.T) {
 	if isSigned(reflect.ValueOf(uint(10))) {
-		t.Error()
+		t.Error("signed")
 	}
 
 	if !isSigned(reflect.ValueOf(int(10))) {
-		t.Error()
+		t.Error("not signed")
 	}
 }
diff --git a/cmd/bootnode/main.go b/cmd/bootnode/main.go
index 0cad5321b9b69add91c2fb10bcfe26c24a0fcfc8..7f74e9c70672da2d7dc000584c82544b130b8af6 100644
--- a/cmd/bootnode/main.go
+++ b/cmd/bootnode/main.go
@@ -79,7 +79,7 @@ func main() {
 func writeKey(target string) {
 	key, err := crypto.GenerateKey()
 	if err != nil {
-		log.Fatal("could not generate key: %v", err)
+		log.Fatalf("could not generate key: %v", err)
 	}
 	b := crypto.FromECDSA(key)
 	if target == "-" {
diff --git a/cmd/ethtest/main.go b/cmd/ethtest/main.go
index 3916e297f98c7916b6508cddb31a3962ba5d8e57..d8f9696360de35a5c1b69fb3b0bae9ac7ee9bbd5 100644
--- a/cmd/ethtest/main.go
+++ b/cmd/ethtest/main.go
@@ -76,7 +76,8 @@ func runTestWithReader(test string, r io.Reader) error {
 	case "bk", "block", "blocktest", "blockchaintest", "blocktests", "blockchaintests":
 		err = tests.RunBlockTestWithReader(params.MainNetHomesteadBlock, r, skipTests)
 	case "st", "state", "statetest", "statetests":
-		err = tests.RunStateTestWithReader(tests.RuleSet{params.MainNetHomesteadBlock}, r, skipTests)
+		rs := tests.RuleSet{HomesteadBlock: params.MainNetHomesteadBlock}
+		err = tests.RunStateTestWithReader(rs, r, skipTests)
 	case "tx", "transactiontest", "transactiontests":
 		err = tests.RunTransactionTestsWithReader(r, skipTests)
 	case "vm", "vmtest", "vmtests":
diff --git a/cmd/geth/js_test.go b/cmd/geth/js_test.go
index baf5723598e8b0a554a1490f4811a398d6c3f8b1..ddfe0d4000c2bfe78201fa58d9329c6ded47a8a0 100644
--- a/cmd/geth/js_test.go
+++ b/cmd/geth/js_test.go
@@ -89,7 +89,10 @@ func testREPL(t *testing.T, config func(*eth.Config)) (string, *testjethre, *nod
 	// Initialize and register the Ethereum protocol
 	accman := accounts.NewPlaintextManager(filepath.Join(tmp, "keystore"))
 	db, _ := ethdb.NewMemDatabase()
-	core.WriteGenesisBlockForTesting(db, core.GenesisAccount{common.HexToAddress(testAddress), common.String2Big(testBalance)})
+	core.WriteGenesisBlockForTesting(db, core.GenesisAccount{
+		Address: common.HexToAddress(testAddress),
+		Balance: common.String2Big(testBalance),
+	})
 	ethConf := &eth.Config{
 		ChainConfig:      &core.ChainConfig{HomesteadBlock: new(big.Int)},
 		TestGenesisState: db,
diff --git a/cmd/utils/jeth.go b/cmd/utils/jeth.go
index 0017790f3b280d37e2080b56e0b7424cc512ff89..9410180b01be6b6074b614141b99b6d0ce373daa 100644
--- a/cmd/utils/jeth.go
+++ b/cmd/utils/jeth.go
@@ -131,13 +131,11 @@ func (self *Jeth) NewAccount(call otto.FunctionCall) (response otto.Value) {
 		return otto.FalseValue()
 	}
 
-	if ret, err := call.Otto.Call("jeth.newAccount", nil, passwd); err == nil {
+	ret, err := call.Otto.Call("jeth.newAccount", nil, passwd)
+	if err == nil {
 		return ret
-	} else {
-		fmt.Printf("%v\n", err)
-		return otto.FalseValue()
 	}
-
+	fmt.Println(err)
 	return otto.FalseValue()
 }
 
@@ -233,7 +231,6 @@ func (self *Jeth) Send(call otto.FunctionCall) (response otto.Value) {
 func throwJSExeception(msg interface{}) otto.Value {
 	p, _ := otto.ToValue(msg)
 	panic(p)
-	return p
 }
 
 // Sleep will halt the console for arg[0] seconds.
diff --git a/common/compiler/solidity_test.go b/common/compiler/solidity_test.go
index 258a78f52abbb871fb1df8558bc4e117c4dcb37b..7109b1ec4b3ac8d5c4f31287b1890b28cb4934e0 100644
--- a/common/compiler/solidity_test.go
+++ b/common/compiler/solidity_test.go
@@ -57,7 +57,7 @@ func TestCompiler(t *testing.T) {
 	}
 
 	if len(contracts) != 1 {
-		t.Errorf("one contract expected, got\n%s", len(contracts))
+		t.Errorf("one contract expected, got %d", len(contracts))
 	}
 
 	if contracts["test"].Code != code {
diff --git a/common/math/dist_test.go b/common/math/dist_test.go
index 1eacfbcaf2830a720970c68da6cd86c856e884f4..826faea8b3e12dbb3e902379892bb10c24894a79 100644
--- a/common/math/dist_test.go
+++ b/common/math/dist_test.go
@@ -35,7 +35,7 @@ func TestSum(t *testing.T) {
 	summer := summer{numbers: []*big.Int{big.NewInt(1), big.NewInt(2), big.NewInt(3)}}
 	sum := Sum(summer)
 	if sum.Cmp(big.NewInt(6)) != 0 {
-		t.Errorf("not 6", sum)
+		t.Errorf("got sum = %d, want 6", sum)
 	}
 }
 
diff --git a/common/path.go b/common/path.go
index 75a8c1a3e0c1303086a1e6ad64e29a19997c49ab..cbcd13c4fe522dfa66b02bd0af1c51332f2e3013 100644
--- a/common/path.go
+++ b/common/path.go
@@ -34,7 +34,7 @@ func MakeName(name, version string) string {
 
 func ExpandHomePath(p string) (path string) {
 	path = p
-	sep := fmt.Sprintf("%s", os.PathSeparator)
+	sep := string(os.PathSeparator)
 
 	// Check in case of paths like "/something/~/something/"
 	if len(p) > 1 && p[:1+len(sep)] == "~"+sep {
diff --git a/core/asm.go b/core/asm.go
index a86a2c44c37d6105ac028f4b23a1782b4b8e0874..b2e47b5e91a9f8a5c50f86a10f608d129e5b0330 100644
--- a/core/asm.go
+++ b/core/asm.go
@@ -61,6 +61,4 @@ func Disassemble(script []byte) (asm []string) {
 
 		pc.Add(pc, common.Big1)
 	}
-
-	return asm
 }
diff --git a/core/blockchain.go b/core/blockchain.go
index e740eb861b3a4f51756ac9356c390f923ed38d11..ecf8297cbfda4ab9866c782abf3600803e0a59d1 100644
--- a/core/blockchain.go
+++ b/core/blockchain.go
@@ -993,7 +993,7 @@ func (self *BlockChain) reorg(oldBlock, newBlock *types.Block) error {
 	// first reduce whoever is higher bound
 	if oldBlock.NumberU64() > newBlock.NumberU64() {
 		// reduce old chain
-		for oldBlock = oldBlock; oldBlock != nil && oldBlock.NumberU64() != newBlock.NumberU64(); oldBlock = self.GetBlock(oldBlock.ParentHash()) {
+		for ; oldBlock != nil && oldBlock.NumberU64() != newBlock.NumberU64(); oldBlock = self.GetBlock(oldBlock.ParentHash()) {
 			oldChain = append(oldChain, oldBlock)
 			deletedTxs = append(deletedTxs, oldBlock.Transactions()...)
 
@@ -1001,7 +1001,7 @@ func (self *BlockChain) reorg(oldBlock, newBlock *types.Block) error {
 		}
 	} else {
 		// reduce new chain and append new chain blocks for inserting later on
-		for newBlock = newBlock; newBlock != nil && newBlock.NumberU64() != oldBlock.NumberU64(); newBlock = self.GetBlock(newBlock.ParentHash()) {
+		for ; newBlock != nil && newBlock.NumberU64() != oldBlock.NumberU64(); newBlock = self.GetBlock(newBlock.ParentHash()) {
 			newChain = append(newChain, newBlock)
 		}
 	}
diff --git a/core/state/sync_test.go b/core/state/sync_test.go
index a2a1edbdb1e7aa78cd1ba6880f54323b48dcd0e4..715645c6c93f85f0a3d438971cd7da50713e9ace 100644
--- a/core/state/sync_test.go
+++ b/core/state/sync_test.go
@@ -145,7 +145,7 @@ func testIterativeStateSync(t *testing.T, batch int) {
 			if err != nil {
 				t.Fatalf("failed to retrieve node data for %x: %v", hash, err)
 			}
-			results[i] = trie.SyncResult{hash, data}
+			results[i] = trie.SyncResult{Hash: hash, Data: data}
 		}
 		if index, err := sched.Process(results); err != nil {
 			t.Fatalf("failed to process result #%d: %v", index, err)
@@ -175,7 +175,7 @@ func TestIterativeDelayedStateSync(t *testing.T) {
 			if err != nil {
 				t.Fatalf("failed to retrieve node data for %x: %v", hash, err)
 			}
-			results[i] = trie.SyncResult{hash, data}
+			results[i] = trie.SyncResult{Hash: hash, Data: data}
 		}
 		if index, err := sched.Process(results); err != nil {
 			t.Fatalf("failed to process result #%d: %v", index, err)
@@ -212,7 +212,7 @@ func testIterativeRandomStateSync(t *testing.T, batch int) {
 			if err != nil {
 				t.Fatalf("failed to retrieve node data for %x: %v", hash, err)
 			}
-			results = append(results, trie.SyncResult{hash, data})
+			results = append(results, trie.SyncResult{Hash: hash, Data: data})
 		}
 		// Feed the retrieved results back and queue new tasks
 		if index, err := sched.Process(results); err != nil {
@@ -251,7 +251,7 @@ func TestIterativeRandomDelayedStateSync(t *testing.T) {
 			if err != nil {
 				t.Fatalf("failed to retrieve node data for %x: %v", hash, err)
 			}
-			results = append(results, trie.SyncResult{hash, data})
+			results = append(results, trie.SyncResult{Hash: hash, Data: data})
 
 			if len(results) >= cap(results) {
 				break
@@ -289,7 +289,7 @@ func TestIncompleteStateSync(t *testing.T) {
 			if err != nil {
 				t.Fatalf("failed to retrieve node data for %x: %v", hash, err)
 			}
-			results[i] = trie.SyncResult{hash, data}
+			results[i] = trie.SyncResult{Hash: hash, Data: data}
 		}
 		// Process each of the state nodes
 		if index, err := sched.Process(results); err != nil {
diff --git a/core/vm/asm.go b/core/vm/asm.go
index b248838a789ee3f0ff0c374be9a301ed5510c0b5..d7dbde5e823f15916a537f87a4b604fad0b08967 100644
--- a/core/vm/asm.go
+++ b/core/vm/asm.go
@@ -58,6 +58,4 @@ func Disassemble(script []byte) (asm []string) {
 
 		pc.Add(pc, common.Big1)
 	}
-
-	return
 }
diff --git a/core/vm/jit_util_test.go b/core/vm/jit_util_test.go
index 1f4cb2b165957c52eef76dbe017baa47d0268f1f..2123efe59e4290cab6712e7ac90c053847675ba4 100644
--- a/core/vm/jit_util_test.go
+++ b/core/vm/jit_util_test.go
@@ -77,7 +77,7 @@ func TestParser(t *testing.T) {
 				t.Fatal("empty output")
 			}
 			if output[0] != test.output {
-				t.Error("%v failed: expected %v but got %v", test.base+OpCode(i), output[0])
+				t.Errorf("%v failed: expected %v but got %v", test.base+OpCode(i), test.output, output[0])
 			}
 		}
 	}
diff --git a/crypto/crypto.go b/crypto/crypto.go
index b24d0801097707cd35f77a88c3f18da26933ec26..85f09709565a8d52bfc6f652986cbc9058811f60 100644
--- a/crypto/crypto.go
+++ b/crypto/crypto.go
@@ -107,7 +107,7 @@ func ToECDSAPub(pub []byte) *ecdsa.PublicKey {
 		return nil
 	}
 	x, y := elliptic.Unmarshal(secp256k1.S256(), pub)
-	return &ecdsa.PublicKey{secp256k1.S256(), x, y}
+	return &ecdsa.PublicKey{Curve: secp256k1.S256(), X: x, Y: y}
 }
 
 func FromECDSAPub(pub *ecdsa.PublicKey) []byte {
@@ -189,7 +189,7 @@ func SigToPub(hash, sig []byte) (*ecdsa.PublicKey, error) {
 	}
 
 	x, y := elliptic.Unmarshal(secp256k1.S256(), s)
-	return &ecdsa.PublicKey{secp256k1.S256(), x, y}, nil
+	return &ecdsa.PublicKey{Curve: secp256k1.S256(), X: x, Y: y}, nil
 }
 
 func Sign(hash []byte, prv *ecdsa.PrivateKey) (sig []byte, err error) {
diff --git a/crypto/ecies/ecies.go b/crypto/ecies/ecies.go
index ee428561736e6e32d7c8eb02784203b4d6ff9007..86a70261d28a50f9b90fd6250b18223ff3ab6578 100644
--- a/crypto/ecies/ecies.go
+++ b/crypto/ecies/ecies.go
@@ -60,7 +60,7 @@ type PublicKey struct {
 
 // Export an ECIES public key as an ECDSA public key.
 func (pub *PublicKey) ExportECDSA() *ecdsa.PublicKey {
-	return &ecdsa.PublicKey{pub.Curve, pub.X, pub.Y}
+	return &ecdsa.PublicKey{Curve: pub.Curve, X: pub.X, Y: pub.Y}
 }
 
 // Import an ECDSA public key as an ECIES public key.
@@ -83,7 +83,7 @@ type PrivateKey struct {
 func (prv *PrivateKey) ExportECDSA() *ecdsa.PrivateKey {
 	pub := &prv.PublicKey
 	pubECDSA := pub.ExportECDSA()
-	return &ecdsa.PrivateKey{*pubECDSA, prv.D}
+	return &ecdsa.PrivateKey{PublicKey: *pubECDSA, D: prv.D}
 }
 
 // Import an ECDSA private key as an ECIES private key.
diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go
index f50a71cf1fe809709f37f785277742b98cfad6e0..801181712f3279c591d6511a0cafb67f215cc2b6 100644
--- a/eth/downloader/downloader.go
+++ b/eth/downloader/downloader.go
@@ -892,8 +892,7 @@ func (d *Downloader) fetchBlocks61(from uint64) error {
 					// case, the internal state of the downloader and the queue is very wrong so
 					// better hard crash and note the error instead of silently accumulating into
 					// a much bigger issue.
-					panic(fmt.Sprintf("%v: fetch assignment failed, hard panic", peer))
-					d.queue.CancelBlocks(request) // noop for now
+					panic(fmt.Sprintf("%v: fetch assignment failed", peer))
 				}
 			}
 			// Make sure that we have peers available for fetching. If all peers have been tried
@@ -1525,8 +1524,7 @@ func (d *Downloader) fetchParts(errCancel error, deliveryCh chan dataPack, deliv
 					// case, the internal state of the downloader and the queue is very wrong so
 					// better hard crash and note the error instead of silently accumulating into
 					// a much bigger issue.
-					panic(fmt.Sprintf("%v: %s fetch assignment failed, hard panic", peer, strings.ToLower(kind)))
-					cancel(request) // noop for now
+					panic(fmt.Sprintf("%v: %s fetch assignment failed", peer, strings.ToLower(kind)))
 				}
 				running = true
 			}
diff --git a/eth/downloader/queue.go b/eth/downloader/queue.go
index f86bae1442c7b3067a05872bf54b04f670c03032..d8d1bddceefff8a91ce2024bb2daafa67389d47e 100644
--- a/eth/downloader/queue.go
+++ b/eth/downloader/queue.go
@@ -983,7 +983,7 @@ func (q *queue) DeliverNodeData(id string, data [][]byte, callback func(error, i
 			continue
 		}
 		// Inject the next state trie item into the processing queue
-		process = append(process, trie.SyncResult{hash, blob})
+		process = append(process, trie.SyncResult{Hash: hash, Data: blob})
 		accepted++
 
 		delete(request.Hashes, hash)
diff --git a/eth/filters/api.go b/eth/filters/api.go
index 54336aaf9bf27163cc4e79ffeb48189cc4352534..9e95ebd83f26ab973c68ac2bc4e1bed837c10a12 100644
--- a/eth/filters/api.go
+++ b/eth/filters/api.go
@@ -331,7 +331,7 @@ func (args *NewFilterArgs) UnmarshalJSON(data []byte) error {
 					if decAddr, err := hex.DecodeString(strAddr); err == nil {
 						addresses = append(addresses, common.BytesToAddress(decAddr))
 					} else {
-						fmt.Errorf("invalid address given")
+						return fmt.Errorf("invalid address given")
 					}
 				} else {
 					return fmt.Errorf("invalid address on index %d", i)
@@ -344,10 +344,10 @@ func (args *NewFilterArgs) UnmarshalJSON(data []byte) error {
 			if decAddr, err := hex.DecodeString(singleAddr); err == nil {
 				addresses = append(addresses, common.BytesToAddress(decAddr))
 			} else {
-				fmt.Errorf("invalid address given")
+				return fmt.Errorf("invalid address given")
 			}
 		} else {
-			errors.New("invalid address(es) given")
+			return errors.New("invalid address(es) given")
 		}
 		args.Addresses = addresses
 	}
@@ -394,7 +394,7 @@ func (args *NewFilterArgs) UnmarshalJSON(data []byte) error {
 								parsedTopics[i] = []common.Hash{t}
 							}
 						} else {
-							fmt.Errorf("topic[%d][%d] not a string", i, j)
+							return fmt.Errorf("topic[%d][%d] not a string", i, j)
 						}
 					}
 				} else {
diff --git a/eth/filters/filter_system_test.go b/eth/filters/filter_system_test.go
index 7757fb84e530d19e3c199c8796645e2bad9b6eb8..72824cb0880a25c61fe9f549276688f38275be2e 100644
--- a/eth/filters/filter_system_test.go
+++ b/eth/filters/filter_system_test.go
@@ -76,8 +76,8 @@ func TestCallbacks(t *testing.T) {
 	mux.Post(core.ChainEvent{})
 	mux.Post(core.TxPreEvent{})
 	mux.Post(vm.Logs{&vm.Log{}})
-	mux.Post(core.RemovedLogsEvent{vm.Logs{&vm.Log{}}})
-	mux.Post(core.PendingLogsEvent{vm.Logs{&vm.Log{}}})
+	mux.Post(core.RemovedLogsEvent{Logs: vm.Logs{&vm.Log{}}})
+	mux.Post(core.PendingLogsEvent{Logs: vm.Logs{&vm.Log{}}})
 
 	const dura = 5 * time.Second
 	failTimer := time.NewTimer(dura)
diff --git a/eth/filters/filter_test.go b/eth/filters/filter_test.go
index 5954ea4c1f970fcb1e30199e22f2be5e4631c55e..b0f88ffeb5ef2dea6b86258fc4858ec80b4c4e8a 100644
--- a/eth/filters/filter_test.go
+++ b/eth/filters/filter_test.go
@@ -56,7 +56,7 @@ func BenchmarkMipmaps(b *testing.B) {
 	)
 	defer db.Close()
 
-	genesis := core.WriteGenesisBlockForTesting(db, core.GenesisAccount{addr1, big.NewInt(1000000)})
+	genesis := core.WriteGenesisBlockForTesting(db, core.GenesisAccount{Address: addr1, Balance: big.NewInt(1000000)})
 	chain, receipts := core.GenerateChain(genesis, db, 100010, func(i int, gen *core.BlockGen) {
 		var receipts types.Receipts
 		switch i {
@@ -132,7 +132,7 @@ func TestFilters(t *testing.T) {
 	)
 	defer db.Close()
 
-	genesis := core.WriteGenesisBlockForTesting(db, core.GenesisAccount{addr, big.NewInt(1000000)})
+	genesis := core.WriteGenesisBlockForTesting(db, core.GenesisAccount{Address: addr, Balance: big.NewInt(1000000)})
 	chain, receipts := core.GenerateChain(genesis, db, 1000, func(i int, gen *core.BlockGen) {
 		var receipts types.Receipts
 		switch i {
diff --git a/eth/handler.go b/eth/handler.go
index 135de374961cac8eb1065302a8e7a51d79c4117a..d6b474a91828ce0e7bb92590aac74743f2c5bd00 100644
--- a/eth/handler.go
+++ b/eth/handler.go
@@ -245,7 +245,6 @@ func (pm *ProtocolManager) handle(p *peer) error {
 			return err
 		}
 	}
-	return nil
 }
 
 // handleMsg is invoked whenever an inbound message is received from a remote
diff --git a/eth/handler_test.go b/eth/handler_test.go
index 76748b6e350949d0a7904aefcb4d0bf0f2d22b1f..9e593f04055f0e0962ea10260d9016940a5f6e2c 100644
--- a/eth/handler_test.go
+++ b/eth/handler_test.go
@@ -17,7 +17,6 @@
 package eth
 
 import (
-	"fmt"
 	"math/big"
 	"math/rand"
 	"testing"
@@ -448,12 +447,12 @@ func testGetNodeData(t *testing.T, protocol int) {
 		switch i {
 		case 0:
 			// In block 1, the test bank sends account #1 some ether.
-			tx, _ := types.NewTransaction(block.TxNonce(testBankAddress), acc1Addr, big.NewInt(10000), params.TxGas, nil, nil).SignECDSA(testBankKey)
+			tx, _ := types.NewTransaction(block.TxNonce(testBank.Address), acc1Addr, big.NewInt(10000), params.TxGas, nil, nil).SignECDSA(testBankKey)
 			block.AddTx(tx)
 		case 1:
 			// In block 2, the test bank sends some more ether to account #1.
 			// acc1Addr passes it on to account #2.
-			tx1, _ := types.NewTransaction(block.TxNonce(testBankAddress), acc1Addr, big.NewInt(1000), params.TxGas, nil, nil).SignECDSA(testBankKey)
+			tx1, _ := types.NewTransaction(block.TxNonce(testBank.Address), acc1Addr, big.NewInt(1000), params.TxGas, nil, nil).SignECDSA(testBankKey)
 			tx2, _ := types.NewTransaction(block.TxNonce(acc1Addr), acc2Addr, big.NewInt(1000), params.TxGas, nil, nil).SignECDSA(acc1Key)
 			block.AddTx(tx1)
 			block.AddTx(tx2)
@@ -498,14 +497,14 @@ func testGetNodeData(t *testing.T, protocol int) {
 	// Verify that all hashes correspond to the requested data, and reconstruct a state tree
 	for i, want := range hashes {
 		if hash := crypto.Keccak256Hash(data[i]); hash != want {
-			fmt.Errorf("data hash mismatch: have %x, want %x", hash, want)
+			t.Errorf("data hash mismatch: have %x, want %x", hash, want)
 		}
 	}
 	statedb, _ := ethdb.NewMemDatabase()
 	for i := 0; i < len(data); i++ {
 		statedb.Put(hashes[i].Bytes(), data[i])
 	}
-	accounts := []common.Address{testBankAddress, acc1Addr, acc2Addr}
+	accounts := []common.Address{testBank.Address, acc1Addr, acc2Addr}
 	for i := uint64(0); i <= pm.blockchain.CurrentBlock().NumberU64(); i++ {
 		trie, _ := state.New(pm.blockchain.GetBlockByNumber(i).Root(), statedb)
 
@@ -539,12 +538,12 @@ func testGetReceipt(t *testing.T, protocol int) {
 		switch i {
 		case 0:
 			// In block 1, the test bank sends account #1 some ether.
-			tx, _ := types.NewTransaction(block.TxNonce(testBankAddress), acc1Addr, big.NewInt(10000), params.TxGas, nil, nil).SignECDSA(testBankKey)
+			tx, _ := types.NewTransaction(block.TxNonce(testBank.Address), acc1Addr, big.NewInt(10000), params.TxGas, nil, nil).SignECDSA(testBankKey)
 			block.AddTx(tx)
 		case 1:
 			// In block 2, the test bank sends some more ether to account #1.
 			// acc1Addr passes it on to account #2.
-			tx1, _ := types.NewTransaction(block.TxNonce(testBankAddress), acc1Addr, big.NewInt(1000), params.TxGas, nil, nil).SignECDSA(testBankKey)
+			tx1, _ := types.NewTransaction(block.TxNonce(testBank.Address), acc1Addr, big.NewInt(1000), params.TxGas, nil, nil).SignECDSA(testBankKey)
 			tx2, _ := types.NewTransaction(block.TxNonce(acc1Addr), acc2Addr, big.NewInt(1000), params.TxGas, nil, nil).SignECDSA(acc1Key)
 			block.AddTx(tx1)
 			block.AddTx(tx2)
diff --git a/eth/helper_test.go b/eth/helper_test.go
index 575211a55c7917dcd56375bbb8423232aa776ee0..5703d44cc218d2a0302a07b55410ef274629666a 100644
--- a/eth/helper_test.go
+++ b/eth/helper_test.go
@@ -37,9 +37,11 @@ import (
 )
 
 var (
-	testBankKey, _  = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291")
-	testBankAddress = crypto.PubkeyToAddress(testBankKey.PublicKey)
-	testBankFunds   = big.NewInt(1000000)
+	testBankKey, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291")
+	testBank       = core.GenesisAccount{
+		Address: crypto.PubkeyToAddress(testBankKey.PublicKey),
+		Balance: big.NewInt(1000000),
+	}
 )
 
 // newTestProtocolManager creates a new protocol manager for testing purposes,
@@ -50,7 +52,7 @@ func newTestProtocolManager(fastSync bool, blocks int, generator func(int, *core
 		evmux         = new(event.TypeMux)
 		pow           = new(core.FakePow)
 		db, _         = ethdb.NewMemDatabase()
-		genesis       = core.WriteGenesisBlockForTesting(db, core.GenesisAccount{testBankAddress, testBankFunds})
+		genesis       = core.WriteGenesisBlockForTesting(db, testBank)
 		chainConfig   = &core.ChainConfig{HomesteadBlock: big.NewInt(0)} // homestead set to 0 because of chain maker
 		blockchain, _ = core.NewBlockChain(db, chainConfig, pow, evmux)
 	)
diff --git a/eth/protocol_test.go b/eth/protocol_test.go
index cac3657e7a8c2a9491070fd2d35451280b19cb59..0a82e2e7955d20df5ab1d1664681c38a31940d1b 100644
--- a/eth/protocol_test.go
+++ b/eth/protocol_test.go
@@ -78,7 +78,7 @@ func testStatusMsgErrors(t *testing.T, protocol int) {
 		select {
 		case err := <-errc:
 			if err == nil {
-				t.Errorf("test %d: protocol returned nil error, want %q", test.wantError)
+				t.Errorf("test %d: protocol returned nil error, want %q", i, test.wantError)
 			} else if err.Error() != test.wantError.Error() {
 				t.Errorf("test %d: wrong error: got %q, want %q", i, err, test.wantError)
 			}
diff --git a/generators/defaults.go b/generators/defaults.go
index aec4fe845031edd58b2da6d6417ce4539012d1c9..107e13e67c6e3efb9edbe6311c132f3113fa35e1 100644
--- a/generators/defaults.go
+++ b/generators/defaults.go
@@ -28,7 +28,7 @@ import (
 	"strings"
 )
 
-func fatal(str string, v ...interface{}) {
+func fatalf(str string, v ...interface{}) {
 	fmt.Fprintf(os.Stderr, str, v...)
 	os.Exit(1)
 }
@@ -40,12 +40,12 @@ type setting struct {
 
 func main() {
 	if len(os.Args) < 3 {
-		fatal("usage %s <input> <output>\n", os.Args[0])
+		fatalf("usage %s <input> <output>\n", os.Args[0])
 	}
 
 	content, err := ioutil.ReadFile(os.Args[1])
 	if err != nil {
-		fatal("error reading file %v\n", err)
+		fatalf("error reading file %v\n", err)
 	}
 
 	m := make(map[string]setting)
@@ -54,7 +54,7 @@ func main() {
 	filepath := filepath.Join(os.Getenv("GOPATH"), "src", "github.com", "ethereum", "go-ethereum", "params", os.Args[2])
 	output, err := os.OpenFile(filepath, os.O_RDWR|os.O_CREATE, 0666)
 	if err != nil {
-		fatal("error opening file for writing %v\n", err)
+		fatalf("error opening file for writing %v\n", err)
 	}
 
 	output.WriteString(`// DO NOT EDIT!!!
@@ -76,6 +76,6 @@ var (
 
 	cmd := exec.Command("gofmt", "-w", filepath)
 	if err := cmd.Run(); err != nil {
-		fatal("gofmt failed: %v\n", err)
+		fatalf("gofmt failed: %v\n", err)
 	}
 }
diff --git a/metrics/disk_linux.go b/metrics/disk_linux.go
index 8967d490e83a39f3ce59282bc03051701527dd4d..d0eac08b915b1a59c0438a124281393651c8e562 100644
--- a/metrics/disk_linux.go
+++ b/metrics/disk_linux.go
@@ -68,5 +68,4 @@ func ReadDiskStats(stats *DiskStats) error {
 			stats.WriteBytes = value
 		}
 	}
-	return nil
 }
diff --git a/miner/worker.go b/miner/worker.go
index 68e99053f0fcef098195e0ccb70e562e7eefe709..21588e3103e7776f6c24d94d7f75228b67b071c7 100644
--- a/miner/worker.go
+++ b/miner/worker.go
@@ -279,7 +279,7 @@ func (self *worker) wait() {
 					glog.V(logger.Error).Infoln("mining err", err)
 					continue
 				}
-				go self.mux.Post(core.NewMinedBlockEvent{block})
+				go self.mux.Post(core.NewMinedBlockEvent{Block: block})
 			} else {
 				work.state.Commit()
 				parent := self.chain.GetBlock(block.ParentHash())
@@ -322,11 +322,11 @@ func (self *worker) wait() {
 
 				// broadcast before waiting for validation
 				go func(block *types.Block, logs vm.Logs, receipts []*types.Receipt) {
-					self.mux.Post(core.NewMinedBlockEvent{block})
-					self.mux.Post(core.ChainEvent{block, block.Hash(), logs})
+					self.mux.Post(core.NewMinedBlockEvent{Block: block})
+					self.mux.Post(core.ChainEvent{Block: block, Hash: block.Hash(), Logs: logs})
 
 					if stat == core.CanonStatTy {
-						self.mux.Post(core.ChainHeadEvent{block})
+						self.mux.Post(core.ChainHeadEvent{Block: block})
 						self.mux.Post(logs)
 					}
 					if err := core.WriteBlockReceipts(self.chainDb, block.Hash(), receipts); err != nil {
@@ -411,7 +411,7 @@ func (w *worker) setGasPrice(p *big.Int) {
 	const pct = int64(90)
 	w.gasPrice = gasprice(p, pct)
 
-	w.mux.Post(core.GasPriceChanged{w.gasPrice})
+	w.mux.Post(core.GasPriceChanged{Price: w.gasPrice})
 }
 
 func (self *worker) isBlockLocallyMined(current *Work, deepBlockNum uint64) bool {
diff --git a/p2p/discover/udp_test.go b/p2p/discover/udp_test.go
index 3939a69a7580497eb2c4767b1f22eea2307aa22d..f43bf3726956710621dc4f22d47460fb0d71be9f 100644
--- a/p2p/discover/udp_test.go
+++ b/p2p/discover/udp_test.go
@@ -128,7 +128,7 @@ func newUDPTest(t *testing.T) *udpTest {
 func (test *udpTest) packetIn(wantError error, ptype byte, data packet) error {
 	enc, err := encodePacket(test.remotekey, ptype, data)
 	if err != nil {
-		return test.errorf("packet (%d) encode error: %v", err)
+		return test.errorf("packet (%d) encode error: %v", ptype, err)
 	}
 	test.sent = append(test.sent, enc)
 	if err = test.udp.handlePacket(test.remoteaddr, enc); err != wantError {
diff --git a/p2p/message_test.go b/p2p/message_test.go
index 013214e21859a905802fc85caaea8e90c2d3095b..a01f7555616217b9266d87441995c5b281cd20ec 100644
--- a/p2p/message_test.go
+++ b/p2p/message_test.go
@@ -58,7 +58,7 @@ loop:
 			if err := SendItems(rw1, 1); err == nil {
 				t.Error("EncodeMsg returned nil error")
 			} else if err != ErrPipeClosed {
-				t.Error("EncodeMsg returned wrong error: got %v, want %v", err, ErrPipeClosed)
+				t.Errorf("EncodeMsg returned wrong error: got %v, want %v", err, ErrPipeClosed)
 			}
 			close(done)
 		}()
diff --git a/p2p/nat/natupnp.go b/p2p/nat/natupnp.go
index 804396e94db22c2b50663375660e0ec094960aa3..6b3fa3f7a0dd2dbe9086ea64093cd0db672e474a 100644
--- a/p2p/nat/natupnp.go
+++ b/p2p/nat/natupnp.go
@@ -107,9 +107,9 @@ func discoverUPnP() Interface {
 	go discover(found, internetgateway1.URN_WANConnectionDevice_1, func(dev *goupnp.RootDevice, sc goupnp.ServiceClient) *upnp {
 		switch sc.Service.ServiceType {
 		case internetgateway1.URN_WANIPConnection_1:
-			return &upnp{dev, "IGDv1-IP1", &internetgateway1.WANIPConnection1{sc}}
+			return &upnp{dev, "IGDv1-IP1", &internetgateway1.WANIPConnection1{ServiceClient: sc}}
 		case internetgateway1.URN_WANPPPConnection_1:
-			return &upnp{dev, "IGDv1-PPP1", &internetgateway1.WANPPPConnection1{sc}}
+			return &upnp{dev, "IGDv1-PPP1", &internetgateway1.WANPPPConnection1{ServiceClient: sc}}
 		}
 		return nil
 	})
@@ -117,11 +117,11 @@ func discoverUPnP() Interface {
 	go discover(found, internetgateway2.URN_WANConnectionDevice_2, func(dev *goupnp.RootDevice, sc goupnp.ServiceClient) *upnp {
 		switch sc.Service.ServiceType {
 		case internetgateway2.URN_WANIPConnection_1:
-			return &upnp{dev, "IGDv2-IP1", &internetgateway2.WANIPConnection1{sc}}
+			return &upnp{dev, "IGDv2-IP1", &internetgateway2.WANIPConnection1{ServiceClient: sc}}
 		case internetgateway2.URN_WANIPConnection_2:
-			return &upnp{dev, "IGDv2-IP2", &internetgateway2.WANIPConnection2{sc}}
+			return &upnp{dev, "IGDv2-IP2", &internetgateway2.WANIPConnection2{ServiceClient: sc}}
 		case internetgateway2.URN_WANPPPConnection_1:
-			return &upnp{dev, "IGDv2-PPP1", &internetgateway2.WANPPPConnection1{sc}}
+			return &upnp{dev, "IGDv2-PPP1", &internetgateway2.WANPPPConnection1{ServiceClient: sc}}
 		}
 		return nil
 	})
diff --git a/p2p/server_test.go b/p2p/server_test.go
index 976d5baf5965fa38c75196144136800409ff2759..02d1c8e0102664c4ce1f05d0c30f2c878c6ea921 100644
--- a/p2p/server_test.go
+++ b/p2p/server_test.go
@@ -123,7 +123,7 @@ func TestServerDial(t *testing.T) {
 	// run a one-shot TCP server to handle the connection.
 	listener, err := net.Listen("tcp", "127.0.0.1:0")
 	if err != nil {
-		t.Fatalf("could not setup listener: %v")
+		t.Fatalf("could not setup listener: %v", err)
 	}
 	defer listener.Close()
 	accepted := make(chan net.Conn)
diff --git a/pow/ezp/pow.go b/pow/ezp/pow.go
index f7ae1cbf1162a5a84d9021052a196bea99462d7e..0f7ee35709ce7ea02112e9abd57477213d2ba24f 100644
--- a/pow/ezp/pow.go
+++ b/pow/ezp/pow.go
@@ -91,8 +91,6 @@ empty:
 			time.Sleep(20 * time.Microsecond)
 		}
 	}
-
-	return 0, nil
 }
 
 func (pow *EasyPow) Verify(block pow.Block) bool {
diff --git a/rlp/encode.go b/rlp/encode.go
index 17cfc6b66323d4726d04282699261f4ac0e5203c..c20897efef048f1076aff8e2eee7768e62773236 100644
--- a/rlp/encode.go
+++ b/rlp/encode.go
@@ -300,7 +300,6 @@ func (r *encReader) Read(b []byte) (n int, err error) {
 		}
 		r.piece = nil
 	}
-	panic("not reached")
 }
 
 // next returns the next piece of data to be read.
@@ -650,5 +649,4 @@ func intsize(i uint64) (size int) {
 			return size
 		}
 	}
-	panic("not reached")
 }
diff --git a/rlp/raw_test.go b/rlp/raw_test.go
index 7d3ca13af9c391a5b3240d0e4e034833ddea6a48..bac09d8d4ec783fcbf481c6e57d59ef198e1b409 100644
--- a/rlp/raw_test.go
+++ b/rlp/raw_test.go
@@ -61,13 +61,13 @@ func TestCountValues(t *testing.T) {
 
 func TestSplitTypes(t *testing.T) {
 	if _, _, err := SplitString(unhex("C100")); err != ErrExpectedString {
-		t.Error("SplitString returned %q, want %q", err, ErrExpectedString)
+		t.Errorf("SplitString returned %q, want %q", err, ErrExpectedString)
 	}
 	if _, _, err := SplitList(unhex("01")); err != ErrExpectedList {
-		t.Error("SplitString returned %q, want %q", err, ErrExpectedList)
+		t.Errorf("SplitString returned %q, want %q", err, ErrExpectedList)
 	}
 	if _, _, err := SplitList(unhex("81FF")); err != ErrExpectedList {
-		t.Error("SplitString returned %q, want %q", err, ErrExpectedList)
+		t.Errorf("SplitString returned %q, want %q", err, ErrExpectedList)
 	}
 }
 
diff --git a/rpc/ipc_unix.go b/rpc/ipc_unix.go
index 310286e96498186cc84c7822e1e555ff3f4de219..9ece01240a406d5bc8ec24d4c1ad467b3e3ec342 100644
--- a/rpc/ipc_unix.go
+++ b/rpc/ipc_unix.go
@@ -41,5 +41,5 @@ func ipcListen(endpoint string) (net.Listener, error) {
 
 // newIPCConnection will connect to a Unix socket on the given endpoint.
 func newIPCConnection(endpoint string) (net.Conn, error) {
-	return net.DialUnix("unix", nil, &net.UnixAddr{endpoint, "unix"})
+	return net.DialUnix("unix", nil, &net.UnixAddr{Name: endpoint, Net: "unix"})
 }
diff --git a/rpc/json_test.go b/rpc/json_test.go
index b095996b824133a6df8bfa49d6210efae40964ae..5048d2f7a067193e5a6747d225aaa9479a1ec67e 100644
--- a/rpc/json_test.go
+++ b/rpc/json_test.go
@@ -75,7 +75,7 @@ func TestJSONRequestParsing(t *testing.T) {
 			t.Fatalf("%v", e)
 		}
 		if id != 1234 {
-			t.Fatalf("Expected id 1234 but got %s", id)
+			t.Fatalf("Expected id 1234 but got %d", id)
 		}
 	} else {
 		t.Fatalf("invalid request, expected *json.RawMesage got %T", requests[0].id)
diff --git a/tests/block_test_util.go b/tests/block_test_util.go
index 9b00e516ac28770acaa5b5ae0f32e67d6d872cc0..b92c183e114eeb9fa20c65d1755d94ca25ad99e0 100644
--- a/tests/block_test_util.go
+++ b/tests/block_test_util.go
@@ -491,7 +491,7 @@ func mustConvertBytes(in string) []byte {
 	h := unfuckFuckedHex(strings.TrimPrefix(in, "0x"))
 	out, err := hex.DecodeString(h)
 	if err != nil {
-		panic(fmt.Errorf("invalid hex: %q: ", h, err))
+		panic(fmt.Errorf("invalid hex: %q", h))
 	}
 	return out
 }
diff --git a/tests/init.go b/tests/init.go
index c5a05512b7fecb5f09ca2ce3f1bffb8a1ed63c82..5112b274d0cd1316779f09cd428fe8d6261a0641 100644
--- a/tests/init.go
+++ b/tests/init.go
@@ -67,7 +67,7 @@ func init() {
 func readJson(reader io.Reader, value interface{}) error {
 	data, err := ioutil.ReadAll(reader)
 	if err != nil {
-		return fmt.Errorf("Error reading JSON file", err.Error())
+		return fmt.Errorf("error reading JSON file: %v", err)
 	}
 	if err = json.Unmarshal(data, &value); err != nil {
 		if syntaxerr, ok := err.(*json.SyntaxError); ok {
diff --git a/trie/proof_test.go b/trie/proof_test.go
index 5668d6562df45189e775ba1442ebb6d0da18eaa4..91ebcd4a5711019b547158e0d27c0fe7f9590478 100644
--- a/trie/proof_test.go
+++ b/trie/proof_test.go
@@ -124,7 +124,7 @@ func BenchmarkVerifyProof(b *testing.B) {
 	for i := 0; i < b.N; i++ {
 		im := i % len(keys)
 		if _, err := VerifyProof(root, []byte(keys[im]), proofs[im]); err != nil {
-			b.Fatalf("key %x: error", keys[im], err)
+			b.Fatalf("key %x: %v", keys[im], err)
 		}
 	}
 }
diff --git a/trie/trie_test.go b/trie/trie_test.go
index 493f99d914a487e058327ba05e1d3bd4f1df3723..bb761b55519cfa01b1381db1b190e511b0d3ca9d 100644
--- a/trie/trie_test.go
+++ b/trie/trie_test.go
@@ -65,7 +65,7 @@ func TestMissingRoot(t *testing.T) {
 		t.Error("New returned non-nil trie for invalid root")
 	}
 	if _, ok := err.(*MissingNodeError); !ok {
-		t.Error("New returned wrong error: %v", err)
+		t.Errorf("New returned wrong error: %v", err)
 	}
 }
 
diff --git a/whisper/message_test.go b/whisper/message_test.go
index d70da40a4a4ccc023726992bbf7664dbde2adfef..921c967a966447ce4debabd3b96a3f79dec4f512 100644
--- a/whisper/message_test.go
+++ b/whisper/message_test.go
@@ -108,7 +108,7 @@ func TestMessageAnonymousEncryptDecrypt(t *testing.T) {
 		t.Fatalf("failed to open encrypted message: %v", err)
 	}
 	if !bytes.Equal(out.Payload, payload) {
-		t.Error("payload mismatch: have 0x%x, want 0x%x", out.Payload, payload)
+		t.Errorf("payload mismatch: have 0x%x, want 0x%x", out.Payload, payload)
 	}
 }
 
@@ -144,7 +144,7 @@ func TestMessageFullCrypto(t *testing.T) {
 		t.Fatalf("failed to open encrypted message: %v", err)
 	}
 	if !bytes.Equal(out.Payload, payload) {
-		t.Error("payload mismatch: have 0x%x, want 0x%x", out.Payload, payload)
+		t.Errorf("payload mismatch: have 0x%x, want 0x%x", out.Payload, payload)
 	}
 
 	pubKey := out.Recover()