diff --git a/Makefile.dep b/Makefile.dep
index 02c957b9c9700f255825d4dfbe8e7fc9c469628d..f05f8d4191e73a15c764a143f73de15df425ace6 100644
--- a/Makefile.dep
+++ b/Makefile.dep
@@ -33,6 +33,7 @@ endif
 
 ifneq (,$(filter netdev2_tap,$(USEMODULE)))
   USEMODULE += netif
+  USEMODULE += netdev2_eth
 endif
 
 ifneq (,$(filter gnrc_zep,$(USEMODULE)))
diff --git a/cpu/native/netdev2_tap/netdev2_tap.c b/cpu/native/netdev2_tap/netdev2_tap.c
index c881a46b0d708016dd1a9c8ede5c6332cf0f782e..671681cc4d0a5adafd5d9f424ee7e5db5722c568 100644
--- a/cpu/native/netdev2_tap/netdev2_tap.c
+++ b/cpu/native/netdev2_tap/netdev2_tap.c
@@ -50,6 +50,7 @@
 
 #include "net/eui64.h"
 #include "net/netdev2.h"
+#include "net/netdev2_eth.h"
 #include "net/ethernet.h"
 #include "net/ethernet/hdr.h"
 #include "netdev2_tap.h"
@@ -97,18 +98,6 @@ static inline int _set_promiscous(netdev2_t *netdev, int value)
     return value;
 }
 
-static inline int _get_iid(netdev2_t *netdev, eui64_t *value, size_t max_len)
-{
-    if (max_len < sizeof(eui64_t)) {
-        return -EOVERFLOW;
-    }
-
-    uint8_t addr[ETHERNET_ADDR_LEN];
-    _get_mac_addr(netdev, addr);
-    ethernet_get_iid(value, addr);
-
-    return sizeof(eui64_t);
-}
 static inline void _isr(netdev2_t *netdev)
 {
     if (netdev->event_callback) {
@@ -130,13 +119,6 @@ int _get(netdev2_t *dev, netopt_t opt, void *value, size_t max_len)
     int res = 0;
 
     switch (opt) {
-        case NETOPT_DEVICE_TYPE:
-            {
-               uint16_t *tgt = (uint16_t *)value;
-                *tgt = NETDEV2_TYPE_ETHERNET;
-                res = 2;
-                break;
-            }
         case NETOPT_ADDRESS:
             if (max_len < ETHERNET_ADDR_LEN) {
                 res = -EINVAL;
@@ -146,24 +128,12 @@ int _get(netdev2_t *dev, netopt_t opt, void *value, size_t max_len)
                 res = ETHERNET_ADDR_LEN;
             }
             break;
-        case NETOPT_ADDR_LEN:
-        case NETOPT_SRC_LEN:
-            assert(max_len == 2);
-            uint16_t *tgt = (uint16_t*)value;
-            *tgt=6;
-            res = sizeof(uint16_t);
-            break;
         case NETOPT_PROMISCUOUSMODE:
             *((bool*)value) = (bool)_get_promiscous(dev);
             res = sizeof(bool);
             break;
-        case NETOPT_IPV6_IID:
-            return _get_iid(dev, value, max_len);
-        case NETOPT_IS_WIRED:
-            res = 1;
-            break;
         default:
-            res = -ENOTSUP;
+            res = netdev2_eth_get(dev, opt, value, max_len);
             break;
     }