diff --git a/neo/master/tests/testMasterApp.py b/neo/master/tests/testMasterApp.py
index 3b28bec74a24d48a30a49e8ff36f85074e4d33ab..d264229d2a1d70e92aef422842b1bf4d1909c2e1 100644
--- a/neo/master/tests/testMasterApp.py
+++ b/neo/master/tests/testMasterApp.py
@@ -18,13 +18,14 @@
 import unittest, logging, os
 from tempfile import mkstemp
 from mock import Mock
+from neo.tests.base import NeoTestBase
 from neo.master.app import Application
 from neo.protocol import INVALID_PTID, INVALID_OID, INVALID_TID, \
      INVALID_UUID, Packet, NOTIFY_NODE_INFORMATION
 from neo.node import MasterNode, ClientNode, StorageNode
 from neo.storage.mysqldb import p64, u64
 
-class MasterAppTests(unittest.TestCase):
+class MasterAppTests(NeoTestBase):
 
     def setUp(self):
         logging.basicConfig(level = logging.WARNING)
@@ -81,18 +82,6 @@ server: 127.0.0.1:10023
         # Delete tmp file
         os.remove(self.tmp_path)
 
-    def getNewUUID(self):
-        uuid = INVALID_UUID
-        while uuid == INVALID_UUID:
-            uuid = os.urandom(16)
-        self.uuid = uuid
-        return uuid
-
-    def checkNoPacketSent(self, conn):
-        self.assertEquals(len(conn.mockGetNamedCalls('notify')), 0)
-        self.assertEquals(len(conn.mockGetNamedCalls('answer')), 0)
-        self.assertEquals(len(conn.mockGetNamedCalls('ask')), 0)
-
     def test_01_getNextPartitionTableID(self):
       # must raise as we don"t have one
       self.assertEqual(self.app.lptid, INVALID_PTID)
@@ -166,16 +155,8 @@ server: 127.0.0.1:10023
       self.app.broadcastNodeInformation(c_node)
       # check conn
       self.checkNoPacketSent(client_conn)
-      self.assertEquals(len(master_conn.mockGetNamedCalls("notify")), 1)
-      call = master_conn.mockGetNamedCalls("notify")[0]
-      packet = call.getParam(0)
-      self.assertTrue(isinstance(packet, Packet))
-      self.assertEqual(packet.getType(), NOTIFY_NODE_INFORMATION)
-      self.assertEquals(len(storage_conn.mockGetNamedCalls("notify")), 1)
-      call = storage_conn.mockGetNamedCalls("notify")[0]
-      packet = call.getParam(0)
-      self.assertTrue(isinstance(packet, Packet))
-      self.assertEqual(packet.getType(), NOTIFY_NODE_INFORMATION)
+      self.checkNotifyNodeInformation(master_conn)
+      self.checkNotifyNodeInformation(storage_conn)
 
       # address defined and client type
       master_conn = Mock({"getUUID" : master_uuid})
@@ -186,16 +167,8 @@ server: 127.0.0.1:10023
       self.app.broadcastNodeInformation(c_node)
       # check conn
       self.checkNoPacketSent(client_conn)
-      self.assertEquals(len(master_conn.mockGetNamedCalls("notify")), 1)
-      call = master_conn.mockGetNamedCalls("notify")[0]
-      packet = call.getParam(0)
-      self.assertTrue(isinstance(packet, Packet))
-      self.assertEqual(packet.getType(), NOTIFY_NODE_INFORMATION)
-      self.assertEquals(len(storage_conn.mockGetNamedCalls("notify")), 1)
-      call = storage_conn.mockGetNamedCalls("notify")[0]
-      packet = call.getParam(0)
-      self.assertTrue(isinstance(packet, Packet))
-      self.assertEqual(packet.getType(), NOTIFY_NODE_INFORMATION)
+      self.checkNotifyNodeInformation(master_conn)
+      self.checkNotifyNodeInformation(storage_conn)
       
       # address defined and storage type
       master_conn = Mock({"getUUID" : master_uuid})
@@ -205,21 +178,9 @@ server: 127.0.0.1:10023
       s_node = StorageNode(uuid = self.getNewUUID(), server=("127.0.0.1", 1351))
       self.app.broadcastNodeInformation(s_node)
       # check conn
-      self.assertEquals(len(client_conn.mockGetNamedCalls("notify")), 1)
-      call = client_conn.mockGetNamedCalls("notify")[0]
-      packet = call.getParam(0)
-      self.assertTrue(isinstance(packet, Packet))
-      self.assertEqual(packet.getType(), NOTIFY_NODE_INFORMATION)
-      self.assertEquals(len(master_conn.mockGetNamedCalls("notify")), 1)
-      call = master_conn.mockGetNamedCalls("notify")[0]
-      packet = call.getParam(0)
-      self.assertTrue(isinstance(packet, Packet))
-      self.assertEqual(packet.getType(), NOTIFY_NODE_INFORMATION)
-      self.assertEquals(len(storage_conn.mockGetNamedCalls("notify")), 1)
-      call = storage_conn.mockGetNamedCalls("notify")[0]
-      packet = call.getParam(0)
-      self.assertTrue(isinstance(packet, Packet))
-      self.assertEqual(packet.getType(), NOTIFY_NODE_INFORMATION)
+      self.checkNotifyNodeInformation(client_conn)
+      self.checkNotifyNodeInformation(master_conn)
+      self.checkNotifyNodeInformation(storage_conn)
 
 
 if __name__ == '__main__':
diff --git a/neo/master/tests/testMasterElectionHandler.py b/neo/master/tests/testMasterElectionHandler.py
index 920c3a5d831e489a1ec9d8f6d33930dc2e7015be..a43a57ce3daac1c943b87a0004ae468c74527772 100644
--- a/neo/master/tests/testMasterElectionHandler.py
+++ b/neo/master/tests/testMasterElectionHandler.py
@@ -163,7 +163,7 @@ server: 127.0.0.1:10023
                                                 ip_address=ip,
                                                 port=port,
                                                 name=self.app.name,)
-        self.checkAcceptNodeIdentification(conn, packet)
+        self.checkAcceptNodeIdentification(conn, answered_packet=packet)
         return uuid
 
     # Method to test the kind of packet returned in answer
@@ -521,7 +521,7 @@ server: 127.0.0.1:10023
         self.assertEqual(len(self.app.nm.getMasterNodeList()), 1)
         self.assertEqual(node.getUUID(), uuid)
         self.assertEqual(node.getState(), RUNNING_STATE)
-        self.checkAcceptNodeIdentification(conn, packet)
+        self.checkAcceptNodeIdentification(conn, answered_packet=packet)
         # unknown node
         conn = Mock({"_addPacket" : None, "abort" : None, "expectMessage" : None,
                     "isServerConnection" : True})
@@ -537,7 +537,7 @@ server: 127.0.0.1:10023
                                                 port=self.master_port+1,
                                                 name=self.app.name,)
         self.assertEqual(len(self.app.nm.getMasterNodeList()), 2)
-        self.checkAcceptNodeIdentification(conn, packet)
+        self.checkAcceptNodeIdentification(conn, answered_packet=packet)
         self.assertEqual(len(self.app.unconnected_master_node_set), 2)
         self.assertEqual(len(self.app.negotiating_master_node_set), 0)
         # broken node
diff --git a/neo/master/tests/testMasterService.py b/neo/master/tests/testMasterService.py
index a85ee16721601fb329564437b5b3592aa6f94c7a..037304a1b5c0a81b61db106d767ff816bd69bf66 100644
--- a/neo/master/tests/testMasterService.py
+++ b/neo/master/tests/testMasterService.py
@@ -130,7 +130,7 @@ server: 127.0.0.1:10023
         # test alien cluster
         conn = Mock({"_addPacket" : None, "abort" : None, "expectMessage" : None})
         self.service.handleRequestNodeIdentification(conn, packet, *args)
