diff --git a/tests/Actions.py b/tests/Actions.py
index 011d9c7..49f8b65 100644
--- a/tests/Actions.py
+++ b/tests/Actions.py
@@ -47,13 +47,13 @@
 
    
 
-class no_action_drop(basic.SimpleDataPlane):
+class NoAction(basic.SimpleDataPlane):
 
     """NoActionDrop : no action added to flow , drops the packet."""
 
     def runTest(self):
         
-        ac_logger.info("Running no_action_drop test")
+        ac_logger.info("Running No_Action test")
 
         of_ports = ac_port_map.keys()
         of_ports.sort()
@@ -98,14 +98,14 @@
                         'Packets not received on control plane')
 
 
-class announcement(basic.SimpleDataPlane):
+class Announcement(basic.SimpleDataPlane):
     
     """Announcement : Get all supported actions by the switch.
     Send OFPT_FEATURES_REQUEST to get features supported by sw."""
 
     def runTest(self):
 
-        ac_logger.info("Running announcement test")
+        ac_logger.info("Running Announcement test")
 
         ac_logger.info("Sending Features_Request")
         ac_logger.info("Expecting Features Reply with supported actions")
@@ -145,14 +145,14 @@
         ac_logger.info(supported_actions)
         
 
-class forward_all(basic.SimpleDataPlane):
+class ForwardAll(basic.SimpleDataPlane):
     
     """ForwardAll : Packet is sent to all dataplane ports
     except ingress port when output action.port = OFPP_ALL"""
 
     def runTest(self):
 
-        ac_logger.info("Running forward all test")
+        ac_logger.info("Running Forward_All test")
 
         of_ports = ac_port_map.keys()
         of_ports.sort()
@@ -199,14 +199,14 @@
                       self, ac_logger, ac_config)
 
 
-class forward_controller(basic.SimpleDataPlane):
+class ForwardController(basic.SimpleDataPlane):
     
     """ForwardController : Packet is sent to controller 
     output.port = OFPP_CONTROLLER"""
 
     def runTest(self):
         
-        ac_logger.info("Running forward_controller test")
+        ac_logger.info("Running Forward_Controller test")
 
         of_ports = ac_port_map.keys()
         of_ports.sort()
@@ -254,14 +254,14 @@
     
 
 
-class forward_local(basic.SimpleDataPlane):
+class ForwardLocal(basic.SimpleDataPlane):
    
     """ForwardLocal : Packet is sent to  OFPP_LOCAL port . 
         TBD : To verify packet recieved in the local networking stack of switch"""
 
     def runTest(self):
 
-        ac_logger.info("Running Forward Local test")
+        ac_logger.info("Running Forward_Local test")
 
         of_ports = ac_port_map.keys()
         of_ports.sort()
@@ -304,7 +304,7 @@
             #TBD: Verification of packets being recieved.
 
 
-class forward_flood(basic.SimpleDataPlane):
+class ForwardFlood(basic.SimpleDataPlane):
     
     """Forward:Flood : Packet is sent to all dataplane ports
     except ingress port when output action.port = OFPP_FLOOD 
@@ -313,7 +313,7 @@
     
     def runTest(self):
 
-        ac_logger.info("Running forward flood tests")
+        ac_logger.info("Running Forward_Flood test")
         of_ports = ac_port_map.keys()
         of_ports.sort()
         self.assertTrue(len(of_ports) > 1, "Not enough ports for test")
@@ -358,14 +358,14 @@
         receive_pkt_check(self.dataplane, pkt, yes_ports, [ingress_port],
                       self, ac_logger, ac_config)
 
-class forward_inport(basic.SimpleDataPlane):
+class ForwardInport(basic.SimpleDataPlane):
     
     """ ForwardInPort : Packet sent to virtual port IN_PORT
     If the output.port = OFPP.INPORT then the packet is sent to the input port itself"""
 
     def runTest(self):
 
-        ac_logger.info("Running forward_inport test")
+        ac_logger.info("Running Forward_Inport test")
 
         of_ports = ac_port_map.keys()
         of_ports.sort()
@@ -410,7 +410,7 @@
         receive_pkt_check(self.dataplane, pkt, yes_ports,set(of_ports).difference([ingress_port]),
                             self, ac_logger, ac_config)      
 
-class forward_table(basic.SimpleDataPlane):
+class ForwardTable(basic.SimpleDataPlane):
    
     """ForwardTable : Perform actions in flow table. Only for packet-out messages.
         If the output action.port in the packetout message = OFP.TABLE , then 
@@ -418,7 +418,7 @@
 
     def runTest(self):
 
