diff --git a/tests/Openflow_Protocol_Messages.py b/tests/Openflow_Protocol_Messages.py
index 2e37058..2bc934e 100644
--- a/tests/Openflow_Protocol_Messages.py
+++ b/tests/Openflow_Protocol_Messages.py
@@ -42,7 +42,7 @@
     of_config = config
 
 
-class features_request(basic.SimpleProtocol): 
+class FeaturesRequest(basic.SimpleProtocol): 
 
     """Verify Features_Request-Reply is implemented 
     a) Send OFPT_FEATURES_REQUEST
@@ -71,7 +71,7 @@
                         'Did not receive Features Reply')
 
 
-class configuration_request(basic.SimpleProtocol):
+class ConfigurationRequest(basic.SimpleProtocol):
     
     """Check basic Get Config request is implemented
     a) Send OFPT_GET_CONFIG_REQUEST
@@ -100,7 +100,7 @@
         self.assertTrue(response is not None, 
                         'Did not receive OFPT_GET_CONFIG_REPLY')
 
-class modify_state_add(basic.SimpleProtocol):
+class ModifyStateAdd(basic.SimpleProtocol):
     
     """Check basic Flow Add request is implemented
     a) Send  OFPT_FLOW_MOD , command = OFPFC_ADD 
@@ -127,7 +127,7 @@
         Verify_TableStats(self,active_entries=1)
 
 
-class modify_state_delete(basic.SimpleProtocol):
+class ModifyStateDelete(basic.SimpleProtocol):
     
     """Check Basic Flow Delete request is implemented
     a) Send OFPT_FLOW_MOD, command = OFPFC_ADD
@@ -163,7 +163,7 @@
 
       
 
-class modify_state_modify(basic.SimpleDataPlane):
+class ModifyStateModify(basic.SimpleDataPlane):
     
     """Verify basic Flow Modify request is implemented
     a) Send OFPT_FLOW_MOD, command = OFPFC_ADD, Action A 
@@ -172,7 +172,7 @@
 
     def runTest(self):
 
-        of_logger.info("Running Modify_State_modify test")
+        of_logger.info("Running Modify_State_Modify test")
 
         of_ports = of_port_map.keys()
         of_ports.sort()
@@ -194,7 +194,7 @@
         SendPacket(self, pkt, of_ports[0],of_ports[2])
                        
 
-class read_state(basic.SimpleProtocol):
+class ReadState(basic.SimpleProtocol):
     
     """Test that a basic Read state request (like flow_stats_get request) does not generate an error
     a) Send OFPT_FLOW_MOD, command = OFPFC_ADD
@@ -221,7 +221,7 @@
         #Verify Flow_Stats request does not generate errors
         Verify_FlowStats(self,match)
         
-class send_packet(basic.SimpleDataPlane):
+class SendPacket(basic.SimpleDataPlane):
     
     """Test packet out function
     a) Send packet out message for each dataplane port.
@@ -278,7 +278,7 @@
                                     'Response packet does not match send packet')
 
         
-class packet_in(basic.SimpleDataPlane):
+class PacketIn(basic.SimpleDataPlane):
     
     """Test basic packet_in function
     a) Send a simple tcp packet to a dataplane port, without any flow-entry 
@@ -312,7 +312,7 @@
                                'Packet in event is not sent to the controller') 
 
 
-class hello(basic.SimpleDataPlane):
+class Hello(basic.SimpleDataPlane):
     
     """Test Hello messages are implemented
     a) Create Hello messages from controller
@@ -336,7 +336,7 @@
 
 
 
-class echo_without_body(basic.SimpleProtocol):
+class EchoWithoutBody(basic.SimpleProtocol):
     
     """Test basic echo-reply is implemented
     a)  Send echo-request from the controller side, note echo body is empty here.
@@ -344,7 +344,7 @@
     
     def runTest(self):
 
-        of_logger.info("Running EchoWithoutBody test")
+        of_logger.info("Running Echo_Without_Body test")
 
         of_logger.info("Sending Echo Request")
         of_logger.info("Expecting a Echo Reply with version--1.0.0 and same xid")
@@ -359,7 +359,7 @@
         self.assertEqual(len(response.data), 0, 'response data non-empty')
 
 
-class barrier_request_reply(basic.SimpleProtocol):
+class BarrierRequestReply(basic.SimpleProtocol):
 
     """ Check basic Barrier request is implemented
     a) Send OFPT_BARRIER_REQUEST
@@ -367,7 +367,7 @@
     
     def runTest(self):
 
-        of_logger.info("Running BarrierRequestReply test")
+        of_logger.info("Running Barrier_Request_Reply test")
 
         of_logger.info("Sending Barrier Request")
         of_logger.info("Expecting a Barrier Reply with same xid")