-        self.checkAcceptNodeIdentification(conn, packet)
+        self.checkAcceptNodeIdentification(conn, answered_packet=packet)
         return uuid
 
     # Tests
@@ -156,7 +156,7 @@ server: 127.0.0.1:10023
                                                 ip_address='127.0.0.1',
                                                 port=self.storage_port,
                                                 name=self.app.name,)
-        self.checkAcceptNodeIdentification(conn, packet)
+        self.checkAcceptNodeIdentification(conn, answered_packet=packet)
         self.assertEquals(len(self.app.nm.getStorageNodeList()), 1)
         sn = self.app.nm.getStorageNodeList()[0]
         self.assertEquals(sn.getServer(), ('127.0.0.1', self.storage_port))
@@ -174,7 +174,7 @@ server: 127.0.0.1:10023
                                                 ip_address='127.0.0.1',
                                                 port=self.storage_port,
                                                 name=self.app.name,)
-        self.checkAcceptNodeIdentification(conn, packet)
+        self.checkAcceptNodeIdentification(conn, answered_packet=packet)
         sn = self.app.nm.getStorageNodeList()[0]
         self.assertEquals(sn.getServer(), ('127.0.0.1', self.storage_port))
         self.assertEquals(sn.getUUID(), uuid)
@@ -220,7 +220,7 @@ server: 127.0.0.1:10023
                                                 ip_address='127.0.0.1',
                                                 port=self.storage_port,
                                                 name=self.app.name,)
-        self.checkAcceptNodeIdentification(conn, packet)
+        self.checkAcceptNodeIdentification(conn, answered_packet=packet)
         self.assertEquals(len(self.app.nm.getStorageNodeList()), 1)
         sn = self.app.nm.getStorageNodeList()[0]
         self.assertEquals(sn.getServer(), ('127.0.0.1', self.storage_port))
@@ -241,7 +241,7 @@ server: 127.0.0.1:10023
                                                 ip_address='127.0.0.2',
                                                 port=10022,
                                                 name=self.app.name,)
-        self.checkAcceptNodeIdentification(conn, packet)
+        self.checkAcceptNodeIdentification(conn, answered_packet=packet)
         call = conn.mockGetNamedCalls('answer')[0]
         new_uuid = call.getParam(0)._body[-16:]
         self.assertNotEquals(uuid, new_uuid)
@@ -296,11 +296,11 @@ server: 127.0.0.1:10023
                      "getAddress" : ("127.0.0.1", self.storage_port)})
         service.handleAskPrimaryMaster(conn, packet)
         self.assertEquals(len(conn.mockGetNamedCalls("abort")), 0)
-        self.checkAnswerPrimaryMaster(conn, packet)
-        self.checkNotifyNodeInformation(conn, 0)
-        self.checkSendPartitionTable(conn, 1)
-        self.checkSendPartitionTable(conn, 2)
-        self.checkStartOperation(conn, 3)
+        self.checkAnswerPrimaryMaster(conn, answered_packet=packet)
+        self.checkNotifyNodeInformation(conn, packet_number=0)
+        self.checkSendPartitionTable(conn, packet_number=1)
+        self.checkSendPartitionTable(conn, packet_number=2)
+        self.checkStartOperation(conn, packet_number=3)
 
         # Same but identify as a client node, must not get start operation message
         uuid = self.identifyToMasterNode(node_type=CLIENT_NODE_TYPE, port=11021)
@@ -310,10 +310,10 @@ server: 127.0.0.1:10023
                      "getUUID" : uuid, "getAddress" : ("127.0.0.1", 11021)})
         service.handleAskPrimaryMaster(conn, packet)
         self.assertEquals(len(conn.mockGetNamedCalls("abort")), 0)
-        self.checkAnswerPrimaryMaster(conn, packet)
-        self.checkNotifyNodeInformation(conn, 0)
-        self.checkSendPartitionTable(conn, 1)
-        self.checkSendPartitionTable(conn, 2)
+        self.checkAnswerPrimaryMaster(conn, answered_packet=packet)
+        self.checkNotifyNodeInformation(conn, packet_number=0)
+        self.checkSendPartitionTable(conn, packet_number=1)
+        self.checkSendPartitionTable(conn, packet_number=2)
 
     def test_03_handleAnnouncePrimaryMaster(self):
         service = self.service
@@ -675,7 +675,7 @@ server: 127.0.0.1:10023
         tid = self.app.ltid
         oid = self.app.loid
         service.handleAskLastIDs(conn, packet)
-        packet = self.checkAnswerLastIDs(conn, packet)
+        packet = self.checkAnswerLastIDs(conn, answered_packet=packet)
         loid, ltid, lptid = protocol._decodeAnswerLastIDs(packet._body)
         self.assertEqual(loid, oid)
         self.assertEqual(ltid, tid)
@@ -695,7 +695,7 @@ server: 127.0.0.1:10023
         conn = Mock({"getUUID" : uuid,
                      "getAddress" : ("127.0.0.1", self.storage_port)})
         service.handleAskUnfinishedTransactions(conn, packet)
-        packet = self.checkAnswerUnfinishedTransactions(conn, packet)
+        packet = self.checkAnswerUnfinishedTransactions(conn, answered_packet=packet)
         tid_list = protocol._decodeAnswerUnfinishedTransactions(packet._body)[0]
         self.assertEqual(len(tid_list), 0)
         # create some transaction
@@ -709,7 +709,7 @@ server: 127.0.0.1:10023
         conn = Mock({"getUUID" : uuid,
                      "getAddress" : ("127.0.0.1", self.storage_port)})
         service.handleAskUnfinishedTransactions(conn, packet)
-        packet = self.checkAnswerUnfinishedTransactions(conn, packet)
+        packet = self.checkAnswerUnfinishedTransactions(conn, answered_packet=packet)
         tid_list = protocol._decodeAnswerUnfinishedTransactions(packet._body)[0]
         self.assertEqual(len(tid_list), 3)
         
diff --git a/neo/storage/tests/testStorageBootstrapHandler.py b/neo/storage/tests/testStorageBootstrapHandler.py
index ff4246ac9971a4a7d28baf3b4639a3680ea53052..ee3365194933905af6c13569936dc2839ab0fd21 100644
--- a/neo/storage/tests/testStorageBootstrapHandler.py
+++ b/neo/storage/tests/testStorageBootstrapHandler.py
@@ -104,12 +104,6 @@ server: 127.0.0.1:10020
     def getLastUUID(self):
         return self.uuid
 
-    # Method to test the kind of packet returned in answer
-    def checkCalledRequestNodeIdentification(self, conn, packet_number=0):
-        """ Check Request Node Identification has been send"""
-        self.assertEquals(len(conn.mockGetNamedCalls("abort")), 0)
-        self.checkAskPacket(conn, protocol.REQUEST_NODE_IDENTIFICATION)
-
     # Tests
     def test_01_connectionCompleted(self):
         # trying mn is None -> RuntimeError
@@ -121,7 +115,7 @@ server: 127.0.0.1:10020
         # request identification
         self.app.trying_master_node = self.trying_master_node
         self.bootstrap.connectionCompleted(conn)
-        self.checkCalledRequestNodeIdentification(conn)
+        self.checkRequestNodeIdentification(conn)
 
     def test_02_connectionFailed(self):
         # trying mn is None -> RuntimeError
@@ -220,25 +214,29 @@ server: 127.0.0.1:10020
         self.checkNoPacketSent(conn)
 
     def test_07_handleNotReady(self):
+        # the primary is not ready 
         conn = Mock({
             "isServerConnection": False, 
             "getAddress" : ("127.0.0.1", self.master_port),
         })
