diff --git a/core/api/src/main/java/org/onosproject/net/optical/utils/ForwardingDevice.java b/core/api/src/main/java/org/onosproject/net/optical/utils/ForwardingDevice.java
new file mode 100644
index 0000000..389f42b
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/net/optical/utils/ForwardingDevice.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2016 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.net.optical.utils;
+
+import org.onlab.packet.ChassisId;
+import org.onosproject.net.Annotations;
+import org.onosproject.net.Device;
+import org.onosproject.net.DeviceId;
+import org.onosproject.net.driver.Behaviour;
+import org.onosproject.net.provider.ProviderId;
+
+import com.google.common.annotations.Beta;
+
+/**
+ * A Device which forwards all its method calls to another Device.
+ */
+@Beta
+public interface ForwardingDevice extends Device {
+
+    Device delegate();
+
+    @Override
+    default Annotations annotations() {
+        return delegate().annotations();
+    }
+
+    @Override
+    default ProviderId providerId() {
+        return delegate().providerId();
+    }
+
+    @Override
+    default <B extends Behaviour> B as(Class<B> projectionClass) {
+        return delegate().as(projectionClass);
+    }
+
+    @Override
+    default DeviceId id() {
+        return delegate().id();
+    }
+
+    @Override
+    default Type type() {
+        return delegate().type();
+    }
+
+    @Override
+    default <B extends Behaviour> boolean is(Class<B> projectionClass) {
+        return delegate().is(projectionClass);
+    }
+
+    @Override
+    default String manufacturer() {
+        return delegate().manufacturer();
+    }
+
+    @Override
+    default String hwVersion() {
+        return delegate().hwVersion();
+    }
+
+    @Override
+    default String swVersion() {
+        return delegate().swVersion();
+    }
+
+    @Override
+    default String serialNumber() {
+        return delegate().serialNumber();
+    }
+
+    @Override
+    default ChassisId chassisId() {
+        return delegate().chassisId();
+    }
+}