-        ac_logger.info("Running Forward Table test")
+        ac_logger.info("Running Forward_Table test")
 
         of_ports = ac_port_map.keys()
         of_ports.sort()
@@ -451,13 +451,13 @@
         self.assertTrue(pkt is not None, 'Packet not received')
 
 
-class add_vlan_tag(basic.SimpleDataPlane):
+class AddvlanTag(basic.SimpleDataPlane):
     
     """AddVlanTag : Adds VLAN Tag to untagged packet."""
 
     def runTest(self):
 
-        ac_logger.info("Running add_vlan_tag test")
+        ac_logger.info("Running Add_vlan_tag test")
 
         of_ports = ac_port_map.keys()
         of_ports.sort()
@@ -491,13 +491,13 @@
         flow_match_test(self, ac_port_map, pkt=pkt, 
                         exp_pkt=exp_pkt, action_list=[vid_act])
 
-class modify_vlan_tag(basic.SimpleDataPlane):
+class ModifyVlanTag(basic.SimpleDataPlane):
 
     """ModifyVlanTag : Modifies VLAN Tag to tagged packet."""
     
     def runTest(self):
 
-        ac_logger.info("Running modify_vlan_tag test")
+        ac_logger.info("Running Modify_Vlan_Tag test")
 
         of_ports = ac_port_map.keys()
         of_ports.sort()
@@ -529,13 +529,13 @@
         flow_match_test(self, ac_port_map, pkt=pkt, exp_pkt=exp_pkt,
                         action_list=[vid_act])
         
-class vlan_prio_untagged(basic.SimpleDataPlane):
+class VlanPrio1(basic.SimpleDataPlane):
    
     """AddVlanPrioUntaggedPkt : Add VLAN priority to untagged packet."""
     
     def runTest(self):
 
-        ac_logger.info("Running vlan_prio_untagged test")
+        ac_logger.info("Running vlan_Prio_1 test")
 
         of_ports = ac_port_map.keys()
         of_ports.sort()
@@ -566,13 +566,13 @@
                                 action_list=[act])
 
 
-class modify_vlan_prio(basic.SimpleDataPlane):
+class VlanPrio2(basic.SimpleDataPlane):
     
     """ModifyVlanPrio : Modify VLAN priority to tagged packet."""
     
     def runTest(self):
         
-        ac_logger.info("Running modify_vlan_prio test")
+        ac_logger.info("Running Vlan_Prio_2 test")
 
         of_ports = ac_port_map.keys()
         of_ports.sort()
@@ -606,13 +606,13 @@
                         action_list=[vid_act])
 
 
-class modify_l2_src(basic.SimpleDataPlane):
+class ModifyL2Src(basic.SimpleDataPlane):
     
     """ModifyL2Src :Modify the source MAC address"""
 
     def runTest(self):
 
-        ac_logger.info("Running modify_l2_src test")
+        ac_logger.info("Running Modify_L2_Src test")
 
         of_ports = ac_port_map.keys()
         of_ports.sort()
@@ -641,13 +641,13 @@
                         action_list=acts, max_test=2)
 
 
-class modify_l2_dst(basic.SimpleDataPlane):
+class ModifyL2Dst(basic.SimpleDataPlane):
     
     """ModifyL2SDSt :Modify the dest MAC address"""
 
     def runTest(self):
 
-        ac_logger.info("Running modify_l2_dst test")
+        ac_logger.info("Running Modify_L2_Dst test")
 
         of_ports = ac_port_map.keys()
         of_ports.sort()
@@ -675,13 +675,13 @@
         flow_match_test(self, ac_port_map, pkt=pkt, exp_pkt=exp_pkt, 
                         action_list=acts, max_test=2)
 
-class modify_l3_src(basic.SimpleDataPlane):
+class ModifyL3Src(basic.SimpleDataPlane):
     
     """ModifyL3Src : Modify the source IP address of an IP packet """
 
     def runTest(self):
 
-        ac_logger.info("Running modify_l3_src test")
+        ac_logger.info("Running Modify_L3_Src test")
 
         of_ports = ac_port_map.keys()
         of_ports.sort()
@@ -709,13 +709,13 @@
         flow_match_test(self, ac_port_map, pkt=pkt, exp_pkt=exp_pkt, 
                         action_list=acts, max_test=2)
 
-class modify_l3_dst(basic.SimpleDataPlane):
+class ModifyL3Dst(basic.SimpleDataPlane):
     
     """ModifyL3Dst :Modify the dest IP address of an IP packet"""
     
     def runTest(self):
 