-        # the primary is not ready 
         self.app.trying_master_node = self.trying_master_node
         self.app.trying_master_node = self.trying_master_node
         self.bootstrap.handleNotReady(conn, None, None)
         self.assertEquals(self.app.primary_master_node, None)
         self.assertEquals(self.app.trying_master_node, None)
-        self.assertEquals(len(conn.mockGetNamedCalls("close")), 1)
+        self.checkClosed(conn)
         # another master is not ready
+        conn = Mock({
+            "isServerConnection": False, 
+            "getAddress" : ("127.0.0.1", self.master_port),
+        })
         self.app.trying_master_node = self.trying_master_node
         master_node = MasterNode()
         self.app.primary_master_node = master_node
         self.bootstrap.handleNotReady(conn, None, None)
         self.assertEquals(self.app.primary_master_node, master_node)
         self.assertEquals(self.app.trying_master_node, None)
-        self.assertEquals(len(conn.mockGetNamedCalls("close")), 2)
+        self.checkClosed(conn)
         self.checkNoPacketSent(conn)
 
     def test_08_handleRequestNodeIdentification1(self):
@@ -256,7 +254,7 @@ server: 127.0.0.1:10020
             node_type=MASTER_NODE_TYPE,
             ip_address='127.0.0.1',
             name='',)
-        self.assertEquals(len(conn.mockGetNamedCalls("setUUID")), 0)
+        self.checkNoUUIDSet(conn)
 
     def test_08_handleRequestNodeIdentification2(self):
         # not a master node -> rejected
@@ -272,7 +270,7 @@ server: 127.0.0.1:10020
             node_type=STORAGE_NODE_TYPE,
             ip_address='127.0.0.1',
             name=self.app.name,)
-        self.assertEquals(len(conn.mockGetNamedCalls("setUUID")), 0)
+        self.checkNoUUIDSet(conn)
 
     def test_08_handleRequestNodeIdentification3(self):
         # bad app name -> rejected
@@ -288,7 +286,7 @@ server: 127.0.0.1:10020
             node_type=MASTER_NODE_TYPE,
             ip_address='127.0.0.1',
             name='INVALID_NAME',)
-        self.assertEquals(len(conn.mockGetNamedCalls("setUUID")), 0)
+        self.checkNoUUIDSet(conn)
 
     def test_08_handleRequestNodeIdentification4(self):
         # new master
@@ -309,17 +307,9 @@ server: 127.0.0.1:10020
             ip_address='192.168.1.1',
             name=self.app.name,)
         self.assertEquals(len(self.app.nm.getNodeList()), count + 1)
-        # check packet
-        self.assertEquals(len(conn.mockGetNamedCalls("answer")), 1)
-        call = conn.mockGetNamedCalls("answer")[0]
-        packet = call.getParam(0)
-        self.assertTrue(isinstance(packet, Packet))
-        self.assertEquals(packet.getType(), ACCEPT_NODE_IDENTIFICATION)
-        # check connection uuid
-        self.assertEquals(len(conn.mockGetNamedCalls("setUUID")), 1)
-        call = conn.mockGetNamedCalls("setUUID")[0]
-        self.assertEquals(call.getParam(0), uuid)
-        self.assertEquals(len(conn.mockGetNamedCalls("abort")), 1)
+        self.checkAcceptNodeIdentification(conn, answered_packet=packet, decode=True)
+        self.checkUUIDSet(conn, uuid)
+        self.checkAborted(conn)
 
     def test_08_handleRequestNodeIdentification5(self):
         # broken node -> rejected
@@ -339,7 +329,7 @@ server: 127.0.0.1:10020
             node_type=MASTER_NODE_TYPE,
             ip_address='127.0.0.1',
             name=self.app.name,)
-        self.assertEquals(len(conn.mockGetNamedCalls("setUUID")), 0)
+        self.checkNoUUIDSet(conn)
 
     def test_08_handleRequestNodeIdentification6(self):
         # master node is already known
@@ -360,18 +350,9 @@ server: 127.0.0.1:10020
             name=self.app.name)
         master = self.app.nm.getNodeByServer(('127.0.0.1', self.master_port))
         self.assertEquals(master.getUUID(), uuid)
-        self.assertEquals(len(conn.mockGetNamedCalls("abort")), 1)
-        self.assertEquals(len(conn.mockGetNamedCalls("expectMessage")), 0)
-        # packet
-        self.assertEquals(len(conn.mockGetNamedCalls("answer")), 1)
-        call = conn.mockGetNamedCalls("answer")[0]
-        packet = call.getParam(0)
-        self.assertTrue(isinstance(packet, Packet))
-        self.assertEquals(packet.getType(), ACCEPT_NODE_IDENTIFICATION)
-        # connection uuid
-        self.assertEquals(len(conn.mockGetNamedCalls("setUUID")), 1)
-        call = conn.mockGetNamedCalls("setUUID")[0]
-        self.assertEquals(call.getParam(0), uuid)
+        self.checkAcceptNodeIdentification(conn, answered_packet=packet, decode=True)
+        self.checkUUIDSet(conn, uuid)
+        self.checkAborted(conn)
 
     def test_09_handleAcceptNodeIdentification1(self):
         # server socket connection -> rejected
@@ -412,7 +393,7 @@ server: 127.0.0.1:10020
             num_replicas=self.app.num_replicas,
             your_uuid=self.getNewUUID())
         self.assertTrue(server not in self.app.nm.server_dict)
-        self.assertEquals(len(conn.mockGetNamedCalls("close")), 1)
+        self.checkClosed(conn)
 
     def test_09_handleAcceptNodeIdentification3(self):
         # bad address -> rejected
@@ -432,7 +413,7 @@ server: 127.0.0.1:10020
             your_uuid=self.getNewUUID())
         server = ('127.0.0.1', self.master_port)
         self.assertTrue(server not in self.app.nm.server_dict)
-        self.assertEquals(len(conn.mockGetNamedCalls("close")), 1)
+        self.checkClosed(conn)
 
     def test_09_handleAcceptNodeIdentification4(self):
         # bad number of replicas/partitions 
@@ -459,9 +440,8 @@ server: 127.0.0.1:10020
             num_partitions=self.app.num_partitions + 2,
             num_replicas=self.app.num_replicas,
             **args)
-        self.assertEquals(len(conn.mockGetNamedCalls("setUUID")), 0)
+        self.checkNoUUIDSet(conn)
         self.checkNoPacketSent(conn)
