diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/AdministrativeGroup.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/AdministrativeGroup.java
index 8e6dfa7..27675e7 100644
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/AdministrativeGroup.java
+++ b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/AdministrativeGroup.java
@@ -40,7 +40,7 @@
     }
 
     /**
-     * Gets administrative group value.
+     * Returns administrative group value.
      *
      * @return administrative group value
      */
@@ -58,7 +58,7 @@
     }
 
     /**
-     * Gets administrative group value.
+     * Returns administrative group value.
      *
      * @return administrativeGroup value
      */
@@ -93,7 +93,7 @@
     }
 
     /**
-     * Gets administrative group body as byte array.
+     * Returns administrative group body as byte array.
      *
      * @return byte array of sub tlv administrative group
      */
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumBandwidth.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumBandwidth.java
index e5cba2b..e138cb0 100644
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumBandwidth.java
+++ b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumBandwidth.java
@@ -31,7 +31,7 @@
     /**
      * Creates an instance of maximum bandwidth.
      *
-     * @param header tlv header instance
+     * @param header TLV header instance
      */
     public MaximumBandwidth(TlvHeader header) {
         this.setTlvType(header.tlvType());
@@ -48,7 +48,7 @@
     }
 
     /**
-     * Gets value of maximum bandwidth.
+     * Returns value of maximum bandwidth.
      *
      * @return maximumBandwidth value of maximum bandwidth
      */
@@ -69,7 +69,7 @@
     }
 
     /**
-     * Gets byte array of maximum bandwidth sub tlv.
+     * Returns byte array of maximum bandwidth sub tlv.
      *
      * @return byte array of maximum bandwidth sub tlv
      */
@@ -83,7 +83,7 @@
     }
 
     /**
-     * Gets maximum bandwidth sub tlv byte array.
+     * Returns maximum bandwidth sub tlv byte array.
      *
      * @return byte array of maximum bandwidth sub tlv
      */
@@ -92,7 +92,7 @@
         linkSubTypeBody = IsisUtil.convertToFourBytes(Float.floatToIntBits(this.maximumBandwidth));
         return linkSubTypeBody;
     }
-
+    @Override
     public String toString() {
         return MoreObjects.toStringHelper(getClass())
                 .add("maximumBandwidth", maximumBandwidth)
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumReservableBandwidth.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumReservableBandwidth.java
index 22d96db..bfe72d4 100644
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumReservableBandwidth.java
+++ b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumReservableBandwidth.java
@@ -31,7 +31,7 @@
     /**
      * Creates an instance of maximum reservable bandwidth.
      *
-     * @param header tlv header
+     * @param header TLV header
      */
     public MaximumReservableBandwidth(TlvHeader header) {
         this.setTlvType(header.tlvType());
@@ -48,7 +48,7 @@
     }
 
     /**
-     * Gets value of maximum reversible bandwidth.
+     * Returns value of maximum reversible bandwidth.
      *
      * @return maximumBandwidth maximum reversible bandwidth
      */
@@ -84,7 +84,7 @@
     }
 
     /**
-     * Gets maximum reservable bandwidth sub tlv body as byte array.
+     * Returns maximum reservable bandwidth sub tlv body as byte array.
      *
      * @return byte of maximum reservable bandwidth sub tlv body
      */
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvType.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvType.java
index b02da25..12c1127 100644
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvType.java
+++ b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvType.java
@@ -51,7 +51,7 @@
     }
 
     /**
-     * Gets the enum instance from type value - reverse lookup purpose.
+     * Returns the enum instance from type value - reverse lookup purpose.
      *
      * @param subTlvTypeValue TLV type value
      * @return ISIS  sub TLV type instance
@@ -61,7 +61,7 @@
     }
 
     /**
-     * Gets value.
+     * Returns value.
      *
      * @return value
      */
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringMetric.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringMetric.java
index cad36e4..b5fe8a8 100644
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringMetric.java
+++ b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringMetric.java
@@ -47,7 +47,7 @@
     }
 
     /**
-     * Gets TE metric value.
+     * Returns TE metric value.
      *
      * @return value of traffic engineering metric
      */
@@ -67,7 +67,7 @@
     }
 
     /**
-     * Gets instance as byte array.
+     * Returns instance as byte array.
      *
      * @return instance as byte array
      */
@@ -82,7 +82,7 @@
     }
 
     /**
-     * Gets trafficEngineeringMetric as byte array .
+     * Returns trafficEngineeringMetric as byte array .
      *
      * @return byte array of trafficEngineeringMetric
      */
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidth.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidth.java
index 7ba34f0..94db6bb 100644
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidth.java
+++ b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidth.java
@@ -50,7 +50,7 @@
     }
 
     /**
-     * Gets list of un reserved bandwidth .
+     * Returns list of un reserved bandwidth .
      *
      * @return List of un reserved bandwidth
      */
@@ -71,7 +71,7 @@
     }
 
     /**
-     * Gets instance as byte array.
+     * Returns instance as byte array.
      *
      * @return instance as byte array
      */
@@ -86,7 +86,7 @@
     }
 
     /**
-     * Gets unreserved bandwidth as byte array.
+     * Returns unreserved bandwidth as byte array.
      *
      * @return unreserved bandwidth as byte array
      */
