diff --git a/cli/pom.xml b/cli/pom.xml
index 2a9e922..ddeacc5 100644
--- a/cli/pom.xml
+++ b/cli/pom.xml
@@ -39,6 +39,10 @@
         </dependency>
         <dependency>
             <groupId>org.onosproject</groupId>
+            <artifactId>onos-incubator-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
             <artifactId>onlab-osgi</artifactId>
         </dependency>
         <dependency>
diff --git a/cli/src/main/java/org/onosproject/cli/net/BorrowTunnelCommand.java b/cli/src/main/java/org/onosproject/cli/net/TunnelBorrowCommand.java
similarity index 92%
rename from cli/src/main/java/org/onosproject/cli/net/BorrowTunnelCommand.java
rename to cli/src/main/java/org/onosproject/cli/net/TunnelBorrowCommand.java
index 4a15d8e..61188d2 100644
--- a/cli/src/main/java/org/onosproject/cli/net/BorrowTunnelCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/TunnelBorrowCommand.java
@@ -27,13 +27,13 @@
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.tunnel.DefaultOpticalTunnelEndPoint;
-import org.onosproject.net.tunnel.IpTunnelEndPoint;
-import org.onosproject.net.tunnel.OpticalLogicId;
-import org.onosproject.net.tunnel.OpticalTunnelEndPoint;
-import org.onosproject.net.tunnel.Tunnel;
-import org.onosproject.net.tunnel.TunnelEndPoint;
-import org.onosproject.net.tunnel.TunnelService;
+import org.onosproject.incubator.net.tunnel.DefaultOpticalTunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.OpticalLogicId;
+import org.onosproject.incubator.net.tunnel.OpticalTunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.Tunnel;
+import org.onosproject.incubator.net.tunnel.TunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.TunnelService;
 
 /**
  * Borrows all tunnels between specific source tunnel end point and specific
@@ -43,7 +43,7 @@
 description = "Borrows all tunnels between specific source tunnel end point"
         + " and specific destination tunnel end point."
         + " Supports for IP address and optical as tunnel end point now. It's used by consumers.")
-public class BorrowTunnelCommand extends AbstractShellCommand {
+public class TunnelBorrowCommand extends AbstractShellCommand {
     @Argument(index = 0, name = "consumerId", description = "consumer id means application id.",
             required = true, multiValued = false)
     String consumerId = null;
diff --git a/cli/src/main/java/org/onosproject/cli/net/DeleteTunnelCommand.java b/cli/src/main/java/org/onosproject/cli/net/TunnelDeleteCommand.java
similarity index 91%
rename from cli/src/main/java/org/onosproject/cli/net/DeleteTunnelCommand.java
rename to cli/src/main/java/org/onosproject/cli/net/TunnelDeleteCommand.java
index cded33b..9be0da8 100644
--- a/cli/src/main/java/org/onosproject/cli/net/DeleteTunnelCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/TunnelDeleteCommand.java
@@ -24,12 +24,12 @@
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.tunnel.DefaultOpticalTunnelEndPoint;
-import org.onosproject.net.tunnel.IpTunnelEndPoint;
-import org.onosproject.net.tunnel.OpticalLogicId;
-import org.onosproject.net.tunnel.OpticalTunnelEndPoint;
-import org.onosproject.net.tunnel.TunnelAdminService;
-import org.onosproject.net.tunnel.TunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.DefaultOpticalTunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.OpticalLogicId;
+import org.onosproject.incubator.net.tunnel.OpticalTunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.TunnelAdminService;
+import org.onosproject.incubator.net.tunnel.TunnelEndPoint;
 
 /**
  * Supports for deleting all tunnels by using IP address and optical as tunnel
@@ -37,7 +37,7 @@
  */
 @Command(scope = "onos", name = "delete-tunnels", description = "Supports for deleting all tunnels by using IP address"
         + " and optical as tunnel end point now. It's used by consumers.")