-        self.assertEquals(len(conn.mockGetNamedCalls("expectMessage")), 0)
         # create a new partition table
         self.bootstrap.handleAcceptNodeIdentification(
             num_partitions=self.app.num_partitions,
@@ -472,8 +452,8 @@ server: 127.0.0.1:10020
         self.assertEqual(self.app.num_partitions, self.app.dm.getNumPartitions())
         self.assertTrue(isinstance(self.app.pt, PartitionTable))
         self.assertEquals(self.app.ptid, self.app.dm.getPTID())
-        self.assertEquals(len(conn.mockGetNamedCalls("setUUID")), 1)
-        self.checkAskPacket(conn, protocol.ASK_PRIMARY_MASTER)
+        self.checkUUIDSet(conn, uuid)
+        self.checkAskPrimaryMaster(conn)
 
     def test_09_handleAcceptNodeIdentification5(self):
         # no errors
@@ -503,15 +483,12 @@ server: 127.0.0.1:10020
         self.assertEqual(self.app.num_partitions, self.app.dm.getNumPartitions())
         self.assertTrue(isinstance(self.app.pt, PartitionTable))
         self.assertEquals(self.app.ptid, self.app.dm.getPTID())
+        self.checkAskPrimaryMaster(conn)
         # uuid
-        self.assertEquals(len(conn.mockGetNamedCalls("setUUID")), 1)
-        call = conn.mockGetNamedCalls("setUUID")[0]
-        self.assertEquals(call.getParam(0), uuid)
+        self.checkUUIDSet(conn, uuid)
         self.assertEquals(self.app.trying_master_node.getUUID(), uuid)
         self.assertEquals(self.app.uuid, self.app.dm.getUUID())
         self.assertEquals(self.app.uuid, your_uuid)
-        # packet
-        self.checkAskPacket(conn, ASK_PRIMARY_MASTER)
         
     def test_10_handleAnswerPrimaryMaster01(self):
         # server connection rejected
@@ -554,8 +531,8 @@ server: 127.0.0.1:10020
         self.assertTrue(isinstance(n, MasterNode))
         self.assertEquals(n.getUUID(), new_master[2])
         self.assertEquals(len(conn.mockGetNamedCalls('setHandler')), 0)
-        self.assertEquals(len(conn.mockGetNamedCalls('close')), 0)
         self.checkNoPacketSent(conn)
+        self.checkNotClosed(conn)
         
     def test_10_handleAnswerPrimaryMaster03(self):
         # invalid primary master uuid -> close connection
@@ -574,8 +551,8 @@ server: 127.0.0.1:10020
         self.assertEquals(self.app.primary_master_node, None)
         self.assertEquals(self.app.trying_master_node, None)
         self.assertEquals(len(conn.mockGetNamedCalls('setHandler')), 0)
-        self.assertEquals(len(conn.mockGetNamedCalls('close')), 1)
         self.checkNoPacketSent(conn)
+        self.checkClosed(conn)
 
     def test_10_handleAnswerPrimaryMaster04(self):
         # trying_master_node is not pmn -> close connection
@@ -595,9 +572,9 @@ server: 127.0.0.1:10020
         )
         self.assertEquals(self.app.primary_master_node, pmn)
         self.assertEquals(len(conn.mockGetNamedCalls('setHandler')), 0)
-        self.assertEquals(len(conn.mockGetNamedCalls('close')), 1)
         self.assertEquals(self.app.trying_master_node, None)
         self.checkNoPacketSent(conn)
+        self.checkClosed(conn)
 
     def test_10_handleAnswerPrimaryMaster05(self):
         # trying_master_node is pmn -> set verification handler
@@ -619,9 +596,9 @@ server: 127.0.0.1:10020
         self.assertEquals(len(conn.mockGetNamedCalls('setHandler')), 1)
         call = conn.mockGetNamedCalls('setHandler')[0]
         self.assertTrue(isinstance(call.getParam(0), VerificationEventHandler))
-        self.assertEquals(len(conn.mockGetNamedCalls('close')), 0)
         self.assertEquals(self.app.trying_master_node, pmn)
         self.checkNoPacketSent(conn)
+        self.checkNotClosed(conn)
 
     def test_10_handleAnswerPrimaryMaster06(self):
         # primary_uuid not known -> nothing happen
@@ -640,8 +617,8 @@ server: 127.0.0.1:10020
         self.assertEquals(self.app.primary_master_node, None)
         self.assertEquals(self.app.trying_master_node, None)
         self.assertEquals(len(conn.mockGetNamedCalls('setHandler')), 0)
-        self.assertEquals(len(conn.mockGetNamedCalls('close')), 0)
         self.checkNoPacketSent(conn)
+        self.checkNotClosed(conn)
     
 if __name__ == "__main__":
     unittest.main()
diff --git a/neo/storage/tests/testStorageOperation.py b/neo/storage/tests/testStorageOperation.py
index be7537c92b1c52e876235bb8142de4532f247bfa..9ac1af0f3538e1add37fbc9a5953eb6d36f8d3d7 100644
--- a/neo/storage/tests/testStorageOperation.py
+++ b/neo/storage/tests/testStorageOperation.py
@@ -39,14 +39,6 @@ NEO_SQL_DATABASE = 'test_storage_neo1'
 
 class StorageOperationTests(NeoTestBase):
 
-    # TODO: move this check to base class and rename as checkAnswerPacket
-    def checkPacket(self, conn, packet_type=ERROR):
-        self.assertEquals(len(conn.mockGetNamedCalls("answer")), 1)
-        call = conn.mockGetNamedCalls("answer")[0]
-        packet = call.getParam(0)
-        self.assertTrue(isinstance(packet, Packet))
-        self.assertEquals(packet.getType(), packet_type)
-
     def checkHandleUnexpectedPacket(self, _call, _msg_type, _listening=True, **kwargs):
         conn = Mock({ 
             "getAddress" : ("127.0.0.1", self.master_port), 
@@ -387,13 +379,9 @@ server: 127.0.0.1:10020
         n = self.app.nm.getNodeByServer(('192.168.1.1', self.master_port))
         self.assertNotEquals(n, None)
         self.assertEquals(n.getUUID(), uuid)
-        self.checkPacket(conn, packet_type=ACCEPT_NODE_IDENTIFICATION)
-        # uuid
-        self.assertEquals(len(conn.mockGetNamedCalls("setUUID")), 1)
-        call = conn.mockGetNamedCalls("setUUID")[0]
-        self.assertEquals(call.getParam(0), uuid)
-        # abort
-        self.assertEquals(len(conn.mockGetNamedCalls('abort')), 1)
+        self.checkAcceptNodeIdentification(conn)
+        self.checkUUIDSet(conn, uuid)
+        self.checkAborted(conn)
 
     def test_09_handleRequestNodeIdentification6(self):
         # not new & accepted
@@ -416,14 +404,10 @@ server: 127.0.0.1:10020
             name=self.app.name,)
         # no new node
         self.assertEquals(len(self.app.nm.getNodeList()), count)
-        self.checkPacket(conn, packet_type=ACCEPT_NODE_IDENTIFICATION)
-        # uuid
-        self.assertEquals(len(conn.mockGetNamedCalls("setUUID")), 1)
-        call = conn.mockGetNamedCalls("setUUID")[0]
-        self.assertEquals(call.getParam(0), self.uuid)
         self.assertEquals(mn.getUUID(), self.uuid)
-        # abort
-        self.assertEquals(len(conn.mockGetNamedCalls('abort')), 0)
+        self.checkAcceptNodeIdentification(conn)
+        self.checkUUIDSet(conn, uuid)
+        self.checkNotAborted(conn)
 
     def test_10_handleAcceptNodeIdentification1(self):
         # client connection not implemented
@@ -605,7 +589,7 @@ server: 127.0.0.1:10020
         conn = Mock({ })
         packet = Packet(msg_type=ASK_TRANSACTION_INFORMATION)
         self.operation.handleAskTransactionInformation(conn, packet, INVALID_TID)
-        self.checkPacket(conn, packet_type=ERROR)
+        self.checkErrorPacket(conn)
 
     def test_18_handleAskTransactionInformation2(self):
         # answer
@@ -614,7 +598,7 @@ server: 127.0.0.1:10020
         dm = Mock({ "getTransaction": (INVALID_TID, 'user', 'desc', '', ), })
         self.app.dm = dm
         self.operation.handleAskTransactionInformation(conn, packet, INVALID_TID)
-        self.checkPacket(conn, packet_type=ANSWER_TRANSACTION_INFORMATION)
+        self.checkAnswerTransactionInformation(conn)
 
     def test_19_handleAskObjectPresent(self):
         # unexpected packet
@@ -663,12 +647,12 @@ server: 127.0.0.1:10020
         self.assertEquals(self.app.load_lock_dict[0], INVALID_TID)
         calls = self.app.dm.mockGetNamedCalls('storeTransaction')
         self.assertEquals(len(calls), 1)
-        self.checkPacket(conn, packet_type=NOTIFY_INFORMATION_LOCKED)
+        self.checkNotifyInformationLocked(conn, answered_packet=packet)
         # transaction not in transaction_dict -> KeyError
         transaction = Mock({ 'getObjectList': ((0, ), ), })
         conn = Mock({ 'isServerConnection': False, })
         self.operation.handleLockInformation(conn, packet, '\x01' * 8)
-        self.checkPacket(conn, packet_type=NOTIFY_INFORMATION_LOCKED)
+        self.checkNotifyInformationLocked(conn, answered_packet=packet)
 
     def test_23_handleUnlockInformation1(self):
         # reject server connection
@@ -701,7 +685,7 @@ server: 127.0.0.1:10020
         transaction = Mock({ 'getObjectList': ((0, ), ), })
         conn = Mock({ 'isServerConnection': False, })
         self.operation.handleLockInformation(conn, packet, '\x01' * 8)
-        self.checkPacket(conn, packet_type=NOTIFY_INFORMATION_LOCKED)
+        self.checkNotifyInformationLocked(conn, answered_packet=packet)
 
     def test_24_handleAskObject1(self):
         # delayed response
@@ -734,7 +718,7 @@ server: 127.0.0.1:10020
         self.assertEquals(calls[0].getParam(0), INVALID_OID)
         self.assertEquals(calls[0].getParam(1), None)
         self.assertEquals(calls[0].getParam(2), None)
-        self.checkPacket(conn, packet_type=ERROR)
+        self.checkErrorPacket(conn)
 
     def test_24_handleAskObject3(self):
         # object found => answer
@@ -747,7 +731,7 @@ server: 127.0.0.1:10020
             serial=INVALID_SERIAL, 
             tid=INVALID_TID)
         self.assertEquals(len(self.app.event_queue), 0)
