diff --git a/ethereum.go b/ethereum.go
index cac442dfc2b22aac73ce86a87eaea39461617cf7..6ace583081fb22508b046ca83178e68e85e242e0 100644
--- a/ethereum.go
+++ b/ethereum.go
@@ -60,8 +60,8 @@ type Ethereum struct {
 }
 
 func New(caps Caps, usePnp bool) (*Ethereum, error) {
-	db, err := ethdb.NewLDBDatabase()
-	//db, err := ethdb.NewMemDatabase()
+	//db, err := ethdb.NewLDBDatabase()
+	db, err := ethdb.NewMemDatabase()
 	if err != nil {
 		return nil, err
 	}
@@ -246,19 +246,22 @@ func (s *Ethereum) Start() {
 	// Start the tx pool
 	s.TxPool.Start()
 
-	resp, err := http.Get("http://www.ethereum.org/servers.poc2.txt")
-	if err != nil {
-		log.Println("Fetching seed failed:", err)
-		return
-	}
-	defer resp.Body.Close()
-	body, err := ioutil.ReadAll(resp.Body)
-	if err != nil {
-		log.Println("Reading seed failed:", err)
-		return
-	}
+	if ethutil.Config.Seed {
+		// Testnet seed bootstrapping
+		resp, err := http.Get("http://www.ethereum.org/servers.poc2.txt")
+		if err != nil {
+			log.Println("Fetching seed failed:", err)
+			return
+		}
+		defer resp.Body.Close()
+		body, err := ioutil.ReadAll(resp.Body)
+		if err != nil {
+			log.Println("Reading seed failed:", err)
+			return
+		}
 
-	s.ConnectToPeer(string(body))
+		s.ConnectToPeer(string(body))
+	}
 }
 
 func (s *Ethereum) peerHandler(listener net.Listener) {
diff --git a/peer.go b/peer.go
index 6ec3c7ee7622b2992eb5d2371132f2824f3fdace..5bfec1758a3f739e54ff9b237da1c20ec555d5c3 100644
--- a/peer.go
+++ b/peer.go
@@ -204,6 +204,7 @@ func (p *Peer) HandleOutbound() {
 	// The ping timer. Makes sure that every 2 minutes a ping is send to the peer
 	pingTimer := time.NewTicker(2 * time.Minute)
 	serviceTimer := time.NewTicker(5 * time.Minute)
+
 out:
 	for {
 		select {
@@ -442,7 +443,7 @@ func (p *Peer) pushHandshake() error {
 
 	clientId := fmt.Sprintf("/Ethereum(G) v%s/%s", ethutil.Config.Ver, runtime.GOOS)
 	msg := ethwire.NewMessage(ethwire.MsgHandshakeTy, []interface{}{
-		uint32(3), uint32(0), clientId, byte(p.caps), p.port, pubkey,
+		uint32(4), uint32(0), clientId, byte(p.caps), p.port, pubkey,
 	})
 
 	p.QueueMessage(msg)
@@ -469,8 +470,8 @@ func (p *Peer) pushPeers() {
 func (p *Peer) handleHandshake(msg *ethwire.Msg) {
 	c := msg.Data
 
-	if c.Get(0).AsUint() != 3 {
-		log.Println("Invalid peer version. Require protocol v3")
+	if c.Get(0).AsUint() != 4 {
+		log.Println("Invalid peer version. Require protocol v4")
 		p.Stop()
 		return
 	}