-public class DeleteTunnelCommand extends AbstractShellCommand {
+public class TunnelDeleteCommand extends AbstractShellCommand {
     static String applicationId = "DEFAULT_APP_ID";
     @Argument(index = 0, name = "src", description = "Source tunnel point."
             + " Only supports for IpTunnelEndPoint and OpticalTunnelEndPoint as end point now."
diff --git a/cli/src/main/java/org/onosproject/cli/net/QueryTunnelCommand.java b/cli/src/main/java/org/onosproject/cli/net/TunnelQueryCommand.java
similarity index 91%
rename from cli/src/main/java/org/onosproject/cli/net/QueryTunnelCommand.java
rename to cli/src/main/java/org/onosproject/cli/net/TunnelQueryCommand.java
index b4bc117..4e1fe28 100644
--- a/cli/src/main/java/org/onosproject/cli/net/QueryTunnelCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/TunnelQueryCommand.java
@@ -25,13 +25,13 @@
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.tunnel.DefaultOpticalTunnelEndPoint;
-import org.onosproject.net.tunnel.IpTunnelEndPoint;
-import org.onosproject.net.tunnel.OpticalLogicId;
-import org.onosproject.net.tunnel.OpticalTunnelEndPoint;
-import org.onosproject.net.tunnel.Tunnel;
-import org.onosproject.net.tunnel.TunnelEndPoint;
-import org.onosproject.net.tunnel.TunnelService;
+import org.onosproject.incubator.net.tunnel.DefaultOpticalTunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.OpticalLogicId;
+import org.onosproject.incubator.net.tunnel.OpticalTunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.Tunnel;
+import org.onosproject.incubator.net.tunnel.TunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.TunnelService;
 
 /**
  * Supports for querying all tunnels by using IP address and optical as tunnel
@@ -40,7 +40,7 @@
 @Command(scope = "onos", name = "query-tunnels", description = "Supports for querying all tunnels by using IP address"
         + " and optical as tunnel end point now."
         + " It's used by consumers.")
-public class QueryTunnelCommand extends AbstractShellCommand {
+public class TunnelQueryCommand extends AbstractShellCommand {
     @Argument(index = 0, name = "src", description = "Source tunnel point."
             + " Only supports for IpTunnelEndPoint and OpticalTunnelEndPoint as end point now."
             + " If deletess a ODUK or OCH type tunnel, the formatter of this argument is DeviceId-PortNumber."
diff --git a/cli/src/main/java/org/onosproject/cli/net/QueryTunnelSubscriptionCommand.java b/cli/src/main/java/org/onosproject/cli/net/TunnelQuerySubscriptionCommand.java
similarity index 91%
rename from cli/src/main/java/org/onosproject/cli/net/QueryTunnelSubscriptionCommand.java
rename to cli/src/main/java/org/onosproject/cli/net/TunnelQuerySubscriptionCommand.java
index c91dcce..45d1e78 100644
--- a/cli/src/main/java/org/onosproject/cli/net/QueryTunnelSubscriptionCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/TunnelQuerySubscriptionCommand.java
@@ -22,8 +22,8 @@
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.DefaultApplicationId;
-import org.onosproject.net.tunnel.TunnelService;
-import org.onosproject.net.tunnel.TunnelSubscription;
+import org.onosproject.incubator.net.tunnel.TunnelService;
+import org.onosproject.incubator.net.tunnel.TunnelSubscription;
 
 /**
  * Query all tunnel subscriptions of consumer by consumer id.
@@ -31,7 +31,7 @@
  */
 @Command(scope = "onos", name = "query-tunnel-subscriptions",
       description = "Query all request orders of consumer by consumer id. It's used by consumers.")
-public class QueryTunnelSubscriptionCommand extends AbstractShellCommand {
+public class TunnelQuerySubscriptionCommand extends AbstractShellCommand {
     @Argument(index = 0, name = "consumerId",
             description = "consumer id means provider id",
             required = true, multiValued = false)
diff --git a/cli/src/main/java/org/onosproject/cli/net/ReturnTunnelCommand.java b/cli/src/main/java/org/onosproject/cli/net/TunnelReturnCommand.java
similarity index 92%
rename from cli/src/main/java/org/onosproject/cli/net/ReturnTunnelCommand.java
rename to cli/src/main/java/org/onosproject/cli/net/TunnelReturnCommand.java
index c3111e8..3de8f00 100644
--- a/cli/src/main/java/org/onosproject/cli/net/ReturnTunnelCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/TunnelReturnCommand.java
@@ -26,12 +26,12 @@
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.tunnel.DefaultOpticalTunnelEndPoint;
-import org.onosproject.net.tunnel.IpTunnelEndPoint;
-import org.onosproject.net.tunnel.OpticalLogicId;
-import org.onosproject.net.tunnel.OpticalTunnelEndPoint;
-import org.onosproject.net.tunnel.TunnelEndPoint;
-import org.onosproject.net.tunnel.TunnelService;
+import org.onosproject.incubator.net.tunnel.DefaultOpticalTunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.OpticalLogicId;
+import org.onosproject.incubator.net.tunnel.OpticalTunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.TunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.TunnelService;
 
 /**
  * Returns all tunnels between specific source tunnel end point and specific
@@ -42,7 +42,7 @@
 description = "Returns all tunnels between specific source tunnel end point and specific "
         + " destination tunnel end point. Supports for IP address and optical as tunnel end point now."
         + " It's used by consumers.")
-public class ReturnTunnelCommand extends AbstractShellCommand {
+public class TunnelReturnCommand extends AbstractShellCommand {
     @Argument(index = 0, name = "consumerId", description = "consumer id means application id.",
             required = true, multiValued = false)
     String consumerId = null;
diff --git a/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml b/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
index 93afcd5..d92129a 100644
--- a/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
+++ b/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
@@ -369,19 +369,19 @@
         </command>
         <!-- tunnel commands -->
         <command>
-            <action class="org.onosproject.cli.net.DeleteTunnelCommand"/>
+            <action class="org.onosproject.cli.net.TunnelDeleteCommand"/>
         </command>
         <command>
-            <action class="org.onosproject.cli.net.BorrowTunnelCommand"/>
+            <action class="org.onosproject.cli.net.TunnelBorrowCommand"/>
         </command>
         <command>
-            <action class="org.onosproject.cli.net.ReturnTunnelCommand"/>
+            <action class="org.onosproject.cli.net.TunnelReturnCommand"/>
         </command>
         <command>
-            <action class="org.onosproject.cli.net.QueryTunnelCommand"/>
+            <action class="org.onosproject.cli.net.TunnelQueryCommand"/>
         </command>
         <command>
-            <action class="org.onosproject.cli.net.QueryTunnelSubscriptionCommand"/>
+            <action class="org.onosproject.cli.net.TunnelQuerySubscriptionCommand"/>
         </command>
     </command-bundle>
 
diff --git a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelEndPoint.java b/core/api/src/main/java/org/onosproject/net/tunnel/TunnelEndPoint.java
deleted file mode 100644
index 53db69c..0000000
--- a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelEndPoint.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.onosproject.net.tunnel;
-
-/**
- * Represents for source end point or destination end point of a tunnel. Maybe a tunnel
- * based on ConnectPoint, IpAddress, MacAddress and so on is built.
- */
-public interface TunnelEndPoint {
-
-}
diff --git a/core/security/impl/src/main/java/org/onosproject/security/impl/PolicyBuilder.java b/core/security/impl/src/main/java/org/onosproject/security/impl/PolicyBuilder.java
index bc21935..31174c6 100644
--- a/core/security/impl/src/main/java/org/onosproject/security/impl/PolicyBuilder.java
+++ b/core/security/impl/src/main/java/org/onosproject/security/impl/PolicyBuilder.java
@@ -42,8 +42,6 @@
 import org.onosproject.net.statistic.StatisticService;
 import org.onosproject.net.topology.PathService;
 import org.onosproject.net.topology.TopologyService;
-import org.onosproject.net.tunnel.TunnelAdminService;
-import org.onosproject.net.tunnel.TunnelService;
 import org.onosproject.store.service.StorageAdminService;
 import org.onosproject.store.service.StorageService;
 import org.osgi.framework.ServicePermission;
@@ -111,8 +109,8 @@
                         StorageAdminService.class.getName(), ServicePermission.GET),
                 new PermissionInfo(ServicePermission.class.getName(),
                         LabelResourceAdminService.class.getName(), ServicePermission.GET),
-                new PermissionInfo(ServicePermission.class.getName(),
-                        TunnelAdminService.class.getName(), ServicePermission.GET),
+//                new PermissionInfo(ServicePermission.class.getName(),
+//                        TunnelAdminService.class.getName(), ServicePermission.GET),
                 new PermissionInfo(ServicePermission.class.getName(),
                         ApplicationService.class.getName(), ServicePermission.GET),
                 new PermissionInfo(ServicePermission.class.getName(),
@@ -165,8 +163,8 @@
                         PathService.class.getName(), ServicePermission.GET),
                 new PermissionInfo(ServicePermission.class.getName(),
                         TopologyService.class.getName(), ServicePermission.GET),
-                new PermissionInfo(ServicePermission.class.getName(),
-                        TunnelService.class.getName(), ServicePermission.GET),
+//                new PermissionInfo(ServicePermission.class.getName(),
+//                        TunnelService.class.getName(), ServicePermission.GET),
                 new PermissionInfo(ServicePermission.class.getName(),
                         StorageService.class.getName(), ServicePermission.GET),
         };
@@ -246,12 +244,12 @@
                 TopologyService.class.getName(), PathService.class.getName()));
         serviceDirectory.put(Permission.TOPOLOGY_EVENT, ImmutableSet.of(
                 TopologyService.class.getName()));
-        serviceDirectory.put(Permission.TUNNEL_READ, ImmutableSet.of(
-                TunnelService.class.getName()));
-        serviceDirectory.put(Permission.TUNNEL_WRITE, ImmutableSet.of(
-                TunnelService.class.getName()));
-        serviceDirectory.put(Permission.TUNNEL_EVENT, ImmutableSet.of(
-                TunnelService.class.getName()));
+//        serviceDirectory.put(Permission.TUNNEL_READ, ImmutableSet.of(
+//                TunnelService.class.getName()));
+//        serviceDirectory.put(Permission.TUNNEL_WRITE, ImmutableSet.of(
+//                TunnelService.class.getName()));
+//        serviceDirectory.put(Permission.TUNNEL_EVENT, ImmutableSet.of(
+//                TunnelService.class.getName()));
         serviceDirectory.put(Permission.STORAGE_WRITE, ImmutableSet.of(
                 StorageService.class.getName()));
 
diff --git a/features/features.xml b/features/features.xml
index a49fdd0..2a45f98 100644
--- a/features/features.xml
+++ b/features/features.xml
@@ -87,6 +87,7 @@
         <bundle>mvn:org.onosproject/onlab-osgi/@ONOS-VERSION</bundle>
 
         <bundle>mvn:org.onosproject/onos-api/@ONOS-VERSION</bundle>
+        <bundle>mvn:org.onosproject/onos-incubator-api/@ONOS-VERSION</bundle>
     </feature>
 
     <feature name="onos-core" version="@FEATURE-VERSION"
@@ -99,6 +100,13 @@
         <bundle>mvn:org.onosproject/onlab-netty/@ONOS-VERSION</bundle>
     </feature>
 
+    <feature name="onos-incubator" version="@FEATURE-VERSION"
+             description="ONOS core incubator components">
+        <feature>onos-core</feature>
+        <bundle>mvn:org.onosproject/onos-incubator-net/@ONOS-VERSION</bundle>
+        <bundle>mvn:org.onosproject/onos-incubator-store/@ONOS-VERSION</bundle>
+    </feature>
+
     <feature name="onos-rest" version="@FEATURE-VERSION"
              description="ONOS REST API components">
         <feature>onos-api</feature>
diff --git a/incubator/api/pom.xml b/incubator/api/pom.xml
index 1a0e8ef..df4b52c 100644
--- a/incubator/api/pom.xml
+++ b/incubator/api/pom.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
+
 <!--
   ~ Copyright 2015 Open Networking Laboratory
   ~
@@ -14,6 +15,7 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
+
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
diff --git a/core/api/src/main/java/org/onosproject/net/tunnel/DefaultOpticalTunnelEndPoint.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/DefaultOpticalTunnelEndPoint.java
similarity index 85%
rename from core/api/src/main/java/org/onosproject/net/tunnel/DefaultOpticalTunnelEndPoint.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/DefaultOpticalTunnelEndPoint.java
index 3fb2e7d..c6e4119 100644
--- a/core/api/src/main/java/org/onosproject/net/tunnel/DefaultOpticalTunnelEndPoint.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/DefaultOpticalTunnelEndPoint.java
@@ -1,4 +1,19 @@
-package org.onosproject.net.tunnel;
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * 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.
+ */
+package org.onosproject.incubator.net.tunnel;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.MoreObjects.toStringHelper;
diff --git a/core/api/src/main/java/org/onosproject/net/tunnel/DefaultTunnel.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/DefaultTunnel.java
similarity index 87%
rename from core/api/src/main/java/org/onosproject/net/tunnel/DefaultTunnel.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/DefaultTunnel.java
index fa911fc..62a5dcb 100644
--- a/core/api/src/main/java/org/onosproject/net/tunnel/DefaultTunnel.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/DefaultTunnel.java
@@ -1,4 +1,20 @@
-package org.onosproject.net.tunnel;
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * 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.
+ */
+
+package org.onosproject.incubator.net.tunnel;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.MoreObjects.toStringHelper;
diff --git a/core/api/src/main/java/org/onosproject/net/tunnel/DefaultTunnelDescription.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/DefaultTunnelDescription.java
similarity index 98%
rename from core/api/src/main/java/org/onosproject/net/tunnel/DefaultTunnelDescription.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/DefaultTunnelDescription.java
index 16585de..e4c4d89 100644
--- a/core/api/src/main/java/org/onosproject/net/tunnel/DefaultTunnelDescription.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/DefaultTunnelDescription.java
@@ -13,7 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.tunnel;
+
+package org.onosproject.incubator.net.tunnel;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import org.onosproject.core.DefaultGroupId;
diff --git a/core/api/src/main/java/org/onosproject/net/tunnel/IpTunnelEndPoint.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/IpTunnelEndPoint.java
similarity index 64%
rename from core/api/src/main/java/org/onosproject/net/tunnel/IpTunnelEndPoint.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/IpTunnelEndPoint.java
index d440c3a..a9278fc 100644
--- a/core/api/src/main/java/org/onosproject/net/tunnel/IpTunnelEndPoint.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/IpTunnelEndPoint.java
@@ -1,4 +1,20 @@
-package org.onosproject.net.tunnel;
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * 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.
+ */
+
+package org.onosproject.incubator.net.tunnel;
 
 import java.util.Objects;
 
diff --git a/core/api/src/main/java/org/onosproject/net/tunnel/OpticalLogicId.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/OpticalLogicId.java
similarity index 97%
rename from core/api/src/main/java/org/onosproject/net/tunnel/OpticalLogicId.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/OpticalLogicId.java
index d12849b..fee5542 100644
--- a/core/api/src/main/java/org/onosproject/net/tunnel/OpticalLogicId.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/OpticalLogicId.java
@@ -13,7 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.tunnel;
+
+package org.onosproject.incubator.net.tunnel;
 
 import java.util.Objects;
 import com.google.common.primitives.UnsignedLongs;
diff --git a/core/api/src/main/java/org/onosproject/net/tunnel/OpticalTunnelEndPoint.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/OpticalTunnelEndPoint.java
similarity index 97%
rename from core/api/src/main/java/org/onosproject/net/tunnel/OpticalTunnelEndPoint.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/OpticalTunnelEndPoint.java
index 9ce84be..7f0ab4b 100644
--- a/core/api/src/main/java/org/onosproject/net/tunnel/OpticalTunnelEndPoint.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/OpticalTunnelEndPoint.java
@@ -13,7 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.tunnel;
+
+package org.onosproject.incubator.net.tunnel;
 
 import java.util.Optional;
 
diff --git a/core/api/src/main/java/org/onosproject/net/tunnel/Tunnel.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/Tunnel.java
similarity index 98%
rename from core/api/src/main/java/org/onosproject/net/tunnel/Tunnel.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/Tunnel.java
index bc3d18b..8b80b86 100644
--- a/core/api/src/main/java/org/onosproject/net/tunnel/Tunnel.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/Tunnel.java
@@ -13,7 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.tunnel;
+
+package org.onosproject.incubator.net.tunnel;
 
 import org.onosproject.core.DefaultGroupId;
 import org.onosproject.net.Annotated;
diff --git a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelAdminService.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelAdminService.java
similarity index 97%
rename from core/api/src/main/java/org/onosproject/net/tunnel/TunnelAdminService.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelAdminService.java
index d140600..3c6cf3f 100644
--- a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelAdminService.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelAdminService.java
@@ -13,7 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.tunnel;
+
+package org.onosproject.incubator.net.tunnel;
 
 import org.onosproject.net.Path;
 import org.onosproject.net.provider.ProviderId;
diff --git a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelDescription.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelDescription.java
similarity index 93%
rename from core/api/src/main/java/org/onosproject/net/tunnel/TunnelDescription.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelDescription.java
index efa9c58..eca8fdd 100644
--- a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelDescription.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelDescription.java
@@ -13,13 +13,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.tunnel;
+
+package org.onosproject.incubator.net.tunnel;
 
 import org.onosproject.core.DefaultGroupId;
 import org.onosproject.net.Annotated;
 import org.onosproject.net.Description;
 import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.tunnel.Tunnel.Type;
+import org.onosproject.incubator.net.tunnel.Tunnel.Type;
 
 /**
  * Describes a tunnel.
diff --git a/core/net/src/main/java/org/onosproject/net/tunnel/impl/package-info.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelEndPoint.java
similarity index 71%
copy from core/net/src/main/java/org/onosproject/net/tunnel/impl/package-info.java
copy to incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelEndPoint.java
index ccadddb..3265a4e 100644
--- a/core/net/src/main/java/org/onosproject/net/tunnel/impl/package-info.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelEndPoint.java
@@ -14,7 +14,12 @@
  * limitations under the License.
  */
 
+package org.onosproject.incubator.net.tunnel;
+
 /**
- * Core subsystem for tracking global inventory of tunnels.
+ * Represents for source end point or destination end point of a tunnel. Maybe a tunnel
+ * based on ConnectPoint, IpAddress, MacAddress and so on is built.
  */
-package org.onosproject.net.tunnel.impl;
+public interface TunnelEndPoint {
+
+}
diff --git a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelEvent.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelEvent.java
similarity index 96%
rename from core/api/src/main/java/org/onosproject/net/tunnel/TunnelEvent.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelEvent.java
index 9824623..16c5ec3 100644
--- a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelEvent.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelEvent.java
@@ -13,7 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.tunnel;
+
+package org.onosproject.incubator.net.tunnel;
 
 import org.onosproject.event.AbstractEvent;
 
diff --git a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelId.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelId.java
similarity index 97%
rename from core/api/src/main/java/org/onosproject/net/tunnel/TunnelId.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelId.java
index ca57797..b596700 100644
--- a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelId.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelId.java
@@ -13,7 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.tunnel;
+
+package org.onosproject.incubator.net.tunnel;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
diff --git a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelListener.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelListener.java
similarity index 93%
rename from core/api/src/main/java/org/onosproject/net/tunnel/TunnelListener.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelListener.java
index 654cf7d..41011be 100644
--- a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelListener.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelListener.java
@@ -13,7 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.tunnel;
+
+package org.onosproject.incubator.net.tunnel;
 
 import org.onosproject.event.EventListener;
 
diff --git a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelName.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelName.java
similarity index 67%
rename from core/api/src/main/java/org/onosproject/net/tunnel/TunnelName.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelName.java
index db6bd7c..7e32137 100644
--- a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelName.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelName.java
@@ -1,4 +1,20 @@
-package org.onosproject.net.tunnel;
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * 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.
+ */
+
+package org.onosproject.incubator.net.tunnel;
 
 import java.util.Objects;
 
diff --git a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelProvider.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelProvider.java
similarity index 98%
rename from core/api/src/main/java/org/onosproject/net/tunnel/TunnelProvider.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelProvider.java
index e388c70..f01bb61 100644
--- a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelProvider.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelProvider.java
@@ -13,7 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.tunnel;
+
+package org.onosproject.incubator.net.tunnel;
 
 import org.onosproject.net.ElementId;
 import org.onosproject.net.Path;
diff --git a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelProviderRegistry.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelProviderRegistry.java
similarity index 94%
rename from core/api/src/main/java/org/onosproject/net/tunnel/TunnelProviderRegistry.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelProviderRegistry.java
index d6a3148..33ff21c 100644
--- a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelProviderRegistry.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelProviderRegistry.java
@@ -13,7 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.tunnel;
+
+package org.onosproject.incubator.net.tunnel;
 
 import org.onosproject.net.provider.ProviderRegistry;
 
diff --git a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelProviderService.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelProviderService.java
similarity index 96%
rename from core/api/src/main/java/org/onosproject/net/tunnel/TunnelProviderService.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelProviderService.java
index 7b02676..9049299 100644
--- a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelProviderService.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelProviderService.java
@@ -13,7 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.tunnel;
+
+package org.onosproject.incubator.net.tunnel;
 
 import org.onosproject.net.provider.ProviderService;
 
diff --git a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelService.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelService.java
similarity index 95%
rename from core/api/src/main/java/org/onosproject/net/tunnel/TunnelService.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelService.java
index 109d981..f2611fa 100644
--- a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelService.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelService.java
@@ -13,13 +13,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.tunnel;
+
+package org.onosproject.incubator.net.tunnel;
 
 import java.util.Collection;
 
 import org.onosproject.core.ApplicationId;
 import org.onosproject.net.Annotations;
-import org.onosproject.net.tunnel.Tunnel.Type;
 
 /**
  * Service for interacting with the inventory of tunnels.
@@ -83,7 +83,7 @@
      * @return collection of available Tunnels
      */
     Collection<Tunnel> borrowTunnel(ApplicationId consumerId, TunnelEndPoint src,
-                                       TunnelEndPoint dst, Type type,
+                                       TunnelEndPoint dst, Tunnel.Type type,
                                        Annotations... annotations);
 
     /**
@@ -122,7 +122,7 @@
      * @return success or fail
      */
     boolean returnTunnel(ApplicationId consumerId, TunnelEndPoint src,
-                              TunnelEndPoint dst, Type type,
+                              TunnelEndPoint dst, Tunnel.Type type,
                               Annotations... annotations);
 
     /**
@@ -160,7 +160,7 @@
      * @param type tunnel type
      * @return Collection of tunnels
      */
-    Collection<Tunnel> queryTunnel(Type type);
+    Collection<Tunnel> queryTunnel(Tunnel.Type type);
 
     /**
      * Returns all tunnels between source point and destination point.
diff --git a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelStore.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelStore.java
similarity index 98%
rename from core/api/src/main/java/org/onosproject/net/tunnel/TunnelStore.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelStore.java
index 107dea3..3286ef2 100644
--- a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelStore.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelStore.java
@@ -13,14 +13,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.tunnel;
+
+package org.onosproject.incubator.net.tunnel;
 
 import java.util.Collection;
 
 import org.onosproject.core.ApplicationId;
 import org.onosproject.net.Annotations;
 import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.tunnel.Tunnel.Type;
+import org.onosproject.incubator.net.tunnel.Tunnel.Type;
 import org.onosproject.store.Store;
 
 /**
diff --git a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelStoreDelegate.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelStoreDelegate.java
similarity index 93%
rename from core/api/src/main/java/org/onosproject/net/tunnel/TunnelStoreDelegate.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelStoreDelegate.java
index 177e7f0..cf8a998 100644
--- a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelStoreDelegate.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelStoreDelegate.java
@@ -13,7 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.tunnel;
+
+package org.onosproject.incubator.net.tunnel;
 
 import org.onosproject.store.StoreDelegate;
 
diff --git a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelSubscription.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelSubscription.java
similarity index 83%
rename from core/api/src/main/java/org/onosproject/net/tunnel/TunnelSubscription.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelSubscription.java
index 428e41c..9dd8e62 100644
--- a/core/api/src/main/java/org/onosproject/net/tunnel/TunnelSubscription.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelSubscription.java
@@ -1,4 +1,20 @@
-package org.onosproject.net.tunnel;
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * 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.
+ */
+
+package org.onosproject.incubator.net.tunnel;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
@@ -7,7 +23,7 @@
 import org.onosproject.core.ApplicationId;
 import org.onosproject.net.AbstractAnnotated;
 import org.onosproject.net.Annotations;
-import org.onosproject.net.tunnel.Tunnel.Type;
+import org.onosproject.incubator.net.tunnel.Tunnel.Type;
 
 import com.google.common.base.MoreObjects;
 
diff --git a/core/api/src/main/java/org/onosproject/net/tunnel/package-info.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/package-info.java
similarity index 93%
rename from core/api/src/main/java/org/onosproject/net/tunnel/package-info.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/package-info.java
index 41580d3..d31aab5 100644
--- a/core/api/src/main/java/org/onosproject/net/tunnel/package-info.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/package-info.java
@@ -17,4 +17,4 @@
 /**
  * Tunnel model related services and providers API definitions.
  */
-package org.onosproject.net.tunnel;
+package org.onosproject.incubator.net.tunnel;
diff --git a/core/api/src/test/java/org/onosproject/net/tunnel/DefaultTunnelTest.java b/incubator/api/src/test/java/org/onosproject/incubator/net/tunnel/DefaultTunnelTest.java
similarity index 73%
rename from core/api/src/test/java/org/onosproject/net/tunnel/DefaultTunnelTest.java
rename to incubator/api/src/test/java/org/onosproject/incubator/net/tunnel/DefaultTunnelTest.java
index 7ea5be2..bab9ff0 100644
--- a/core/api/src/test/java/org/onosproject/net/tunnel/DefaultTunnelTest.java
+++ b/incubator/api/src/test/java/org/onosproject/incubator/net/tunnel/DefaultTunnelTest.java
@@ -1,4 +1,20 @@
-package org.onosproject.net.tunnel;
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * 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.
+ */
+
+package org.onosproject.incubator.net.tunnel;
 
 import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
 
diff --git a/core/api/src/test/java/org/onosproject/net/tunnel/TunnelEventTest.java b/incubator/api/src/test/java/org/onosproject/incubator/net/tunnel/TunnelEventTest.java
similarity index 71%
rename from core/api/src/test/java/org/onosproject/net/tunnel/TunnelEventTest.java
rename to incubator/api/src/test/java/org/onosproject/incubator/net/tunnel/TunnelEventTest.java
index 06a1f09..6f330a7 100644
--- a/core/api/src/test/java/org/onosproject/net/tunnel/TunnelEventTest.java
+++ b/incubator/api/src/test/java/org/onosproject/incubator/net/tunnel/TunnelEventTest.java
@@ -1,4 +1,20 @@
-package org.onosproject.net.tunnel;
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * 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.
+ */
+
+package org.onosproject.incubator.net.tunnel;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;
diff --git a/core/api/src/test/java/org/onosproject/net/tunnel/TunnelIdTest.java b/incubator/api/src/test/java/org/onosproject/incubator/net/tunnel/TunnelIdTest.java
similarity index 67%
rename from core/api/src/test/java/org/onosproject/net/tunnel/TunnelIdTest.java
rename to incubator/api/src/test/java/org/onosproject/incubator/net/tunnel/TunnelIdTest.java
index aeba1e6..f4c109f 100644
--- a/core/api/src/test/java/org/onosproject/net/tunnel/TunnelIdTest.java
+++ b/incubator/api/src/test/java/org/onosproject/incubator/net/tunnel/TunnelIdTest.java
@@ -1,4 +1,20 @@
-package org.onosproject.net.tunnel;
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * 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.
+ */
+
+package org.onosproject.incubator.net.tunnel;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;
diff --git a/core/api/src/test/java/org/onosproject/net/tunnel/TunnelNameTest.java b/incubator/api/src/test/java/org/onosproject/incubator/net/tunnel/TunnelNameTest.java
similarity index 66%
rename from core/api/src/test/java/org/onosproject/net/tunnel/TunnelNameTest.java
rename to incubator/api/src/test/java/org/onosproject/incubator/net/tunnel/TunnelNameTest.java
index 87421db..d0fc49c 100644
--- a/core/api/src/test/java/org/onosproject/net/tunnel/TunnelNameTest.java
+++ b/incubator/api/src/test/java/org/onosproject/incubator/net/tunnel/TunnelNameTest.java
@@ -1,4 +1,20 @@
-package org.onosproject.net.tunnel;
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * 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.
+ */
+
+package org.onosproject.incubator.net.tunnel;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;
diff --git a/core/api/src/test/java/org/onosproject/net/tunnel/TunnelSubscriptionTest.java b/incubator/api/src/test/java/org/onosproject/incubator/net/tunnel/TunnelSubscriptionTest.java
similarity index 70%
rename from core/api/src/test/java/org/onosproject/net/tunnel/TunnelSubscriptionTest.java
rename to incubator/api/src/test/java/org/onosproject/incubator/net/tunnel/TunnelSubscriptionTest.java
index 682796a..46634c7 100644
--- a/core/api/src/test/java/org/onosproject/net/tunnel/TunnelSubscriptionTest.java
+++ b/incubator/api/src/test/java/org/onosproject/incubator/net/tunnel/TunnelSubscriptionTest.java
@@ -1,4 +1,19 @@
-package org.onosproject.net.tunnel;
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * 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.
+ */
+package org.onosproject.incubator.net.tunnel;
 
 import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
 
diff --git a/incubator/net/pom.xml b/incubator/net/pom.xml
index 65bde31..0869aa1 100644
--- a/incubator/net/pom.xml
+++ b/incubator/net/pom.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
+
 <!--
   ~ Copyright 2015 Open Networking Laboratory
   ~
diff --git a/core/net/src/main/java/org/onosproject/net/tunnel/impl/TunnelManager.java b/incubator/net/src/main/java/org/onosproject/incubator/net/tunnel/impl/TunnelManager.java
similarity index 92%
rename from core/net/src/main/java/org/onosproject/net/tunnel/impl/TunnelManager.java
rename to incubator/net/src/main/java/org/onosproject/incubator/net/tunnel/impl/TunnelManager.java
index 47e5311..c2c9975 100644
--- a/core/net/src/main/java/org/onosproject/net/tunnel/impl/TunnelManager.java
+++ b/incubator/net/src/main/java/org/onosproject/incubator/net/tunnel/impl/TunnelManager.java
@@ -13,7 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.tunnel.impl;
+
+package org.onosproject.incubator.net.tunnel.impl;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static org.slf4j.LoggerFactory.getLogger;
@@ -35,23 +36,23 @@
 import org.onosproject.net.provider.AbstractProviderRegistry;
 import org.onosproject.net.provider.AbstractProviderService;
 import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.tunnel.DefaultTunnel;
-import org.onosproject.net.tunnel.Tunnel;
-import org.onosproject.net.tunnel.Tunnel.Type;
-import org.onosproject.net.tunnel.TunnelAdminService;
-import org.onosproject.net.tunnel.TunnelDescription;
-import org.onosproject.net.tunnel.TunnelEndPoint;
-import org.onosproject.net.tunnel.TunnelEvent;
-import org.onosproject.net.tunnel.TunnelId;
-import org.onosproject.net.tunnel.TunnelListener;
-import org.onosproject.net.tunnel.TunnelName;
-import org.onosproject.net.tunnel.TunnelProvider;
-import org.onosproject.net.tunnel.TunnelProviderRegistry;
-import org.onosproject.net.tunnel.TunnelProviderService;
-import org.onosproject.net.tunnel.TunnelService;
-import org.onosproject.net.tunnel.TunnelStore;
-import org.onosproject.net.tunnel.TunnelStoreDelegate;
-import org.onosproject.net.tunnel.TunnelSubscription;
+import org.onosproject.incubator.net.tunnel.DefaultTunnel;
+import org.onosproject.incubator.net.tunnel.Tunnel;
+import org.onosproject.incubator.net.tunnel.Tunnel.Type;
+import org.onosproject.incubator.net.tunnel.TunnelAdminService;
+import org.onosproject.incubator.net.tunnel.TunnelDescription;
+import org.onosproject.incubator.net.tunnel.TunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.TunnelEvent;
+import org.onosproject.incubator.net.tunnel.TunnelId;
+import org.onosproject.incubator.net.tunnel.TunnelListener;
+import org.onosproject.incubator.net.tunnel.TunnelName;
+import org.onosproject.incubator.net.tunnel.TunnelProvider;
+import org.onosproject.incubator.net.tunnel.TunnelProviderRegistry;
+import org.onosproject.incubator.net.tunnel.TunnelProviderService;
+import org.onosproject.incubator.net.tunnel.TunnelService;
+import org.onosproject.incubator.net.tunnel.TunnelStore;
+import org.onosproject.incubator.net.tunnel.TunnelStoreDelegate;
+import org.onosproject.incubator.net.tunnel.TunnelSubscription;
 import org.slf4j.Logger;
 
 /**
diff --git a/core/net/src/main/java/org/onosproject/net/tunnel/impl/package-info.java b/incubator/net/src/main/java/org/onosproject/incubator/net/tunnel/impl/package-info.java
similarity index 92%
rename from core/net/src/main/java/org/onosproject/net/tunnel/impl/package-info.java
rename to incubator/net/src/main/java/org/onosproject/incubator/net/tunnel/impl/package-info.java
index ccadddb..6e0de55 100644
--- a/core/net/src/main/java/org/onosproject/net/tunnel/impl/package-info.java
+++ b/incubator/net/src/main/java/org/onosproject/incubator/net/tunnel/impl/package-info.java
@@ -17,4 +17,4 @@
 /**
  * Core subsystem for tracking global inventory of tunnels.
  */
-package org.onosproject.net.tunnel.impl;
+package org.onosproject.incubator.net.tunnel.impl;
diff --git a/incubator/pom.xml b/incubator/pom.xml
index 235bff9..0eb6e89 100644
--- a/incubator/pom.xml
+++ b/incubator/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014 Open Networking Laboratory
+  ~ Copyright 2015 Open Networking Laboratory
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
diff --git a/incubator/store/pom.xml b/incubator/store/pom.xml
index b7439ef..67ff427 100644
--- a/incubator/store/pom.xml
+++ b/incubator/store/pom.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
+
 <!--
   ~ Copyright 2015 Open Networking Laboratory
   ~
@@ -68,6 +69,21 @@
             <classifier>tests</classifier>
             <scope>test</scope>
         </dependency>
+
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.scr.annotations</artifactId>
+        </dependency>
     </dependencies>
 
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-scr-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
 </project>
diff --git a/core/store/dist/src/main/java/org/onosproject/store/tunnel/impl/DistributedTunnelStore.java b/incubator/store/src/main/java/org/onosproject/incubator/store/tunnel/impl/DistributedTunnelStore.java
similarity index 93%
rename from core/store/dist/src/main/java/org/onosproject/store/tunnel/impl/DistributedTunnelStore.java
rename to incubator/store/src/main/java/org/onosproject/incubator/store/tunnel/impl/DistributedTunnelStore.java
index 6082842..b49743c 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/tunnel/impl/DistributedTunnelStore.java
+++ b/incubator/store/src/main/java/org/onosproject/incubator/store/tunnel/impl/DistributedTunnelStore.java
@@ -1,4 +1,20 @@
-package org.onosproject.store.tunnel.impl;
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * 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.
+ */
+
+package org.onosproject.incubator.store.tunnel.impl;
 
 import static org.slf4j.LoggerFactory.getLogger;
 
@@ -23,16 +39,16 @@
 import org.onosproject.core.IdGenerator;
 import org.onosproject.net.Annotations;
 import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.tunnel.DefaultTunnel;
-import org.onosproject.net.tunnel.Tunnel;
-import org.onosproject.net.tunnel.Tunnel.Type;
-import org.onosproject.net.tunnel.TunnelEndPoint;
-import org.onosproject.net.tunnel.TunnelEvent;
-import org.onosproject.net.tunnel.TunnelId;
-import org.onosproject.net.tunnel.TunnelName;
-import org.onosproject.net.tunnel.TunnelStore;
-import org.onosproject.net.tunnel.TunnelStoreDelegate;
-import org.onosproject.net.tunnel.TunnelSubscription;
+import org.onosproject.incubator.net.tunnel.DefaultTunnel;
+import org.onosproject.incubator.net.tunnel.Tunnel;
+import org.onosproject.incubator.net.tunnel.Tunnel.Type;
+import org.onosproject.incubator.net.tunnel.TunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.TunnelEvent;
+import org.onosproject.incubator.net.tunnel.TunnelId;
+import org.onosproject.incubator.net.tunnel.TunnelName;
+import org.onosproject.incubator.net.tunnel.TunnelStore;
+import org.onosproject.incubator.net.tunnel.TunnelStoreDelegate;
+import org.onosproject.incubator.net.tunnel.TunnelSubscription;
 import org.onosproject.store.AbstractStore;
 import org.onosproject.store.app.GossipApplicationStore.InternalState;
 import org.onosproject.store.cluster.messaging.ClusterCommunicationService;
diff --git a/core/store/dist/src/main/java/org/onosproject/store/tunnel/impl/package-info.java b/incubator/store/src/main/java/org/onosproject/incubator/store/tunnel/impl/package-info.java
similarity index 86%
rename from core/store/dist/src/main/java/org/onosproject/store/tunnel/impl/package-info.java
rename to incubator/store/src/main/java/org/onosproject/incubator/store/tunnel/impl/package-info.java
index 44ce0fe..f0c06f7 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/tunnel/impl/package-info.java
+++ b/incubator/store/src/main/java/org/onosproject/incubator/store/tunnel/impl/package-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2014 Open Networking Laboratory
+ * Copyright 2015 Open Networking Laboratory
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,4 +17,4 @@
 /**
  * Implementation of distributed tunnel store using p2p synchronization protocol.
  */
-package org.onosproject.store.tunnel.impl;
+package org.onosproject.incubator.store.tunnel.impl;
diff --git a/pom.xml b/pom.xml
index 009a5ea..93e7330 100644
--- a/pom.xml
+++ b/pom.xml
@@ -361,6 +361,11 @@
                 <scope>test</scope>
             </dependency>
 
+            <dependency>
+                <groupId>org.onosproject</groupId>
+                <artifactId>onos-incubator-api</artifactId>
+                <version>${project.version}</version>
+            </dependency>
 
             <dependency>
                 <groupId>org.onosproject</groupId>
diff --git a/providers/pom.xml b/providers/pom.xml
index 7d9f38f..d59b2b6 100644
--- a/providers/pom.xml
+++ b/providers/pom.xml
@@ -45,6 +45,10 @@
             <groupId>org.onosproject</groupId>
             <artifactId>onos-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-incubator-api</artifactId>
+        </dependency>
 
         <dependency>
             <groupId>org.onosproject</groupId>
diff --git a/providers/tunnel/src/main/java/org/onosproject/provider/tunnel/DefaultTunnelProvider.java b/providers/tunnel/src/main/java/org/onosproject/provider/tunnel/DefaultTunnelProvider.java
index 1a7a9b9..b110a0c 100644
--- a/providers/tunnel/src/main/java/org/onosproject/provider/tunnel/DefaultTunnelProvider.java
+++ b/providers/tunnel/src/main/java/org/onosproject/provider/tunnel/DefaultTunnelProvider.java
@@ -28,12 +28,12 @@
 import org.onosproject.net.Path;
 import org.onosproject.net.provider.AbstractProvider;
 import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.tunnel.Tunnel;
-import org.onosproject.net.tunnel.TunnelDescription;
-import org.onosproject.net.tunnel.TunnelId;
-import org.onosproject.net.tunnel.TunnelProvider;
-import org.onosproject.net.tunnel.TunnelProviderRegistry;
-import org.onosproject.net.tunnel.TunnelProviderService;
+import org.onosproject.incubator.net.tunnel.Tunnel;
+import org.onosproject.incubator.net.tunnel.TunnelDescription;
+import org.onosproject.incubator.net.tunnel.TunnelId;
+import org.onosproject.incubator.net.tunnel.TunnelProvider;
+import org.onosproject.incubator.net.tunnel.TunnelProviderRegistry;
+import org.onosproject.incubator.net.tunnel.TunnelProviderService;
 import org.osgi.service.component.ComponentContext;
 import org.slf4j.Logger;
 
diff --git a/providers/tunnel/src/main/java/org/onosproject/provider/tunnel/cli/CreateTunnelCommand.java b/providers/tunnel/src/main/java/org/onosproject/provider/tunnel/cli/CreateTunnelCommand.java
index 0086e32..495402b 100644
--- a/providers/tunnel/src/main/java/org/onosproject/provider/tunnel/cli/CreateTunnelCommand.java
+++ b/providers/tunnel/src/main/java/org/onosproject/provider/tunnel/cli/CreateTunnelCommand.java
@@ -29,17 +29,17 @@
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.SparseAnnotations;
 import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.tunnel.DefaultOpticalTunnelEndPoint;
-import org.onosproject.net.tunnel.DefaultTunnelDescription;
-import org.onosproject.net.tunnel.IpTunnelEndPoint;
-import org.onosproject.net.tunnel.OpticalLogicId;
-import org.onosproject.net.tunnel.OpticalTunnelEndPoint;
-import org.onosproject.net.tunnel.Tunnel;
-import org.onosproject.net.tunnel.TunnelDescription;
-import org.onosproject.net.tunnel.TunnelEndPoint;
-import org.onosproject.net.tunnel.TunnelId;
-import org.onosproject.net.tunnel.TunnelName;
-import org.onosproject.net.tunnel.TunnelProvider;
+import org.onosproject.incubator.net.tunnel.DefaultOpticalTunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.DefaultTunnelDescription;
+import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.OpticalLogicId;
+import org.onosproject.incubator.net.tunnel.OpticalTunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.Tunnel;
+import org.onosproject.incubator.net.tunnel.TunnelDescription;
+import org.onosproject.incubator.net.tunnel.TunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.TunnelId;
+import org.onosproject.incubator.net.tunnel.TunnelName;
+import org.onosproject.incubator.net.tunnel.TunnelProvider;
 
 /**
  * Supports for creating a tunnel by using IP address and optical as tunnel end
diff --git a/providers/tunnel/src/main/java/org/onosproject/provider/tunnel/cli/RemoveTunnelCommand.java b/providers/tunnel/src/main/java/org/onosproject/provider/tunnel/cli/RemoveTunnelCommand.java
index b4be6ac..27721e7 100644
--- a/providers/tunnel/src/main/java/org/onosproject/provider/tunnel/cli/RemoveTunnelCommand.java
+++ b/providers/tunnel/src/main/java/org/onosproject/provider/tunnel/cli/RemoveTunnelCommand.java
@@ -24,15 +24,15 @@
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.tunnel.DefaultOpticalTunnelEndPoint;
-import org.onosproject.net.tunnel.DefaultTunnelDescription;
-import org.onosproject.net.tunnel.IpTunnelEndPoint;
-import org.onosproject.net.tunnel.OpticalLogicId;
-import org.onosproject.net.tunnel.OpticalTunnelEndPoint;
-import org.onosproject.net.tunnel.Tunnel;
-import org.onosproject.net.tunnel.TunnelDescription;
-import org.onosproject.net.tunnel.TunnelEndPoint;
-import org.onosproject.net.tunnel.TunnelProvider;
+import org.onosproject.incubator.net.tunnel.DefaultOpticalTunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.DefaultTunnelDescription;
+import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.OpticalLogicId;
+import org.onosproject.incubator.net.tunnel.OpticalTunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.Tunnel;
+import org.onosproject.incubator.net.tunnel.TunnelDescription;
+import org.onosproject.incubator.net.tunnel.TunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.TunnelProvider;
 
 /**
  * Supports for removing all tunnels by using IP address and optical as tunnel
diff --git a/tools/build/onos-package b/tools/build/onos-package
index 5a8f9ac..5885562 100755
--- a/tools/build/onos-package
+++ b/tools/build/onos-package
@@ -67,7 +67,7 @@
     $ONOS_STAGE/$KARAF_DIST/etc/org.apache.karaf.features.cfg
 
 # Patch the Apache Karaf distribution file to load default ONOS boot features
-export BOOT_FEATURES="webconsole,onos-api,onos-core,onos-cli,onos-rest,onos-gui"
+export BOOT_FEATURES="webconsole,onos-api,onos-core,onos-incubator,onos-cli,onos-rest,onos-gui"
 perl -pi.old -e "s|^(featuresBoot=.*)|\1,$BOOT_FEATURES|" \
     $ONOS_STAGE/$KARAF_DIST/etc/org.apache.karaf.features.cfg
 
diff --git a/tools/dev/bin/onos-setup-karaf b/tools/dev/bin/onos-setup-karaf
index 2b77e74..1d82c1d 100755
--- a/tools/dev/bin/onos-setup-karaf
+++ b/tools/dev/bin/onos-setup-karaf
@@ -79,7 +79,7 @@
 
 if ! grep -q ",onos-api," $KARAF_ROOT/etc/org.apache.karaf.features.cfg; then
     # Patch the Apache Karaf distribution file to load default ONOS boot features
-    export BOOT_FEATURES="webconsole,onos-api,onos-core,onos-cli,onos-rest,onos-gui"
+    export BOOT_FEATURES="webconsole,onos-api,onos-core,onos-incubator,onos-cli,onos-rest,onos-gui"
     echo "Adding ONOS boot features $BOOT_FEATURES..."
     perl -pi.old -e "s|^(featuresBoot=.*)|\1,$BOOT_FEATURES|" \
         $KARAF_ROOT/etc/org.apache.karaf.features.cfg