-        self.checkPacket(conn, packet_type=ANSWER_OBJECT)
+        self.checkAnswerObject(conn)
 
     def test_25_handleAskTIDs1(self):
         # invalid offsets => error
@@ -773,7 +757,7 @@ server: 127.0.0.1:10020
         self.assertEquals(calls[0].getParam(1), 1)
         self.assertEquals(calls[0].getParam(2), 1)
         self.assertEquals(calls[0].getParam(3), [1, ])
-        self.checkPacket(conn, packet_type=ANSWER_TIDS)
+        self.checkAnswerTids(conn)
 
     def test_25_handleAskTIDs3(self):
         # invalid partition => answer usable partitions
@@ -791,7 +775,7 @@ server: 127.0.0.1:10020
         self.assertEquals(calls[0].getParam(1), 1)
         self.assertEquals(calls[0].getParam(2), 1)
         self.assertEquals(calls[0].getParam(3), [0, ])
-        self.checkPacket(conn, packet_type=ANSWER_TIDS)
+        self.checkAnswerTids(conn)
 
     def test_26_handleAskObjectHistory1(self):
         # invalid offsets => error
@@ -808,12 +792,12 @@ server: 127.0.0.1:10020
         conn = Mock({})
         self.app.dm = Mock({'getObjectHistory': None})
         self.operation.handleAskObjectHistory(conn, packet, INVALID_OID, 1, 2)
-        self.checkPacket(conn, packet_type=ANSWER_OBJECT_HISTORY)
+        self.checkAnswerObjectHistory(conn)
         # second case: not empty history
         conn = Mock({})
         self.app.dm = Mock({'getObjectHistory': [('', 0, ), ]})
         self.operation.handleAskObjectHistory(conn, packet, INVALID_OID, 1, 2)
-        self.checkPacket(conn, packet_type=ANSWER_OBJECT_HISTORY)
+        self.checkAnswerObjectHistory(conn)
 
     def test_27_handleAskStoreTransaction1(self):
         # no uuid => abort
@@ -840,7 +824,7 @@ server: 127.0.0.1:10020
         self.assertNotEquals(t, None)
         self.assertTrue(isinstance(t, TransactionInformation))
         self.assertEquals(t.getTransaction(), ((), '', '', ''))
-        self.checkPacket(conn, packet_type=ANSWER_STORE_TRANSACTION)
+        self.checkAnswerStoreTransaction(conn)
 
     def test_28_handleAskStoreObject1(self):
         # no uuid => abort
@@ -892,7 +876,7 @@ server: 127.0.0.1:10020
         self.app.store_lock_dict[INVALID_OID] = tid2
         self.operation.handleAskStoreObject(conn, packet, INVALID_OID, 
             INVALID_SERIAL, 0, 0, '', tid1)
-        self.checkPacket(conn, packet_type=ANSWER_STORE_OBJECT)
+        self.checkAnswerStoreObject(conn)
         self.assertEquals(self.app.store_lock_dict[INVALID_OID], tid2)
         # conflicting
         packet = conn.mockGetNamedCalls('answer')[0].getParam(0)
@@ -906,7 +890,7 @@ server: 127.0.0.1:10020
         self.assertEquals(self.app.store_lock_dict.get(INVALID_OID, None), None)
         self.operation.handleAskStoreObject(conn, packet, INVALID_OID, 
             INVALID_SERIAL, 0, 0, '', INVALID_TID)
-        self.checkPacket(conn, packet_type=ANSWER_STORE_OBJECT)
+        self.checkAnswerStoreObject(conn)
         self.assertEquals(self.app.store_lock_dict.get(INVALID_OID, None), None)
         # conflicting
         packet = conn.mockGetNamedCalls('answer')[0].getParam(0)
@@ -923,9 +907,8 @@ server: 127.0.0.1:10020
         self.assertEquals(len(t.getObjectList()), 1)
         object = t.getObjectList()[0]
         self.assertEquals(object, (INVALID_OID, 0, 0, ''))
-        self.checkPacket(conn, packet_type=ANSWER_STORE_OBJECT)
         # no conflict
-        packet = conn.mockGetNamedCalls('answer')[0].getParam(0)
+        packet = self.checkAnswerStoreObject(conn)
         self.assertFalse(unpack('!B8s8s', packet._body)[0])
 
     def test_29_handleAbortTransaction(self):
@@ -1026,7 +1009,7 @@ server: 127.0.0.1:10020
         self.assertEquals(calls[0].getParam(1), 1)
         self.assertEquals(calls[0].getParam(2), 1)
         self.assertEquals(calls[0].getParam(3), [1, ])
-        self.checkPacket(conn, packet_type=ANSWER_OIDS)
+        self.checkAnswerOids(conn)
 
     def test_25_handleAskOIDs3(self):
         # invalid partition => answer usable partitions
@@ -1044,7 +1027,7 @@ server: 127.0.0.1:10020
         self.assertEquals(calls[0].getParam(1), 1)
         self.assertEquals(calls[0].getParam(2), 1)
         self.assertEquals(calls[0].getParam(3), [0, ])
-        self.checkPacket(conn, packet_type=ANSWER_OIDS)
+        self.checkAnswerOids(conn)
 
 
 if __name__ == "__main__":
diff --git a/neo/storage/tests/testStorageVerificationHandler.py b/neo/storage/tests/testStorageVerificationHandler.py
index 31814e15561cd21dfec2794764be756c6009689d..279458424929892baaf1dead48b2d5661cfdebb3 100644
--- a/neo/storage/tests/testStorageVerificationHandler.py
+++ b/neo/storage/tests/testStorageVerificationHandler.py
@@ -229,12 +229,8 @@ server: 127.0.0.1:10020
         node = self.app.nm.getNodeByServer(conn.getAddress())
         self.assertEqual(node.getUUID(), uuid)
         self.assertEqual(node.getState(), RUNNING_STATE)
