diff --git a/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpRouteEntry.java b/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpRouteEntry.java
index 5db9eaf..05d97db 100644
--- a/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpRouteEntry.java
+++ b/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpRouteEntry.java
@@ -20,10 +20,10 @@
 import java.util.ArrayList;
 import java.util.Objects;
 
-import org.onosproject.sdnip.RouteEntry;
-import org.onosproject.sdnip.bgp.BgpConstants.Update;
 import org.onlab.packet.Ip4Address;
 import org.onlab.packet.Ip4Prefix;
+import org.onosproject.sdnip.RouteEntry;
+import org.onosproject.sdnip.bgp.BgpConstants.Update;
 
 import com.google.common.base.MoreObjects;
 
@@ -175,7 +175,7 @@
         }
 
         if (firstPathSegment.getSegmentAsNumbers().isEmpty()) {
-            // TODO: Shouldn't happen. Should check during the parsing.
+            // NOTE: Shouldn't happen. Should check during the parsing.
             return BgpConstants.BGP_AS_0;
         }
         return firstPathSegment.getSegmentAsNumbers().get(0);
@@ -381,7 +381,7 @@
                  case Update.AsPath.AS_CONFED_SET:
                      break;             // Ignore
                  default:
-                     // TODO: What to do if the Path Segment type is unknown?
+                     // NOTE: What to do if the Path Segment type is unknown?
                      break;
                  }
              }
diff --git a/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpSession.java b/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpSession.java
index f2c5233..a60cfc8 100644
--- a/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpSession.java
+++ b/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpSession.java
@@ -38,13 +38,13 @@
 import org.jboss.netty.util.Timeout;
 import org.jboss.netty.util.Timer;
 import org.jboss.netty.util.TimerTask;
+import org.onlab.packet.Ip4Address;
+import org.onlab.packet.Ip4Prefix;
 import org.onosproject.sdnip.bgp.BgpConstants.Notifications;
 import org.onosproject.sdnip.bgp.BgpConstants.Notifications.HoldTimerExpired;
 import org.onosproject.sdnip.bgp.BgpConstants.Notifications.MessageHeaderError;
 import org.onosproject.sdnip.bgp.BgpConstants.Notifications.OpenMessageError;
 import org.onosproject.sdnip.bgp.BgpConstants.Notifications.UpdateMessageError;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.Ip4Prefix;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -444,7 +444,7 @@
             closeSession(ctx);
             return;
         }
-        // TODO: Parse the optional parameters (if needed)
+        // NOTE: Parse the optional parameters (if needed)
         message.readBytes(optParamLen);             // NOTE: data ignored
 
         //
@@ -727,7 +727,7 @@
                 break;
 
             default:
-                // TODO: Parse any new Attribute Types if needed
+                // NOTE: Parse any new Attribute Types if needed
                 if (!optionalBit) {
                     // ERROR: Unrecognized Well-known Attribute
                     actionsBgpUpdateUnrecognizedWellKnownAttribute(
