diff --git a/core/net/src/main/java/org/onosproject/net/device/impl/BasicDeviceOperator.java b/core/net/src/main/java/org/onosproject/net/device/impl/BasicDeviceOperator.java
new file mode 100644
index 0000000..6c7a065
--- /dev/null
+++ b/core/net/src/main/java/org/onosproject/net/device/impl/BasicDeviceOperator.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2014-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.net.device.impl;
+
+import static org.slf4j.LoggerFactory.getLogger;
+
+import org.onosproject.incubator.net.config.basics.BasicDeviceConfig;
+import org.onosproject.net.AnnotationKeys;
+import org.onosproject.net.DefaultAnnotations;
+import org.onosproject.net.Device;
+import org.onosproject.net.SparseAnnotations;
+import org.onosproject.net.device.DefaultDeviceDescription;
+import org.onosproject.net.device.DeviceDescription;
+import org.slf4j.Logger;
+
+/**
+ * Implementations of merge policies for various sources of device configuration
+ * information. This includes applications, provides, and network configurations.
+ */
+public final class BasicDeviceOperator extends BasicDeviceConfig {
+
+    private static final Logger log = getLogger(BasicDeviceOperator.class);
+
+    private BasicDeviceOperator() {
+    }
+
+    /**
+     * Generates a DeviceDescription containing fields from a DeviceDescription and
+     * a DeviceConfig.
+     *
+     * @param bdc the device config entity from network config
+     * @param descr a DeviceDescription
+     * @return DeviceDescription based on both sources
+     */
+    public static DeviceDescription combine(BasicDeviceConfig bdc, DeviceDescription descr) {
+        if (bdc == null) {
+            return descr;
+        }
+
+        Device.Type type = descr.type();
+        if (bdc.type() != null && bdc.type() != type) {
+            type = bdc.type();
+        }
+
+        SparseAnnotations sa = combine(bdc, descr.annotations());
+        return new DefaultDeviceDescription(descr.deviceURI(), type, descr.manufacturer(),
+                                            descr.hwVersion(), descr.swVersion(),
+                                            descr.serialNumber(), descr.chassisId(), sa);
+    }
+
+    /**
+     * Generates an annotation from an existing annotation and DeviceConfig.
+     *
+     * @param bdc the device config entity from network config
+     * @param an the annotation
+     * @return annotation combining both sources
+     */
+    public static SparseAnnotations combine(BasicDeviceConfig bdc, SparseAnnotations an) {
+        DefaultAnnotations.Builder newBuilder = DefaultAnnotations.builder();
+        if (bdc.driver() != an.value(DRIVER)) {
+            newBuilder.set(AnnotationKeys.DRIVER, bdc.driver());
+        }
+        if (bdc.name() != null) {
+            newBuilder.set(AnnotationKeys.NAME, bdc.name());
+        }
+        if (bdc.latitude() != DEFAULT_COORD) {
+            newBuilder.set(AnnotationKeys.LATITUDE, Double.toString(bdc.latitude()));
+        }
+        if (bdc.longitude() != DEFAULT_COORD) {
+            newBuilder.set(AnnotationKeys.LONGITUDE, Double.toString(bdc.longitude()));
+        }
+        if (bdc.rackAddress() != null) {
+            newBuilder.set(RACK_ADDRESS, bdc.rackAddress());
+        }
+        if (bdc.owner() != null) {
+            newBuilder.set(OWNER, bdc.owner());
+        }
+        DefaultAnnotations newAnnotations = newBuilder.build();
+        return DefaultAnnotations.union(an, newAnnotations);
+    }
+}
diff --git a/core/net/src/test/java/org/onosproject/net/device/impl/BasicDeviceOperatorTest.java b/core/net/src/test/java/org/onosproject/net/device/impl/BasicDeviceOperatorTest.java
new file mode 100644
index 0000000..96d256f
--- /dev/null
+++ b/core/net/src/test/java/org/onosproject/net/device/impl/BasicDeviceOperatorTest.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2014-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.net.device.impl;
+
+import static org.onosproject.net.Device.Type.SWITCH;
+import static org.onosproject.net.Device.Type.ROADM;
+import static org.junit.Assert.assertEquals;
+
+import java.net.URI;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.onlab.packet.ChassisId;
+import org.onosproject.incubator.net.config.Config;
+import org.onosproject.incubator.net.config.ConfigApplyDelegate;
+import org.onosproject.incubator.net.config.basics.BasicDeviceConfig;
+import org.onosproject.net.AnnotationKeys;
+import org.onosproject.net.DefaultAnnotations;
+import org.onosproject.net.DeviceId;
+import org.onosproject.net.SparseAnnotations;
+import org.onosproject.net.device.DefaultDeviceDescription;
+import org.onosproject.net.device.DeviceDescription;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+
+public class BasicDeviceOperatorTest {
+
+    private static final String NAME1 = "of:foo";
+    private static final String NAME2 = "of:bar";
+    private static final String OWNER = "somebody";
+    private static final URI DURI = URI.create(NAME1);
+    private static final String MFR = "whitebox";
+    private static final String HW = "1.1.x";
+    private static final String SW = "3.9.1";
+    private static final String SN = "43311-12345";
+    private static final ChassisId CID = new ChassisId();
+
+    private static final SparseAnnotations SA = DefaultAnnotations.builder()
+            .set(AnnotationKeys.DRIVER, NAME2).build();
+
+    private static final DeviceDescription DEV1 = new DefaultDeviceDescription(
+            DURI, SWITCH, MFR, HW, SW, SN, CID, SA);
+
+    private final ConfigApplyDelegate delegate = new ConfigApplyDelegate() {
+        @Override
+        public void onApply(Config config) {
+        }
+    };
+    private final ObjectMapper mapper = new ObjectMapper();
+
+    private static final BasicDeviceConfig SW_BDC = new BasicDeviceConfig();
+    private static final BasicDeviceConfig RD_BDC = new BasicDeviceConfig();
+
+    @Before
+    public void setUp() {
+        SW_BDC.init(DeviceId.deviceId(NAME1), NAME1, JsonNodeFactory.instance.objectNode(), mapper, delegate);
+        SW_BDC.type(SWITCH).driver(NAME1).owner(OWNER);
+        RD_BDC.init(DeviceId.deviceId(NAME2), NAME2, JsonNodeFactory.instance.objectNode(), mapper, delegate);
+        RD_BDC.type(ROADM);
+    }
+
+    @Test
+    public void testDescOps() {
+        DeviceDescription desc = BasicDeviceOperator.combine(null, DEV1);
+        assertEquals(desc, DEV1);
+
+        // override driver name
+        desc = BasicDeviceOperator.combine(SW_BDC, DEV1);
+        assertEquals(NAME1, desc.annotations().value(AnnotationKeys.DRIVER));
+
+        // override Device Type
+        desc = BasicDeviceOperator.combine(RD_BDC, DEV1);
+        assertEquals(ROADM, desc.type());
+    }
+}
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/config/basics/BasicElementConfig.java b/incubator/api/src/main/java/org/onosproject/incubator/net/config/basics/BasicElementConfig.java
index 39f767a..1b13915 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/config/basics/BasicElementConfig.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/config/basics/BasicElementConfig.java
@@ -30,6 +30,8 @@
     public static final String RACK_ADDRESS = "rackAddress";
     public static final String OWNER = "owner";
 
+    protected static final double DEFAULT_COORD = -1.0;
+
     /**
      * Returns friendly label for the element.
      *
@@ -55,7 +57,7 @@
      * @return element latitude; -1 if not set
      */
     public double latitude() {
-        return get(LATITUDE, -1.0);
+        return get(LATITUDE, DEFAULT_COORD);
     }
 
     /**
@@ -74,7 +76,7 @@
      * @return element latitude; -1 if not set
      */
     public double longitude() {
-        return get(LONGITUDE, -1.0);
+        return get(LONGITUDE, DEFAULT_COORD);
     }
 
     /**