-        self.assertEquals(len(conn.mockGetNamedCalls("answer")), 1)
-        call = conn.mockGetNamedCalls("answer")[0]
-        packet = call.getParam(0)
-        self.assertTrue(isinstance(packet, Packet))
-        self.assertEquals(packet.getType(), ACCEPT_NODE_IDENTIFICATION)
-        self.assertEquals(len(conn.mockGetNamedCalls("abort")), 1)
+        self.checkAcceptNodeIdentification(conn)
+        self.checkAborted(conn)
         
         # notify a node declared as broken
         conn = Mock({"getUUID" : uuid,
@@ -262,13 +258,8 @@ server: 127.0.0.1:10020
         node = self.app.nm.getNodeByServer(conn.getAddress())
         self.assertEqual(node.getUUID(), uuid)
         self.assertEqual(node.getState(), RUNNING_STATE)
-        self.assertEquals(len(conn.mockGetNamedCalls("answer")), 1)
-        call = conn.mockGetNamedCalls("answer")[0]
-        packet = call.getParam(0)
-        self.assertTrue(isinstance(packet, Packet))
-        self.assertEquals(packet.getType(), ACCEPT_NODE_IDENTIFICATION)
-        self.assertEquals(len(conn.mockGetNamedCalls("abort")), 1)
-
+        self.checkAcceptNodeIdentification(conn)
+        self.checkAborted(conn)
 
     def test_06_handleAcceptNodeIdentification(self):
         uuid = self.getNewUUID()
@@ -318,11 +309,7 @@ server: 127.0.0.1:10020
                      "getAddress" : ("127.0.0.1", self.client_port),
                      "isServerConnection" : False})
         self.verification.handleAskLastIDs(conn, packet)
-        call = conn.mockGetNamedCalls("answer")[0]
-        packet = call.getParam(0)
-        self.assertTrue(isinstance(packet, Packet))
-        self.assertEquals(packet.getType(), ANSWER_LAST_IDS)
-        oid, tid, ptid = packet.decode()
+        oid, tid, ptid = self.checkAnswerLastIDs(conn, decode=True)
         self.assertEqual(oid, INVALID_OID)
         self.assertEqual(tid, INVALID_TID)
         self.assertEqual(ptid, self.app.ptid)
