diff --git a/src/main/java/net/onrc/onos/core/intent/ConstrainedShortestPathIntent.java b/src/main/java/net/onrc/onos/core/intent/ConstrainedShortestPathIntent.java
index a91cb14..b7f7d61 100644
--- a/src/main/java/net/onrc/onos/core/intent/ConstrainedShortestPathIntent.java
+++ b/src/main/java/net/onrc/onos/core/intent/ConstrainedShortestPathIntent.java
@@ -27,12 +27,10 @@
      * @param bandwidth   bandwidth which should be allocated for the path.
      *                    If 0, no intent for bandwidth allocation (best effort).
      */
-    // CHECKSTYLE:OFF suppress the warning about too many parameters
     public ConstrainedShortestPathIntent(String id,
                                          long srcSwitch, long srcPort, long srcMac,
                                          long dstSwitch, long dstPort, long dstMac,
                                          double bandwidth) {
-    // CHECKSTYLE:ON
         super(id, srcSwitch, srcPort, srcMac, dstSwitch, dstPort, dstMac);
         this.bandwidth = bandwidth;
     }
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 2307e65..53a8c5a 100644
--- a/src/main/java/net/onrc/onos/core/intent/FlowEntry.java
+++ b/src/main/java/net/onrc/onos/core/intent/FlowEntry.java
@@ -47,12 +47,10 @@
      * @param dstIpAddress destination IP address
      * @param operator OpenFlow operation/command (add, remove, etc.)
      */
-    // CHECKSTYLE:OFF suppress the warning about too many parameters
     public FlowEntry(long sw, long srcPort, long dstPort,
             MACAddress srcMac, MACAddress dstMac,
             int srcIpAddress, int dstIpAddress,
             Operator operator) {
-        // CHECKSTYLE:ON
         this.sw = sw;
         this.match = new Match(sw, srcPort, srcMac, dstMac, srcIpAddress, dstIpAddress);
         this.actions = new HashSet<Action>();
diff --git a/src/main/java/net/onrc/onos/core/intent/ShortestPathIntent.java b/src/main/java/net/onrc/onos/core/intent/ShortestPathIntent.java
index 2e2ca8c..1361baa 100644
--- a/src/main/java/net/onrc/onos/core/intent/ShortestPathIntent.java
+++ b/src/main/java/net/onrc/onos/core/intent/ShortestPathIntent.java
@@ -64,11 +64,9 @@
      * @param dstMac Destination Host MAC Address
      * @param dstIp Destination IP Address
      */
-    // CHECKSTYLE:OFF suppress the warning about too many parameters
     public ShortestPathIntent(String id,
             long srcSwitch, long srcPort, long srcMac, int srcIp,
-            long dstSwitch, long dstPort, long dstMac, int dstIp ) {
-        // CHECKSTYLE:ON
+            long dstSwitch, long dstPort, long dstMac, int dstIp) {
         super(id);
         this.srcSwitchDpid = srcSwitch;
         this.srcPortNumber = srcPort;
diff --git a/src/main/java/net/onrc/onos/core/matchaction/match/PacketMatch.java b/src/main/java/net/onrc/onos/core/matchaction/match/PacketMatch.java
index 487f7a7..c9b1f9d 100644
--- a/src/main/java/net/onrc/onos/core/matchaction/match/PacketMatch.java
+++ b/src/main/java/net/onrc/onos/core/matchaction/match/PacketMatch.java
@@ -39,12 +39,10 @@
      * @param srcTcpPort the source TCP port number
      * @param dstTcpPort the destination TCP port number
      */
-    // CHECKSTYLE:OFF suppress the warning about too many parameters
     PacketMatch(MACAddress srcMac, MACAddress dstMac,
             Short etherType,
             IPv4Net srcIp, IPv4Net dstIp, Byte ipProto,
             Short srcTcpPort, Short dstTcpPort) {
-        // CHECKSTYLE:ON
         this.srcMac = srcMac;
         this.dstMac = dstMac;
         this.etherType = etherType;
diff --git a/src/main/java/net/onrc/onos/core/topology/TopologyEvents.java b/src/main/java/net/onrc/onos/core/topology/TopologyEvents.java
index e2054f5..b69a409 100644
--- a/src/main/java/net/onrc/onos/core/topology/TopologyEvents.java
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyEvents.java
@@ -58,7 +58,6 @@
      * @param addedHostEvents the collection of added Host Events.
      * @param removedHostEvents the collection of removed Host Events.
      */
-    // CHECKSTYLE:OFF suppress the warning about too many parameters
     public TopologyEvents(Collection<MastershipEvent> addedMastershipEvents,
                           Collection<MastershipEvent> removedMastershipEvents,
                           Collection<SwitchEvent> addedSwitchEvents,
@@ -69,7 +68,6 @@
                           Collection<LinkEvent> removedLinkEvents,
                           Collection<HostEvent> addedHostEvents,
                           Collection<HostEvent> removedHostEvents) {
-        // CHECKSTYLE:ON
         this.addedMastershipEvents = ImmutableList.<MastershipEvent>copyOf(
                         checkNotNull(addedMastershipEvents));
         this.removedMastershipEvents = ImmutableList.<MastershipEvent>copyOf(
