diff --git a/core/net/src/main/java/org/onosproject/net/link/impl/LinkManager.java b/core/net/src/main/java/org/onosproject/net/link/impl/LinkManager.java
index be84a8b..1e04913 100644
--- a/core/net/src/main/java/org/onosproject/net/link/impl/LinkManager.java
+++ b/core/net/src/main/java/org/onosproject/net/link/impl/LinkManager.java
@@ -15,9 +15,6 @@
  */
 package org.onosproject.net.link.impl;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
 import java.util.Set;
 
 import org.apache.felix.scr.annotations.Activate;
@@ -29,7 +26,6 @@
 import org.onosproject.event.AbstractListenerRegistry;
 import org.onosproject.event.EventDeliveryService;
 import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.Device;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.Link;
 import org.onosproject.net.Link.State;
@@ -55,6 +51,9 @@
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.Sets;
 
+import static com.google.common.base.Preconditions.checkNotNull;
+import static org.slf4j.LoggerFactory.getLogger;
+
 /**
  * Provides basic implementation of the link SB &amp; NB APIs.
  */
@@ -274,20 +273,6 @@
     // Removes all links in the specified set and emits appropriate events.
     private void  removeLinks(Set<Link> links, boolean isSoftRemove) {
         for (Link link : links) {
-            final Device srcDevice = deviceService.getDevice(link.src().deviceId());
-            final Device dstDevice = deviceService.getDevice(link.dst().deviceId());
-            if (srcDevice != null &&
-                    dstDevice != null &&
-                    !srcDevice.type().equals(dstDevice.type())) {
-                //TODO this is awful. need to be fixed so that we don't down
-                // configured links. perhaps add a mechanism to figure out the
-                // state of this link
-                log.info("Ignoring removal of link as device types are " +
-                                 "different {} {} ",
-                         link.src() ,
-                         link.dst());
-                continue;
-            }
             LinkEvent event = isSoftRemove ?
                     store.removeOrDownLink(link.src(), link.dst()) :
                     store.removeLink(link.src(), link.dst());