@@ -353,11 +340,8 @@ server: 127.0.0.1:10020
                 checksum, value) values (0, 4, 0, 0, '')""")
         self.app.dm.commit()
         self.verification.handleAskLastIDs(conn, packet)
-        call = conn.mockGetNamedCalls("answer")[0]
-        packet = call.getParam(0)
-        self.assertTrue(isinstance(packet, Packet))
-        self.assertEquals(packet.getType(), ANSWER_LAST_IDS)
-        oid, tid, ptid = packet.decode()
+        self.checkAnswerLastIDs(conn)
+        oid, tid, ptid = self.checkAnswerLastIDs(conn, decode=True)
         self.assertEqual(u64(oid), 5)
         self.assertEqual(u64(tid), 4)
         self.assertEqual(ptid, self.app.ptid)
@@ -379,11 +363,7 @@ server: 127.0.0.1:10020
                      "getAddress" : ("127.0.0.1", self.client_port),
                      "isServerConnection" : False})
         self.verification.handleAskPartitionTable(conn, packet, [1,])
-        call = conn.mockGetNamedCalls("answer")[0]
-        packet = call.getParam(0)
-        self.assertTrue(isinstance(packet, Packet))
-        self.assertEquals(packet.getType(), ANSWER_PARTITION_TABLE)
-        ptid, row_list = packet.decode()
+        ptid, row_list = self.checkAnswerPartitionTable(conn, decode=True)
         self.assertEqual(len(row_list), 1)
         offset, rows = row_list[0]
         self.assertEqual(offset, 1)
@@ -397,11 +377,7 @@ server: 127.0.0.1:10020
                      "getAddress" : ("127.0.0.1", self.client_port),
                      "isServerConnection" : False})
         self.verification.handleAskPartitionTable(conn, packet, [1,])
-        call = conn.mockGetNamedCalls("answer")[0]
-        packet = call.getParam(0)
-        self.assertTrue(isinstance(packet, Packet))
-        self.assertEquals(packet.getType(), ANSWER_PARTITION_TABLE)
-        ptid, row_list = packet.decode()
+        ptid, row_list = self.checkAnswerPartitionTable(conn, decode=True)
         self.assertEqual(len(row_list), 1)
         offset, rows = row_list[0]
         self.assertEqual(offset, 1)
@@ -527,11 +503,7 @@ server: 127.0.0.1:10020
                       'isServerConnection': False})
         packet = Packet(msg_type=ASK_UNFINISHED_TRANSACTIONS)
         self.verification.handleAskUnfinishedTransactions(conn, packet)
-        call = conn.mockGetNamedCalls("answer")[0]
-        packet = call.getParam(0)
-        self.assertTrue(isinstance(packet, Packet))
-        self.assertEquals(packet.getType(), ANSWER_UNFINISHED_TRANSACTIONS)
-        tid_list = packet.decode()[0]        
+        (tid_list, ) = self.checkAnswerUnfinishedTransactions(conn, decode=True)
         self.assertEqual(len(tid_list), 0)
 
         # client connection with some data
@@ -543,11 +515,7 @@ server: 127.0.0.1:10020
                       'isServerConnection': False})
         packet = Packet(msg_type=ASK_UNFINISHED_TRANSACTIONS)
         self.verification.handleAskUnfinishedTransactions(conn, packet)
-        call = conn.mockGetNamedCalls("answer")[0]
-        packet = call.getParam(0)
-        self.assertTrue(isinstance(packet, Packet))
-        self.assertEquals(packet.getType(), ANSWER_UNFINISHED_TRANSACTIONS)
-        tid_list = packet.decode()[0]        
+        (tid_list, ) = self.checkAnswerUnfinishedTransactions(conn, decode=True)
         self.assertEqual(len(tid_list), 1)
         self.assertEqual(u64(tid_list[0]), 4)
 
@@ -557,22 +525,14 @@ server: 127.0.0.1:10020
                       'isServerConnection': True })
         packet = Packet(msg_type=ASK_TRANSACTION_INFORMATION)
         self.verification.handleAskTransactionInformation(conn, packet, p64(1))
-        call = conn.mockGetNamedCalls("answer")[0]
-        packet = call.getParam(0)
-        self.assertTrue(isinstance(packet, Packet))
-        self.assertEquals(packet.getType(), ERROR)
-        code, message = packet.decode()     
+        code, message = self.checkErrorPacket(conn, decode=True)
         self.assertEqual(code, TID_NOT_FOUND_CODE)
         # ask from client conn with no data
         conn = Mock({ "getAddress" : ("127.0.0.1", self.master_port),
                       'isServerConnection': False })
         packet = Packet(msg_type=ASK_TRANSACTION_INFORMATION)
         self.verification.handleAskTransactionInformation(conn, packet, p64(1))
-        call = conn.mockGetNamedCalls("answer")[0]
-        packet = call.getParam(0)
-        self.assertTrue(isinstance(packet, Packet))
-        self.assertEquals(packet.getType(), ERROR)
-        code, message = packet.decode()     
+        code, message = self.checkErrorPacket(conn, decode=True)
         self.assertEqual(code, TID_NOT_FOUND_CODE)
 
         # input some tmp data and ask from client, must find both transaction
@@ -587,11 +547,7 @@ server: 127.0.0.1:10020
                       'isServerConnection': False })
         packet = Packet(msg_type=ASK_TRANSACTION_INFORMATION)
         self.verification.handleAskTransactionInformation(conn, packet, p64(1))
-        call = conn.mockGetNamedCalls("answer")[0]
-        packet = call.getParam(0)
-        self.assertTrue(isinstance(packet, Packet))
-        self.assertEquals(packet.getType(), ANSWER_TRANSACTION_INFORMATION)
-        tid, user, desc, ext, oid_list = packet.decode()
+        tid, user, desc, ext, oid_list = self.checkAnswerTransactionInformation(conn, decode=True)
         self.assertEqual(u64(tid), 1)
         self.assertEqual(user, 'u2')
         self.assertEqual(desc, 'd2')
@@ -603,11 +559,7 @@ server: 127.0.0.1:10020
                       'isServerConnection': False })
         packet = Packet(msg_type=ASK_TRANSACTION_INFORMATION)
         self.verification.handleAskTransactionInformation(conn, packet, p64(3))
-        call = conn.mockGetNamedCalls("answer")[0]
-        packet = call.getParam(0)
-        self.assertTrue(isinstance(packet, Packet))
-        self.assertEquals(packet.getType(), ANSWER_TRANSACTION_INFORMATION)
-        tid, user, desc, ext, oid_list = packet.decode()
+        tid, user, desc, ext, oid_list = self.checkAnswerTransactionInformation(conn, decode=True)
         self.assertEqual(u64(tid), 3)
         self.assertEqual(user, 'u1')
         self.assertEqual(desc, 'd1')
@@ -621,11 +573,7 @@ server: 127.0.0.1:10020
         # find the one in trans
         packet = Packet(msg_type=ASK_TRANSACTION_INFORMATION)
         self.verification.handleAskTransactionInformation(conn, packet, p64(1))
-        call = conn.mockGetNamedCalls("answer")[0]
-        packet = call.getParam(0)
-        self.assertTrue(isinstance(packet, Packet))
-        self.assertEquals(packet.getType(), ANSWER_TRANSACTION_INFORMATION)
-        tid, user, desc, ext, oid_list = packet.decode()
+        tid, user, desc, ext, oid_list = self.checkAnswerTransactionInformation(conn, decode=True)
         self.assertEqual(u64(tid), 1)
         self.assertEqual(user, 'u2')
         self.assertEqual(desc, 'd2')
@@ -637,11 +585,7 @@ server: 127.0.0.1:10020
                       'isServerConnection': True })
         packet = Packet(msg_type=ASK_TRANSACTION_INFORMATION)
         self.verification.handleAskTransactionInformation(conn, packet, p64(3))
-        call = conn.mockGetNamedCalls("answer")[0]
-        packet = call.getParam(0)
-        self.assertTrue(isinstance(packet, Packet))
-        self.assertEquals(packet.getType(), ERROR)
-        code, message = packet.decode()     
+        code, message = self.checkErrorPacket(conn, decode=True)     
         self.assertEqual(code, TID_NOT_FOUND_CODE)
 
     def test_15_handleAskObjectPresent(self):
@@ -655,11 +599,7 @@ server: 127.0.0.1:10020
                       'isServerConnection': False})
         packet = Packet(msg_type=ASK_OBJECT_PRESENT)
         self.verification.handleAskObjectPresent(conn, packet, p64(1), p64(2))
-        call = conn.mockGetNamedCalls("answer")[0]
-        packet = call.getParam(0)
-        self.assertTrue(isinstance(packet, Packet))
-        self.assertEquals(packet.getType(), ERROR)
-        code, message = packet.decode()     
+        code, message = self.checkErrorPacket(conn, decode=True)
         self.assertEqual(code, OID_NOT_FOUND_CODE)
 
         # client connection with some data
@@ -671,11 +611,7 @@ server: 127.0.0.1:10020
                       'isServerConnection': False})
         packet = Packet(msg_type=ASK_OBJECT_PRESENT)
         self.verification.handleAskObjectPresent(conn, packet, p64(1), p64(2))
-        call = conn.mockGetNamedCalls("answer")[0]
-        packet = call.getParam(0)
-        self.assertTrue(isinstance(packet, Packet))
-        self.assertEquals(packet.getType(), ANSWER_OBJECT_PRESENT)
-        oid, tid = packet.decode()
+        oid, tid = self.checkAnswerObjectPresent(conn, decode=True)
         self.assertEqual(u64(tid), 2)
         self.assertEqual(u64(oid), 1)
 
diff --git a/neo/tests/base.py b/neo/tests/base.py
index c33fecd0adbeea6175462270b16e69dfacd92001..2d756588daa53a3feefd69cdab10356fa9cc39b5 100644
--- a/neo/tests/base.py
+++ b/neo/tests/base.py
@@ -22,7 +22,7 @@ from neo import protocol
 class NeoTestBase(unittest.TestCase):
     """ Base class for neo tests, implements common checks """
 
-    # XXX: according to changes with namespaced UUIDs, it whould be better to 
+    # XXX: according to changes with namespaced UUIDs, it would be better to 
     # implement get<NodeType>UUID() methods 
     def getNewUUID(self):
         """ Return a valid UUID """
@@ -59,25 +59,65 @@ class NeoTestBase(unittest.TestCase):
         """ Check if the NotReadyError exception wxas raised """
         self.assertRaises(protocol.NotReadyError, method, *args, **kwargs)
 
+    def checkAborted(self, conn):
+        """ Ensure the connection was aborted """
+        self.assertEquals(len(conn.mockGetNamedCalls('abort')), 1)
+
+    def checkNotAborted(self, conn):
+        """ Ensure the connection was not aborted """
+        self.assertEquals(len(conn.mockGetNamedCalls('abort')), 0)
+
+    def checkClosed(self, conn):
+        """ Ensure the connection was closed """
+        self.assertEquals(len(conn.mockGetNamedCalls('close')), 1)
+
+    def checkNotClosed(self, conn):
+        """ Ensure the connection was not closed """
+        self.assertEquals(len(conn.mockGetNamedCalls('close')), 0)
+
     def checkNoPacketSent(self, conn):
-        # no packet should be sent
+        """ check if no packet were sent """
         self.assertEquals(len(conn.mockGetNamedCalls('notify')), 0)
         self.assertEquals(len(conn.mockGetNamedCalls('answer')), 0)
         self.assertEquals(len(conn.mockGetNamedCalls('ask')), 0)
 
+    def checkNoUUIDSet(self, conn):
+        """ ensure no UUID was set on the connection """
+        self.assertEquals(len(conn.mockGetNamedCalls('setUUID')), 0)
+
+    def checkUUIDSet(self, conn, uuid=None):
+        """ ensure no UUID was set on the connection """
+        calls = conn.mockGetNamedCalls('setUUID')
+        self.assertEquals(len(calls), 1)
+        if uuid is not None:
+            self.assertEquals(calls[0].getParam(0), uuid)
+
     # in check(Ask|Answer|Notify)Packet we return the packet so it can be used
     # in tests if more accurates checks are required
 
-    def checkAskPacket(self, conn, packet_type):
+    def checkErrorPacket(self, conn, decode=False):
+        """ Check if an error packet was answered """
+        calls = conn.mockGetNamedCalls("answer")
+        self.assertEquals(len(calls), 1)
+        packet = calls[0].getParam(0)
+        self.assertTrue(isinstance(packet, protocol.Packet))
+        self.assertEquals(packet.getType(), protocol.ERROR)
+        if decode:
+            return protocol.decode_table[packet.getType()](packet._body)
+        return packet
+
+    def checkAskPacket(self, conn, packet_type, decode=False):
         """ Check if an ask-packet with the right type is sent """
         calls = conn.mockGetNamedCalls('ask')
         self.assertEquals(len(calls), 1)
         packet = calls[0].getParam(0)
         self.assertTrue(isinstance(packet, protocol.Packet))
         self.assertEquals(packet.getType(), packet_type)
+        if decode:
+            return protocol.decode_table[packet.getType()](packet._body)
         return packet
 
-    def checkAnswerPacket(self, conn, packet_type, answered_packet=None):
+    def checkAnswerPacket(self, conn, packet_type, answered_packet=None, decode=False):
         """ Check if an answer-packet with the right type is sent """
         calls = conn.mockGetNamedCalls('answer')
         self.assertEquals(len(calls), 1)
@@ -88,61 +128,92 @@ class NeoTestBase(unittest.TestCase):
             a_packet = calls[0].getParam(1)
             self.assertEquals(a_packet, answered_packet)
             self.assertEquals(a_packet.getId(), answered_packet.getId())
+        if decode:
+            return protocol.decode_table[packet.getType()](packet._body)
         return packet
 
-    def checkNotifyPacket(self, conn, packet_type, packet_number=0):
+    def checkNotifyPacket(self, conn, packet_type, packet_number=0, decode=False):
         """ Check if a notify-packet with the right type is sent """
         calls = conn.mockGetNamedCalls('notify')
         self.assertTrue(len(calls) > packet_number)
         packet = calls[packet_number].getParam(0)
         self.assertTrue(isinstance(packet, protocol.Packet))
         self.assertEquals(packet.getType(), packet_type)
+        if decode:
+            return protocol.decode_table[packet.getType()](packet._body)
         return packet
 
-    def checkNotifyNodeInformation(self, conn, packet_number=0):
-        """ Check Notify Node Information message has been send"""
-        return self.checkNotifyPacket(conn, protocol.NOTIFY_NODE_INFORMATION,
-                packet_number)
-
-    def checkSendPartitionTable(self, conn, packet_number=0):
-        """ Check partition table has been send"""
-        return self.checkNotifyPacket(conn, protocol.SEND_PARTITION_TABLE, 
-                packet_number)
-
-    def checkStartOperation(self, conn, packet_number=0):
-        """ Check start operation message has been send"""
-        return self.checkNotifyPacket(conn, protocol.START_OPERATION, 
-                packet_number)
-
-    def checkNotifyTransactionFinished(self, conn, packet_number=0):
-        """ Check notifyTransactionFinished message has been send"""
-        return self.checkNotifyPacket(conn, protocol.NOTIFY_TRANSACTION_FINISHED,
-                packet_number)
-
-    def checkLockInformation(self, conn):
-        """ Check lockInformation message has been send"""
-        return self.checkAskPacket(conn, protocol.LOCK_INFORMATION)
-
-    def checkUnlockInformation(self, conn):
-        """ Check unlockInformation message has been send"""
-        return self.checkAskPacket(conn, protocol.UNLOCK_INFORMATION)
-
-    def checkAcceptNodeIdentification(self, conn, answered_packet=None):
-        """ Check Accept Node Identification has been answered """
-        return self.checkAnswerPacket(conn, protocol.ACCEPT_NODE_IDENTIFICATION, 
-                answered_packet)
-
-    def checkAnswerPrimaryMaster(self, conn, answered_packet=None):
-        """ Check Answer primaty master message has been send"""
-        return self.checkAnswerPacket(conn, protocol.ANSWER_PRIMARY_MASTER,
-                answered_packet)
-
-    def checkAnswerLastIDs(self, conn, packet_number=0):
-        """ Check answerLastIDs message has been send"""
-        return self.checkAnswerPacket(conn, protocol.ANSWER_LAST_IDS)
-
-    def checkAnswerUnfinishedTransactions(self, conn, packet_number=0):
-        """ Check answerUnfinishedTransactions message has been send"""
-        return self.checkAnswerPacket(conn,
-                protocol.ANSWER_UNFINISHED_TRANSACTIONS)
+    def checkNotifyNodeInformation(self, conn, **kw):
+        return self.checkNotifyPacket(conn, protocol.NOTIFY_NODE_INFORMATION, **kw)
+
+    def checkSendPartitionTable(self, conn, **kw):
+        return self.checkNotifyPacket(conn, protocol.SEND_PARTITION_TABLE, **kw)
+
+    def checkStartOperation(self, conn, **kw):
+        return self.checkNotifyPacket(conn, protocol.START_OPERATION, **kw)
+
+    def checkNotifyTransactionFinished(self, conn, **kw):
+        return self.checkNotifyPacket(conn, protocol.NOTIFY_TRANSACTION_FINISHED, **kw)
+
+    def checkNotifyInformationLocked(self, conn, **kw):
+        return self.checkAnswerPacket(conn, protocol.NOTIFY_INFORMATION_LOCKED, **kw)
+
+    def checkLockInformation(self, conn, **kw):
+        return self.checkAskPacket(conn, protocol.LOCK_INFORMATION, **kw)
+
+    def checkUnlockInformation(self, conn, **kw):
+        return self.checkAskPacket(conn, protocol.UNLOCK_INFORMATION, **kw)
+
+    def checkRequestNodeIdentification(self, conn, **kw):
+        return self.checkAskPacket(conn, protocol.REQUEST_NODE_IDENTIFICATION, **kw)
+
+    def checkAskPrimaryMaster(self, conn, **kw):
+        return self.checkAskPacket(conn, protocol.ASK_PRIMARY_MASTER)
+
+    def checkAskUnfinishedTransactions(self, conn, **kw):
+        return self.checkAskPacket(conn, protocol.ASK_UNFINISHED_TRANSACTIONS)
+
+    def checkAskTransactionInformation(self, conn, **kw):
+        return self.checkAskPacket(conn, protocol.ASK_TRANSACTION_INFORMATION, **kw)
+
+    def checkAskObjectPresent(self, conn, **kw):
+        return self.checkAskPacket(conn, protocol.ASK_OBJECT_PRESENT, **kw)
+
+    def checkAcceptNodeIdentification(self, conn, **kw):
+        return self.checkAnswerPacket(conn, protocol.ACCEPT_NODE_IDENTIFICATION, **kw)
+
+    def checkAnswerPrimaryMaster(self, conn, **kw):
+        return self.checkAnswerPacket(conn, protocol.ANSWER_PRIMARY_MASTER, **kw)
+
+    def checkAnswerLastIDs(self, conn, **kw):
+        return self.checkAnswerPacket(conn, protocol.ANSWER_LAST_IDS, **kw)
+
+    def checkAnswerUnfinishedTransactions(self, conn, **kw):
+        return self.checkAnswerPacket(conn, protocol.ANSWER_UNFINISHED_TRANSACTIONS, **kw)
+
+    def checkAnswerObject(self, conn, **kw):
+        return self.checkAnswerPacket(conn, protocol.ANSWER_OBJECT, **kw)
+
+    def checkAnswerTransactionInformation(self, conn, **kw):
+        return self.checkAnswerPacket(conn, protocol.ANSWER_TRANSACTION_INFORMATION, **kw)
+
+    def checkAnswerTids(self, conn, **kw):
+        return self.checkAnswerPacket(conn, protocol.ANSWER_TIDS, **kw)
+
+    def checkAnswerObjectHistory(self, conn, **kw):
+        return self.checkAnswerPacket(conn, protocol.ANSWER_OBJECT_HISTORY, **kw)
+
+    def checkAnswerStoreTransaction(self, conn, **kw):
+        return self.checkAnswerPacket(conn, protocol.ANSWER_STORE_TRANSACTION, **kw)
+
+    def checkAnswerStoreObject(self, conn, **kw):
+        return self.checkAnswerPacket(conn, protocol.ANSWER_STORE_OBJECT, **kw)
+
+    def checkAnswerOids(self, conn, **kw):
+        return self.checkAnswerPacket(conn, protocol.ANSWER_OIDS, **kw)
+
+    def checkAnswerPartitionTable(self, conn, **kw):
+        return self.checkAnswerPacket(conn, protocol.ANSWER_PARTITION_TABLE, **kw)
 
+    def checkAnswerObjectPresent(self, conn, **kw):
+        return self.checkAnswerPacket(conn, protocol.ANSWER_OBJECT_PRESENT, **kw)