diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisInterface.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisInterface.java
index 3ac7122..3f775cc 100644
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisInterface.java
+++ b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisInterface.java
@@ -195,13 +195,6 @@
     void setAreaLength(int areaLength);
 
     /**
-     * Sets link state packet ID.
-     *
-     * @param lspId link state packet ID
-     */
-    void setLspId(String lspId);
-
-    /**
      * Returns holding time.
      *
      * @return holding time
@@ -251,6 +244,11 @@
     void startHelloSender(Channel channel);
 
     /**
+     * Stops the hello timer which sends hello packet every configured seconds.
+     */
+    void stopHelloSender();
+
+    /**
      * Processes an ISIS message which is received on this interface.
      *
      * @param isisMessage ISIS message instance
@@ -315,4 +313,9 @@
      * @param isisNeighbor ISIS neighbor instance
      */
     void removeNeighbor(IsisNeighbor isisNeighbor);
+
+    /**
+     * Removes all the neighbors.
+     */
+    void removeNeighbors();
 }
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisLsdb.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisLsdb.java
index 06e34fd..c9e1586 100644
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisLsdb.java
+++ b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisLsdb.java
@@ -108,4 +108,18 @@
      * @return neighbor database information
      */
     Map<String, LspWrapper> getL2Db();
+
+    /**
+     * Sets the level 1 link state sequence number.
+     *
+     * @param l1LspSeqNo link state sequence number
+     */
+     void setL1LspSeqNo(int l1LspSeqNo);
+
+    /**
+     * Sets the level 2 link state sequence number.
+     *
+     * @param l2LspSeqNo link state sequence number
+     */
+    void setL2LspSeqNo(int l2LspSeqNo);
 }
\ No newline at end of file
diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisNeighbor.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisNeighbor.java
index eedf11c..76e8b18 100644
--- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisNeighbor.java
+++ b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisNeighbor.java
@@ -108,4 +108,16 @@
      * Stops the inactivity timer.
      */
     void stopInactivityTimeCheck();
-}
+
+    /**
+     * Stops the holding time check timer.
+     */
+    void stopHoldingTimeCheck();
+
+    /**
+     * Returns router type.
+     *
+     * @return router type
+     */
+    IsisRouterType routerType();
+}
\ No newline at end of file
