diff --git a/drivers/src/main/java/org/onosproject/driver/handshaker/CorsaSwitchHandShaker.java b/drivers/src/main/java/org/onosproject/driver/handshaker/CorsaSwitchHandshaker.java
similarity index 91%
rename from drivers/src/main/java/org/onosproject/driver/handshaker/CorsaSwitchHandShaker.java
rename to drivers/src/main/java/org/onosproject/driver/handshaker/CorsaSwitchHandshaker.java
index f4a45b8..376b398 100644
--- a/drivers/src/main/java/org/onosproject/driver/handshaker/CorsaSwitchHandShaker.java
+++ b/drivers/src/main/java/org/onosproject/driver/handshaker/CorsaSwitchHandshaker.java
@@ -33,9 +33,9 @@
 /**
  * Corsa switch handshaker.
  */
-public class CorsaSwitchHandShaker extends AbstractOpenFlowSwitch {
+public class CorsaSwitchHandshaker extends AbstractOpenFlowSwitch {
 
-    private AtomicBoolean handShakeComplete = new AtomicBoolean(false);
+    private AtomicBoolean handshakeComplete = new AtomicBoolean(false);
 
     private int barrierXid;
 
@@ -72,7 +72,7 @@
         if (!startDriverHandshakeCalled) {
             throw new SwitchDriverSubHandshakeAlreadyStarted();
         }
-        return handShakeComplete.get();
+        return handshakeComplete.get();
     }
 
     @Override
@@ -80,12 +80,12 @@
         if (!startDriverHandshakeCalled) {
             throw new SwitchDriverSubHandshakeNotStarted();
         }
-        if (handShakeComplete.get()) {
+        if (handshakeComplete.get()) {
             throw new SwitchDriverSubHandshakeCompleted(m);
         }
         if (m.getType() == OFType.BARRIER_REPLY &&
                 m.getXid() == barrierXid) {
-            handShakeComplete.set(true);
+            handshakeComplete.set(true);
         }
     }
 
diff --git a/drivers/src/main/java/org/onosproject/driver/handshaker/DefaultSwitchHandShaker.java b/drivers/src/main/java/org/onosproject/driver/handshaker/DefaultSwitchHandshaker.java
similarity index 96%
rename from drivers/src/main/java/org/onosproject/driver/handshaker/DefaultSwitchHandShaker.java
rename to drivers/src/main/java/org/onosproject/driver/handshaker/DefaultSwitchHandshaker.java
index 671acda..fb78944 100644
--- a/drivers/src/main/java/org/onosproject/driver/handshaker/DefaultSwitchHandShaker.java
+++ b/drivers/src/main/java/org/onosproject/driver/handshaker/DefaultSwitchHandshaker.java
@@ -28,7 +28,7 @@
 /**
  * Default driver to fallback on if no other driver is available.
  */
-public class DefaultSwitchHandShaker extends AbstractOpenFlowSwitch {
+public class DefaultSwitchHandshaker extends AbstractOpenFlowSwitch {
 
     private static final int LOWEST_PRIORITY = 0;
 
diff --git a/drivers/src/main/java/org/onosproject/driver/handshaker/NiciraSwitchHandShaker.java b/drivers/src/main/java/org/onosproject/driver/handshaker/NiciraSwitchHandshaker.java
similarity index 93%
rename from drivers/src/main/java/org/onosproject/driver/handshaker/NiciraSwitchHandShaker.java
rename to drivers/src/main/java/org/onosproject/driver/handshaker/NiciraSwitchHandshaker.java
index 467cc9b..4f61361 100644
--- a/drivers/src/main/java/org/onosproject/driver/handshaker/NiciraSwitchHandShaker.java
+++ b/drivers/src/main/java/org/onosproject/driver/handshaker/NiciraSwitchHandshaker.java
@@ -21,7 +21,7 @@
 /**
  * Default driver to fallback on if no other driver is available.
  */
-public class NiciraSwitchHandShaker extends DefaultSwitchHandShaker {
+public class NiciraSwitchHandshaker extends DefaultSwitchHandshaker {
 
     @Override
     public Boolean supportNxRole() {
diff --git a/drivers/src/main/resources/onos-drivers.xml b/drivers/src/main/resources/onos-drivers.xml
index 8e72b40a..8be7812 100644
--- a/drivers/src/main/resources/onos-drivers.xml
+++ b/drivers/src/main/resources/onos-drivers.xml
@@ -20,12 +20,12 @@
         <behaviour api="org.onosproject.net.behaviour.Pipeliner"
                    impl="org.onosproject.driver.pipeline.DefaultSingleTablePipeline"/>
         <behaviour api="org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver"
-                   impl="org.onosproject.driver.handshaker.DefaultSwitchHandShaker"/>
+                   impl="org.onosproject.driver.handshaker.DefaultSwitchHandshaker"/>
     </driver>
     <driver name="ovs" extends="default"
             manufacturer="Nicira, Inc\." hwVersion="Open vSwitch" swVersion="2\..*">
         <behaviour api="org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver"
-                   impl="org.onosproject.driver.handshaker.NiciraSwitchHandShaker"/>
+                   impl="org.onosproject.driver.handshaker.NiciraSwitchHandshaker"/>
     </driver>
     <driver name="ovs-corsa" extends="ovs"
             manufacturer="Corsa" hwVersion="emulation" swVersion="0.0.0">
@@ -55,7 +55,7 @@
         <behaviour api="org.onosproject.net.behaviour.Pipeliner"
                    impl="org.onosproject.driver.pipeline.CorsaPipeline"/>
         <behaviour api="org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver"
-                   impl="org.onosproject.driver.handshaker.CorsaSwitchHandShaker"/>
+                   impl="org.onosproject.driver.handshaker.CorsaSwitchHandshaker"/>
     </driver>
     <driver name="ofdpa" extends="default"
             manufacturer="Broadcom Corp." hwVersion="OF-DPA 1.0" swVersion="OF-DPA 1.0">
