diff --git a/Makefile.dep b/Makefile.dep
index 549493a12d32ab68001219d8eaf71eba68b09554..f33348d89ca9e89363621665a77c80284fd5cb35 100644
--- a/Makefile.dep
+++ b/Makefile.dep
@@ -100,6 +100,7 @@ ifneq (,$(filter ng_netbase,$(USEMODULE)))
   USEMODULE += ng_netapi
   USEMODULE += ng_netreg
   USEMODULE += ng_netif
+  USEMODULE += ng_netif_hdr
   USEMODULE += ng_pktbuf
 endif
 
diff --git a/sys/Makefile b/sys/Makefile
index 9ac918dd9883f57574b3901acda6ef07571263ec..da888e73cfd6167bcc034129dda76cb9aee59ba6 100644
--- a/sys/Makefile
+++ b/sys/Makefile
@@ -86,6 +86,9 @@ endif
 ifneq (,$(filter ng_netif,$(USEMODULE)))
     DIRS += net/crosslayer/ng_netif
 endif
+ifneq (,$(filter ng_netif_hdr,$(USEMODULE)))
+    DIRS += net/crosslayer/ng_netif/hdr
+endif
 ifneq (,$(filter ng_netreg,$(USEMODULE)))
     DIRS += net/crosslayer/ng_netreg
 endif
diff --git a/sys/include/net/ng_netif/hdr.h b/sys/include/net/ng_netif/hdr.h
index 8e58c0da33a34a831ee8fd6f4de8109b20d5554b..c77ba30f13d3ee468915777ee699805695546439 100644
--- a/sys/include/net/ng_netif/hdr.h
+++ b/sys/include/net/ng_netif/hdr.h
@@ -32,6 +32,12 @@
 extern "C" {
 #endif
 
+/**
+ * @brief   Maximum length of the l2 addresses of the generic interface header
+ *          in bytes.
+ */
+#define NG_NETIF_HDR_L2ADDR_MAX_LEN     (8)
+
 /**
  * @{
  * @name    Flags for the ng_netif_hdr_t
@@ -208,6 +214,13 @@ static inline ng_pktsnip_t *ng_netif_hdr_build(uint8_t *src, uint8_t src_len,
     return pkt;
 }
 
+/**
+ * @brief   Outputs a generic interface header to stdout.
+ *
+ * @param[in] hdr   A generic interface header.
+ */
+void ng_netif_hdr_print(ng_netif_hdr_t *hdr);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/sys/net/crosslayer/ng_netif/hdr/Makefile b/sys/net/crosslayer/ng_netif/hdr/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..0615f679089eb6e5b12353eb50b884e2de6cf774
--- /dev/null
+++ b/sys/net/crosslayer/ng_netif/hdr/Makefile
@@ -0,0 +1,3 @@
+MODULE = ng_netif_hdr
+
+include $(RIOTBASE)/Makefile.base
diff --git a/sys/net/crosslayer/ng_netif/hdr/ng_netif_hdr_print.c b/sys/net/crosslayer/ng_netif/hdr/ng_netif_hdr_print.c
new file mode 100644
index 0000000000000000000000000000000000000000..0c7bd3b71b671507b157280a54c465ae6cc0d935
--- /dev/null
+++ b/sys/net/crosslayer/ng_netif/hdr/ng_netif_hdr_print.c
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2015 Martine Lenders <mlenders@inf.fu-berlin.de>
+ *
+ * This file is subject to the terms and conditions of the GNU Lesser
+ * General Public License v2.1. See the file LICENSE in the top level
+ * directory for more details.
+ */
+
+/**
+ * @{
+ *
+ * @file
+ */
+
+#include <stdio.h>
+
+#include "net/ng_netif.h"
+#include "net/ng_netif/hdr.h"
+
+void ng_netif_hdr_print(ng_netif_hdr_t *hdr)
+{
+    char addr_str[NG_NETIF_HDR_L2ADDR_MAX_LEN * 3];
+
+    printf("if_pid: %" PRIkernel_pid "  ", hdr->if_pid);
+    printf("rssi: %" PRIu8 "  ", hdr->rssi);
+    printf("lqi: %" PRIu8 "\n", hdr->lqi);
+    printf("src_l2addr: %s\n",
+           ng_netif_addr_to_str(addr_str, sizeof(addr_str),
+                                ng_netif_hdr_get_src_addr(hdr),
+                                (size_t)hdr->src_l2addr_len));
+    printf("dst_l2addr: %s\n",
+           ng_netif_addr_to_str(addr_str, sizeof(addr_str),
+                                ng_netif_hdr_get_dst_addr(hdr),
+                                (size_t)hdr->dst_l2addr_len));
+}
+
+/** @} */
diff --git a/sys/net/crosslayer/ng_pktdump/ng_pktdump.c b/sys/net/crosslayer/ng_pktdump/ng_pktdump.c
index 5498fb55a17a157ca1dc60516f8c7f2fc463c459..44c3e70ed100778b0a22ee8935d5353fbbc32b3e 100644
--- a/sys/net/crosslayer/ng_pktdump/ng_pktdump.c
+++ b/sys/net/crosslayer/ng_pktdump/ng_pktdump.c
@@ -41,27 +41,6 @@ static kernel_pid_t _pid = KERNEL_PID_UNDEF;
  */
 static char _stack[NG_PKTDUMP_STACKSIZE];
 
-#define ADDR_STR_MAX    (24)
-
-#ifdef MODULE_NG_NETIF
-static void _dump_netif_hdr(ng_netif_hdr_t *hdr)
-{
-    char addr_str[ADDR_STR_MAX];
-
-    printf("if_pid: %" PRIkernel_pid "  ", hdr->if_pid);
-    printf("rssi: %" PRIu8 "  ", hdr->rssi);
-    printf("lqi: %" PRIu8 "\n", hdr->lqi);
-    printf("src_l2addr: %s\n",
-           ng_netif_addr_to_str(addr_str, sizeof(addr_str),
-                                ng_netif_hdr_get_src_addr(hdr),
-                                (size_t)hdr->src_l2addr_len));
-    printf("dst_l2addr: %s\n",
-           ng_netif_addr_to_str(addr_str, sizeof(addr_str),
-                                ng_netif_hdr_get_dst_addr(hdr),
-                                (size_t)hdr->dst_l2addr_len));
-}
-#endif
-
 static void _dump_snip(ng_pktsnip_t *pkt)
 {
     switch (pkt->type) {
@@ -72,7 +51,7 @@ static void _dump_snip(ng_pktsnip_t *pkt)
 #ifdef MODULE_NG_NETIF
         case NG_NETTYPE_NETIF:
             printf("NETTYPE_NETIF (%i)\n", pkt->type);
-            _dump_netif_hdr(pkt->data);
+            ng_netif_hdr_print(pkt->data);
             break;
 #endif
 #ifdef MODULE_NG_SIXLOWPAN