diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Row.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Row.java
index eee0ee8..0e319d0 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Row.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Row.java
@@ -43,19 +43,6 @@
      * Row constructor.
      *
      * @param tableName table name
-     * @deprecated in Emu Release
-     */
-    @Deprecated
-    private Row(String tableName) {
-        checkNotNull(tableName, "tableName cannot be null");
-        this.tableName = tableName;
-        this.columns = Maps.newHashMap();
-    }
-
-    /**
-     * Row constructor.
-     *
-     * @param tableName table name
      * @param columns   Map of Column entity
      * @param uuid UUID of the row
      */
diff --git a/utils/misc/src/main/java/org/onlab/util/Tools.java b/utils/misc/src/main/java/org/onlab/util/Tools.java
index 40e59d0..e9e11b3 100644
--- a/utils/misc/src/main/java/org/onlab/util/Tools.java
+++ b/utils/misc/src/main/java/org/onlab/util/Tools.java
@@ -21,13 +21,9 @@
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import org.slf4j.Logger;
 
-import java.io.BufferedReader;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
-import java.io.InputStreamReader;
 import java.nio.ByteBuffer;
-import java.nio.charset.StandardCharsets;
 import java.nio.file.FileVisitResult;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -35,7 +31,6 @@
 import java.nio.file.SimpleFileVisitor;
 import java.nio.file.StandardCopyOption;
 import java.nio.file.attribute.BasicFileAttributes;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Dictionary;
@@ -432,31 +427,6 @@
     }
 
     /**
-     * Slurps the contents of a file into a list of strings, one per line.
-     *
-     * @param path file path
-     * @return file contents
-     * @deprecated in Emu release
-     */
-    @Deprecated
-    public static List<String> slurp(File path) {
-        try (
-            BufferedReader br = new BufferedReader(
-                    new InputStreamReader(new FileInputStream(path), StandardCharsets.UTF_8));
-                ) {
-            List<String> lines = new ArrayList<>();
-            String line;
-            while ((line = br.readLine()) != null) {
-                lines.add(line);
-            }
-            return lines;
-
-        } catch (IOException e) {
-            return null;
-        }
-    }
-
-    /**
      * Purges the specified directory path.&nbsp;Use with great caution since
      * no attempt is made to check for symbolic links, which could result in
      * deletion of unintended files.