-        ac_logger.info("Running modify_l3_dst test")
+        ac_logger.info("Running Modify_L3_Dst test")
 
         of_ports = ac_port_map.keys()
         of_ports.sort()
@@ -744,13 +744,13 @@
                         action_list=acts, max_test=2)
 
 
-class modify_l4_src(basic.SimpleDataPlane):
+class ModifyL4Src(basic.SimpleDataPlane):
     
     """ModifyL4Src : Modify the source TCP port of a TCP packet"""
     
     def runTest(self):
 
-        ac_logger.info("Running modify_l4_src test")
+        ac_logger.info("Running Modify_L4_Src test")
 
         of_ports = ac_port_map.keys()
         of_ports.sort()
@@ -778,13 +778,13 @@
         flow_match_test(self, ac_port_map, pkt=pkt, exp_pkt=exp_pkt, 
                         action_list=acts, max_test=2)
 
-class modify_l4_dst(basic.SimpleDataPlane):
+class ModifyL4Dst(basic.SimpleDataPlane):
     
-    """ ModifyL4Dst: Modify the dest TCP port of a TCP packet (TP1)"""
+    """ ModifyL4Dst: Modify the dest TCP port of a TCP packet """
 
     def runTest(self):
 
-        ac_logger.info("Running modify_l4_dst test")
+        ac_logger.info("Running Modify_L4_Dst test")
 
         of_ports = ac_port_map.keys()
         of_ports.sort()
@@ -812,13 +812,13 @@
         flow_match_test(self, ac_port_map, pkt=pkt, exp_pkt=exp_pkt, 
                         action_list=acts, max_test=2)
 
-class modify_tos(basic.SimpleDataPlane):
+class ModifyTos(basic.SimpleDataPlane):
     
     """ModifyTOS :Modify the IP type of service of an IP packet"""
    
     def runTest(self):
 
-        ac_logger.info("Running modify_tos test")
+        ac_logger.info("Running Modify_Tos test")
 
         of_ports = ac_port_map.keys()
         of_ports.sort()
diff --git a/tests/Detailed_Contr_Sw_Messages.py b/tests/Detailed_Contr_Sw_Messages.py
index 30c72d9..158f787 100644
--- a/tests/Detailed_Contr_Sw_Messages.py
+++ b/tests/Detailed_Contr_Sw_Messages.py
@@ -40,7 +40,7 @@
     cs_config = config
 
 
-class overlap_checking(basic.SimpleDataPlane):
+class OverlapChecking(basic.SimpleDataPlane):
     
     """Verify that if overlap check flag is set in the flow entry and an overlapping flow is inserted then an error 
         is generated and switch refuses flow entry"""
@@ -101,7 +101,7 @@
                                'Error Message code is not overlap')
 
 
-class no_overlap_checking(basic.SimpleDataPlane):
+class NoOverlapChecking(basic.SimpleDataPlane):
 
     """Verify that without overlap check flag set, overlapping flows can be created."""  
     
@@ -133,7 +133,7 @@
         Verify_TableStats(self,active_entries=2)
 
 
-class identical_flows(basic.SimpleDataPlane):
+class IdenticalFlows(basic.SimpleDataPlane):
     
     """Verify that adding two identical flows overwrites the existing one and clears counters"""
 
@@ -174,13 +174,13 @@
         Verify_FlowStats(self,match,byte_count=0,packet_count=0)
 
    
-class emer_flow_with_timeout(basic.SimpleProtocol): 
+class EmerFlowTimeout(basic.SimpleProtocol): 
 
     """Timeout values are not allowed for emergency flows"""
 
     def runTest(self):
 
-        cs_logger.info("Running Emergency flow with timeout values test")
+        cs_logger.info("Running Emergency_Flow_Timeout test")
         
         of_ports = cs_port_map.keys()
         of_ports.sort()
@@ -226,7 +226,7 @@
                                'Error Message code is not bad emergency timeout')
 
 
-class missing_modify_add(basic.SimpleDataPlane):
+class MissingModifyAdd(basic.SimpleDataPlane):
 
     """If a modify does not match an existing flow, the flow gets added """
     
@@ -266,7 +266,7 @@
         Verify_TableStats(self,active_entries=1)
 
 
-class modify_action(basic.SimpleDataPlane):
+class ModifyAction(basic.SimpleDataPlane):
 
     """A modified flow preserves counters"""
     
@@ -304,7 +304,7 @@
         Verify_FlowStats(self,match,byte_count=(2*len(str(pkt))),packet_count=2)
 
 
