diff --git a/sys/net/network_layer/ng_sixlowpan/ng_sixlowpan.c b/sys/net/network_layer/ng_sixlowpan/ng_sixlowpan.c
index c6e3ac8ebfc3c2ecbbb4c95bbafbcae6530f71d8..d6c7bb387412276443573249937910711fc5c46a 100644
--- a/sys/net/network_layer/ng_sixlowpan/ng_sixlowpan.c
+++ b/sys/net/network_layer/ng_sixlowpan/ng_sixlowpan.c
@@ -57,7 +57,6 @@ static void _receive(ng_pktsnip_t *pkt)
 {
     ng_pktsnip_t *payload;
     uint8_t *dispatch;
-    ng_netreg_entry_t *entry;
 
     /* seize payload as a temporary variable */
     payload = ng_pktbuf_start_write(pkt);   /* need to duplicate since pkt->next
@@ -138,21 +137,9 @@ static void _receive(ng_pktsnip_t *pkt)
 
     payload->type = NG_NETTYPE_IPV6;
 
-    entry = ng_netreg_lookup(NG_NETTYPE_IPV6, NG_NETREG_DEMUX_CTX_ALL);
-
-    if (entry == NULL) {
+    if (!ng_netapi_dispatch_receive(NG_NETTYPE_IPV6, NG_NETREG_DEMUX_CTX_ALL, pkt)) {
         DEBUG("ipv6: No receivers for this packet found\n");
         ng_pktbuf_release(pkt);
-        return;
-    }
-
-    ng_pktbuf_hold(pkt, ng_netreg_num(NG_NETTYPE_IPV6, NG_NETREG_DEMUX_CTX_ALL) - 1);
-
-    while (entry) {
-        DEBUG("6lo: Send receive command for %p to %" PRIu16 "\n",
-              (void *)pkt, entry->pid);
-        ng_netapi_receive(entry->pid, pkt);
-        entry = ng_netreg_getnext(entry);
     }
 }