diff --git a/src/main/java/net/floodlightcontroller/core/util/SingletonTask.java b/src/main/java/net/floodlightcontroller/core/util/SingletonTask.java
index 2338acc..a7cdc0e 100644
--- a/src/main/java/net/floodlightcontroller/core/util/SingletonTask.java
+++ b/src/main/java/net/floodlightcontroller/core/util/SingletonTask.java
@@ -102,8 +102,8 @@
      * is used to manage the state of the task execution and can be shared
      * by more than one instance of the runnable.
      *
-     * @param context
-     * @param Task
+     * @param ses
+     * @param task
      */
     public SingletonTask(ScheduledExecutorService ses,
                          Runnable task) {
@@ -160,4 +160,4 @@
                 ses.schedule(stw, delay, unit);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/src/main/java/net/onrc/onos/core/devicemanager/OnosDevice.java b/src/main/java/net/onrc/onos/core/devicemanager/OnosDevice.java
index 6b96698..d0a5ee4 100644
--- a/src/main/java/net/onrc/onos/core/devicemanager/OnosDevice.java
+++ b/src/main/java/net/onrc/onos/core/devicemanager/OnosDevice.java
@@ -79,7 +79,6 @@
      *
      * @param macAddress
      * @param vlan
-     * @param ipv4Address
      * @param switchDPID
      * @param switchPort
      * @param lastSeenTimestamp
diff --git a/src/main/java/net/onrc/onos/core/flowprogrammer/FlowPusher.java b/src/main/java/net/onrc/onos/core/flowprogrammer/FlowPusher.java
index 68da549..fb7203b 100644
--- a/src/main/java/net/onrc/onos/core/flowprogrammer/FlowPusher.java
+++ b/src/main/java/net/onrc/onos/core/flowprogrammer/FlowPusher.java
@@ -975,7 +975,7 @@
      *
      * @param sw
      * @param msg
-     * @param flowEntryId
+     * @param priority
      * @return
      */
     protected boolean addMessageImpl(IOFSwitch sw, OFMessage msg, MsgPriority priority) {
diff --git a/src/main/java/net/onrc/onos/core/flowprogrammer/FlowSynchronizer.java b/src/main/java/net/onrc/onos/core/flowprogrammer/FlowSynchronizer.java
index ab3776c..7ec93f6 100644
--- a/src/main/java/net/onrc/onos/core/flowprogrammer/FlowSynchronizer.java
+++ b/src/main/java/net/onrc/onos/core/flowprogrammer/FlowSynchronizer.java
@@ -364,7 +364,7 @@
          * Returns true of the object is another Flow Entry ID with
          * the same value; otherwise, returns false.
          *
-         * @param Object to compare
+         * @param obj to compare
          * @return true if the object has the same Flow Entry ID.
          */
         @Override
diff --git a/src/main/java/net/onrc/onos/core/intent/FlowEntry.java b/src/main/java/net/onrc/onos/core/intent/FlowEntry.java
index 022cecf..80b9849 100644
--- a/src/main/java/net/onrc/onos/core/intent/FlowEntry.java
+++ b/src/main/java/net/onrc/onos/core/intent/FlowEntry.java
@@ -58,7 +58,7 @@
     /***
      * Sets hard timeout value in seconds.
      *
-     * @param the hard timeout value in seconds
+     * @param hardTimeout hard timeout value in seconds
      */
     public void setHardTimeout(int hardTimeout) {
         this.hardTimeout = hardTimeout;
@@ -67,7 +67,7 @@
     /***
      * Sets idle timeout value in seconds.
      *
-     * @param the idle timeout value in seconds
+     * @param idleTimeout idle timeout value in seconds
      */
     public void setIdleTimeout(int idleTimeout) {
         this.idleTimeout = idleTimeout;
@@ -85,7 +85,7 @@
     /***
      * Sets flowEntryId.
      *
-     * @param the flowEntryId to be set in cookie
+     * @param flowEntryId flowEntryId to be set in cookie
      */
     public void setFlowEntryId(long flowEntryId) {
         this.flowEntryId = flowEntryId;
diff --git a/src/main/java/net/onrc/onos/core/packet/DHCP.java b/src/main/java/net/onrc/onos/core/packet/DHCP.java
index 77842ae..61b0335 100644
--- a/src/main/java/net/onrc/onos/core/packet/DHCP.java
+++ b/src/main/java/net/onrc/onos/core/packet/DHCP.java
@@ -284,7 +284,7 @@
     /**
      * Gets a specific DHCP option parameter.
      *
-     * @param opetionCode The option code to get
+     * @param optionCode The option code to get
      * @return The value of the option if it exists, null otherwise
      */
     public DHCPOption getOption(DHCPOptionCode optionCode) {
diff --git a/src/main/java/net/onrc/onos/core/util/FlowEntryId.java b/src/main/java/net/onrc/onos/core/util/FlowEntryId.java
index 542a19d..4900890 100644
--- a/src/main/java/net/onrc/onos/core/util/FlowEntryId.java
+++ b/src/main/java/net/onrc/onos/core/util/FlowEntryId.java
@@ -79,7 +79,7 @@
      * Returns true of the object is another Flow Entry ID with
      * the same value; otherwise, returns false.
      *
-     * @param Object to compare
+     * @param obj to compare
      */
     @Override
     public boolean equals(Object obj) {
diff --git a/src/main/java/net/onrc/onos/core/util/FlowPath.java b/src/main/java/net/onrc/onos/core/util/FlowPath.java
index 2314dfc..5cee39c 100644
--- a/src/main/java/net/onrc/onos/core/util/FlowPath.java
+++ b/src/main/java/net/onrc/onos/core/util/FlowPath.java
@@ -334,7 +334,7 @@
      * Compares this object with the specified object for order.
      * NOTE: The test is based on the Flow ID.
      *
-     * @param o the object to be compared.
+     * @param f the object to be compared.
      * @return a negative integer, zero, or a positive integer as this object
      * is less than, equal to, or greater than the specified object.
      */
