diff --git a/apps/simplefabric/app/BUILD b/apps/simplefabric/app/BUILD
index 69d12f7..ed130ec 100644
--- a/apps/simplefabric/app/BUILD
+++ b/apps/simplefabric/app/BUILD
@@ -1,5 +1,6 @@
 COMPILE_DEPS = CORE_DEPS + JACKSON + CLI + REST + [
     "//apps/simplefabric/api:onos-apps-simplefabric-api",
+    "//apps/route-service/api:onos-apps-route-service-api",
     "@concurrent_trees//jar",
 ]
 
diff --git a/apps/simplefabric/app/src/main/java/org/onosproject/simplefabric/impl/SimpleFabricManager.java b/apps/simplefabric/app/src/main/java/org/onosproject/simplefabric/impl/SimpleFabricManager.java
index 7a4e5d8..6bfd813 100644
--- a/apps/simplefabric/app/src/main/java/org/onosproject/simplefabric/impl/SimpleFabricManager.java
+++ b/apps/simplefabric/app/src/main/java/org/onosproject/simplefabric/impl/SimpleFabricManager.java
@@ -81,6 +81,7 @@
 import java.util.Map;
 import java.util.Set;
 
+import static org.onosproject.routeservice.RouteTools.createBinaryString;
 import static org.onosproject.simplefabric.api.Constants.ALLOW_ETH_ADDRESS_SELECTOR;
 import static org.onosproject.simplefabric.api.Constants.ALLOW_IPV6;
 import static org.onosproject.simplefabric.api.Constants.APP_ID;
@@ -89,7 +90,6 @@
 import static org.onosproject.simplefabric.api.Constants.REACTIVE_HASHED_PATH_SELECTION;
 import static org.onosproject.simplefabric.api.Constants.REACTIVE_MATCH_IP_PROTO;
 import static org.onosproject.simplefabric.api.Constants.REACTIVE_SINGLE_TO_SINGLE;
-import static org.onosproject.simplefabric.util.RouteTools.createBinaryString;
 
 
 /**
diff --git a/apps/simplefabric/app/src/main/java/org/onosproject/simplefabric/util/RouteTools.java b/apps/simplefabric/app/src/main/java/org/onosproject/simplefabric/util/RouteTools.java
deleted file mode 100644
index d02fed2..0000000
--- a/apps/simplefabric/app/src/main/java/org/onosproject/simplefabric/util/RouteTools.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright 2018-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/*
- * local copy of onos/incubator/api/src/main/java/org/onosproject/incubator/net/routing/RouteTools.java
- * to remove dependency on onos.incubator.routing services, since 2017-08-09.
- */
-
-package org.onosproject.simplefabric.util;
-
-import org.onlab.packet.IpPrefix;
-
-/**
- * Routing tools.
- */
-public final class RouteTools {
-
-    private RouteTools() {
-    }
-
-    /**
-     * Creates a binary string representation of an IP prefix.
-     *
-     * For each string, we put a extra "0" in the front. The purpose of
-     * doing this is to store the default route inside InvertedRadixTree.
-     *
-     * @param ipPrefix the IP prefix to use
-     * @return the binary string representation
-     */
-    public static String createBinaryString(IpPrefix ipPrefix) {
-        byte[] octets = ipPrefix.address().toOctets();
-        StringBuilder result = new StringBuilder(ipPrefix.prefixLength());
-        result.append("0");
-        for (int i = 0; i < ipPrefix.prefixLength(); i++) {
-            int byteOffset = i / Byte.SIZE;
-            int bitOffset = i % Byte.SIZE;
-            int mask = 1 << (Byte.SIZE - 1 - bitOffset);
-            byte value = octets[byteOffset];
-            boolean isSet = ((value & mask) != 0);
-            result.append(isSet ? "1" : "0");
-        }
-        return result.toString();
-    }
-}
diff --git a/apps/simplefabric/app/src/main/java/org/onosproject/simplefabric/util/package-info.java b/apps/simplefabric/app/src/main/java/org/onosproject/simplefabric/util/package-info.java
deleted file mode 100644
index 9b3dde3..0000000
--- a/apps/simplefabric/app/src/main/java/org/onosproject/simplefabric/util/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2018-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Simple fabric utility package.
- */
-package org.onosproject.simplefabric.util;
\ No newline at end of file
