diff --git a/drivers/default/pom.xml b/drivers/default/pom.xml
index 844289a..73afd90 100644
--- a/drivers/default/pom.xml
+++ b/drivers/default/pom.xml
@@ -55,13 +55,6 @@
                 <extensions>true</extensions>
                 <configuration>
                     <niceManifest>true</niceManifest>
-                    <instructions>
-                        <!-- TODO this can be removed once optical package
-                             has been separated out from the default drivers -->
-                        <Import-Package>
-                            *,org.onosproject.net.optical.device
-                        </Import-Package>
-                    </instructions>
                 </configuration>
             </plugin>
         </plugins>
diff --git a/drivers/default/src/main/java/org/onosproject/driver/query/OFOpticalSwitch13LambdaQuery.java b/drivers/default/src/main/java/org/onosproject/driver/query/OFOpticalSwitch13LambdaQuery.java
index 5c61583..63756a8 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/query/OFOpticalSwitch13LambdaQuery.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/query/OFOpticalSwitch13LambdaQuery.java
@@ -17,12 +17,14 @@
 
 import org.onosproject.net.ChannelSpacing;
 import org.onosproject.net.OchSignal;
-import org.onosproject.net.OmsPort;
 import org.onosproject.net.Port;
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.behaviour.LambdaQuery;
 import org.onosproject.net.device.DeviceService;
 import org.onosproject.net.driver.AbstractHandlerBehaviour;
+import org.onosproject.net.optical.OmsPort;
+
+import static org.onosproject.net.optical.device.OpticalDeviceServiceView.opticalView;
 
 import java.util.Collections;
 import java.util.Set;
@@ -46,7 +48,7 @@
 
     @Override
     public Set<OchSignal> queryLambdas(PortNumber port) {
-        DeviceService deviceService = this.handler().get(DeviceService.class);
+        DeviceService deviceService = opticalView(this.handler().get(DeviceService.class));
         Port p = deviceService.getPort(this.data().deviceId(), port);
 
         // Only OMS ports expose lambda resources
diff --git a/drivers/lumentum/src/main/java/org/onosproject/drivers/lumentum/LumentumDriversLoader.java b/drivers/lumentum/src/main/java/org/onosproject/drivers/lumentum/LumentumDriversLoader.java
index 76386cf..4b708c7 100644
--- a/drivers/lumentum/src/main/java/org/onosproject/drivers/lumentum/LumentumDriversLoader.java
+++ b/drivers/lumentum/src/main/java/org/onosproject/drivers/lumentum/LumentumDriversLoader.java
@@ -18,6 +18,8 @@
 
 import org.apache.felix.scr.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
+import org.onosproject.net.optical.OpticalDevice;
+import org.onosproject.net.optical.device.DefaultOpticalDevice;
 
 /**
  * Loader for Lumentum device drivers from specific xml.
@@ -25,6 +27,12 @@
 @Component(immediate = true)
 public class LumentumDriversLoader extends AbstractDriverLoader {
 
+    // OSGI: help bundle plugin discover runtime package dependency.
+    @SuppressWarnings("unused")
+    private OpticalDevice optical;
+    @SuppressWarnings("unused")
+    private DefaultOpticalDevice driver;
+
     public LumentumDriversLoader() {
         super("/lumentum-drivers.xml");
     }
diff --git a/drivers/lumentum/src/main/java/org/onosproject/drivers/lumentum/LumentumRoadmDeviceDescription.java b/drivers/lumentum/src/main/java/org/onosproject/drivers/lumentum/LumentumRoadmDeviceDescription.java
index 1e7a3af..0bf9b13 100644
--- a/drivers/lumentum/src/main/java/org/onosproject/drivers/lumentum/LumentumRoadmDeviceDescription.java
+++ b/drivers/lumentum/src/main/java/org/onosproject/drivers/lumentum/LumentumRoadmDeviceDescription.java
@@ -27,7 +27,6 @@
 import org.onosproject.net.device.DeviceDescription;
 import org.onosproject.net.device.DeviceDescriptionDiscovery;
 import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.device.OmsPortDescription;
 import org.onosproject.net.device.PortDescription;
 import org.onosproject.net.driver.AbstractHandlerBehaviour;
 import org.slf4j.Logger;
@@ -40,6 +39,7 @@
 import java.util.List;
 
 import static com.google.common.base.Preconditions.checkNotNull;
+import static org.onosproject.net.optical.device.OmsPortHelper.omsPortDescription;
 import static org.slf4j.LoggerFactory.getLogger;
 
 /**
@@ -97,7 +97,7 @@
                             SparseAnnotations ann = DefaultAnnotations.builder()
                                     .set(AnnotationKeys.PORT_NAME, portDirection + "-" + portNumber)
                                     .build();
-                            PortDescription p = new OmsPortDescription(
+                            PortDescription p = omsPortDescription(
                                     PortNumber.portNumber(ports.size() + 1),
                                     true,
                                     LumentumSnmpDevice.START_CENTER_FREQ,
@@ -115,7 +115,7 @@
         SparseAnnotations annLineIn = DefaultAnnotations.builder()
                 .set(AnnotationKeys.PORT_NAME, "LINE IN")
                 .build();
-        ports.add(new OmsPortDescription(
+        ports.add(omsPortDescription(
                 PortNumber.portNumber(ports.size() + 1),
                 true,
                 LumentumSnmpDevice.START_CENTER_FREQ,
@@ -127,7 +127,7 @@
         SparseAnnotations annLineOut = DefaultAnnotations.builder()
                 .set(AnnotationKeys.PORT_NAME, "LINE OUT")
                 .build();
-        ports.add(new OmsPortDescription(
+        ports.add(omsPortDescription(
                 PortNumber.portNumber(ports.size() + 1),
                 true,
                 LumentumSnmpDevice.START_CENTER_FREQ,
diff --git a/drivers/lumentum/src/main/resources/lumentum-drivers.xml b/drivers/lumentum/src/main/resources/lumentum-drivers.xml
index ecdbc3f..e22b85a 100644
--- a/drivers/lumentum/src/main/resources/lumentum-drivers.xml
+++ b/drivers/lumentum/src/main/resources/lumentum-drivers.xml
@@ -24,6 +24,8 @@
                    impl="org.onosproject.drivers.lumentum.LumentumFlowRuleProgrammable"/>
         <behaviour api="org.onosproject.incubator.net.faultmanagement.alarm.AlarmConsumer"
                    impl="org.onosproject.drivers.lumentum.LumentumAlarmConsumer"/>
+        <behaviour api="org.onosproject.net.optical.OpticalDevice"
+                   impl="org.onosproject.net.optical.device.DefaultOpticalDevice"/>
     </driver>
 </drivers>
 