-class strict_mdify_action(basic.SimpleDataPlane):
+class StrictModifyAction(basic.SimpleDataPlane):
 
     """Strict Modify Flow also changes action preserves counters"""
 
@@ -348,7 +348,7 @@
         Verify_FlowStats(self,match,byte_count=(2*len(str(pkt))),packet_count=2)
 
 
-class delete_nonexisting_flow(basic.SimpleDataPlane):
+class DeleteNonexistingFlow(basic.SimpleDataPlane):
     
     """Request deletion of non-existing flow"""
     
@@ -382,7 +382,7 @@
 
 
         
-class send_flow_rem(basic.SimpleDataPlane):
+class SendFlowRem(basic.SimpleDataPlane):
     
     """Check deletion of flows happens and generates messages as configured.
     If Send Flow removed message Flag is set in the flow entry, the flow deletion of that respective flow should generate the flow removed message, 
@@ -390,7 +390,7 @@
 
     def runTest(self):
 
-        cs_logger.info("Running Send Flow removed message test begins")
+        cs_logger.info("Running Send_Flow_Rem test ")
 
         of_ports = cs_port_map.keys()
         of_ports.sort()
@@ -443,14 +443,14 @@
                         'Did not receive flow removed message for this flow')
 
 
-class delete_emer_flow(basic.SimpleProtocol):
+class DeleteEmerFlow(basic.SimpleProtocol):
 
     """Delete emergency flow and verify no message is generated.An emergency flow deletion will not generate flow-removed messages even if 
     Send Flow removed message flag was set during the emergency flow entry"""
 
     def runTest(self):
 
-        cs_logger.info("Running Delete Emergency flow")
+        cs_logger.info("Running Delete_Emer_Flow")
 
         of_ports = cs_port_map.keys()
         of_ports.sort()
@@ -486,14 +486,14 @@
                         'Test Failed ')
 
 
-class delete_strict_nonstrict(basic.SimpleDataPlane):
+class StrictVsNonstrict(basic.SimpleDataPlane):
 
     """Delete and verify strict and non-strict behaviors
     This test compares the behavior of delete strict and non-strict"""
 
     def runTest(self):
         
-        cs_logger.info("Delete_Strict_NonStrict test begins")
+        cs_logger.info("Strict_Vs_Nonstrict test begins")
         
         of_ports = cs_port_map.keys()
         of_ports.sort()
@@ -573,14 +573,14 @@
 
         
    
-class delete_with_outport(basic.SimpleDataPlane):
+class Outport1(basic.SimpleDataPlane):
 
     """Delete flows filtered by action outport.If the out_port field in the delete command contains a value other than OFPP_NONE,
     it introduces a constraint when matching. This constraint is that the rule must contain an output action directed at that port."""
 
     def runTest(self):
         
-        cs_logger.info("Delete_Filter_Outport test begins")
+        cs_logger.info("Outport1 test begins")
 
         of_ports = cs_port_map.keys()
         of_ports.sort()
@@ -632,7 +632,7 @@
         Verify_TableStats(self,active_entries=0)
 
 
-class idle_timeout(basic.SimpleDataPlane):
+class IdleTimeout(basic.SimpleDataPlane):
 
     """ Verify that idle timeout is implemented"""
 
@@ -676,13 +676,13 @@
                          'Flow was not alive for 1 sec')
 
 
-class add_modify_with_outport(basic.SimpleDataPlane):
+class Outport2(basic.SimpleDataPlane):
 
     """Add, modify flows with outport set. This field is ignored by ADD, MODIFY, and MODIFY STRICT messages."""
 
     def runTest(self):
         
-        cs_logger.info("Running Add_Modify_With_Outport ")
+        cs_logger.info("Running Outport2 test ")
 
         of_ports = cs_port_map.keys()
         of_ports.sort()
@@ -716,13 +716,13 @@
 
 
 
-class hard_timeout(basic.SimpleDataPlane):
+class HardTimeout(basic.SimpleDataPlane):
 
     """ Verify that hard timeout is implemented """
 
     def runTest(self):
 
-        cs_logger.info("Running Idle_Timeout test ")
+        cs_logger.info("Running Hard_Timeout test ")
         
         of_ports = cs_port_map.keys()
         of_ports.sort()
@@ -760,7 +760,7 @@
                          'Flow was not alive for 1 sec')
 
 
-class flow_timeout(basic.SimpleDataPlane):
+class FlowTimeout(basic.SimpleDataPlane):
   
     """Verify that Flow removed messages are generated as expected
     Flow removed messages being generated when flag is set, is already tested in the above tests 
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")
