diff --git a/boards/nrf52dk/Makefile b/boards/nrf52dk/Makefile
index f8fcbb53a06595771dae356338a7bf2c0673734d..f07357235ffea578efd382a5c2e7a73c71bae315 100644
--- a/boards/nrf52dk/Makefile
+++ b/boards/nrf52dk/Makefile
@@ -1,3 +1,4 @@
 MODULE = board
+DIRS = $(RIOTBOARD)/common/nrf52xxxdk
 
 include $(RIOTBASE)/Makefile.base
diff --git a/boards/nrf52dk/Makefile.dep b/boards/nrf52dk/Makefile.dep
index e9b18989d059c58b766ab97907486e64bd3e20f2..dd71d2f711a69ae3269dade0a8fbef6a25cb22c7 100644
--- a/boards/nrf52dk/Makefile.dep
+++ b/boards/nrf52dk/Makefile.dep
@@ -1,13 +1,7 @@
-ifneq (,$(filter saul_default,$(USEMODULE)))
-  USEMODULE += saul_gpio
-endif
+include $(RIOTBOARD)/common/nrf52xxxdk/Makefile.dep
 
 ifeq (,$(filter nrfmin,$(USEMODULE)))
   ifneq (,$(filter gnrc_netdev_default,$(USEMODULE)))
     USEPKG += nordic_softdevice_ble
   endif
-else
-  ifneq (,$(filter gnrc_netdev_default netdev_default,$(USEMODULE)))
-    USEMODULE += nrfmin
-  endif
 endif
diff --git a/boards/nrf52dk/Makefile.features b/boards/nrf52dk/Makefile.features
index 5c594d4b0d28674f1c3095de7147c70c20262bb2..b99cfa472a13eaf6b79ba38718a4f2fea3563259 100644
--- a/boards/nrf52dk/Makefile.features
+++ b/boards/nrf52dk/Makefile.features
@@ -1,14 +1 @@
-# Put defined MCU peripherals here (in alphabetical order)
-FEATURES_PROVIDED += periph_gpio
-FEATURES_PROVIDED += periph_rtt
-FEATURES_PROVIDED += periph_spi
-FEATURES_PROVIDED += periph_timer
-FEATURES_PROVIDED += periph_uart
-
-# Various other features (if any)
-FEATURES_PROVIDED += radio_nrfmin
-
-# The board MPU family (used for grouping by the CI system)
-FEATURES_MCU_GROUP = cortex_m4_3
-
--include $(RIOTCPU)/nrf52/Makefile.features
+include $(RIOTBOARD)/common/nrf52xxxdk/Makefile.features
diff --git a/boards/nrf52dk/Makefile.include b/boards/nrf52dk/Makefile.include
index ffd49c959e9bc8c44b50348bfdfb77d2c486c951..4aa5e4707103d99d87e52c20fdb87efee014253b 100644
--- a/boards/nrf52dk/Makefile.include
+++ b/boards/nrf52dk/Makefile.include
@@ -1,21 +1,3 @@
-# define the cpu used by the nRF52 DK
-export CPU = nrf52
 export CPU_MODEL = nrf52832xxaa
 
-# set default port depending on operating system
-PORT_LINUX ?= /dev/ttyACM0
-PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbmodem*)))
-
-# setup JLink for flashing
-export JLINK_DEVICE := nrf52
-
-# special options when using SoftDevice
-ifneq (,$(filter nordic_softdevice_ble,$(USEPKG)))
-export JLINK_PRE_FLASH := erase\nloadfile $(BINDIR)/softdevice.hex
-export FLASH_ADDR := 0x1f000
-export LINKER_SCRIPT ?= $(RIOTCPU)/$(CPU)/ldscripts/$(CPU_MODEL)_sd.ld
-endif
-include $(RIOTMAKE)/tools/jlink.inc.mk
-
-# setup serial terminal
-include $(RIOTMAKE)/tools/serial.inc.mk
+include $(RIOTBOARD)/common/nrf52xxxdk/Makefile.include
diff --git a/boards/nrf52dk/board.c b/boards/nrf52dk/board.c
deleted file mode 100644
index 9d06a200ca188b139f00478b51a7d5a880290974..0000000000000000000000000000000000000000
--- a/boards/nrf52dk/board.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2016 Freie Universität Berlin
- *
- * 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.
- */
-
-/**
- * @ingroup     boards_nrf52dk
- * @{
- *
- * @file
- * @brief       Board initialization for the nRF52 DK
- *
- * @author      Hauke Petersen <hauke.petersen@fu-berlin.de>
- *
- * @}
- */
-
-#include "cpu.h"
-#include "board.h"
-
-void board_init(void)
-{
-    /* initialize the boards LEDs */
-    NRF_P0->DIRSET = (LED0_MASK | LED1_MASK | LED2_MASK | LED3_MASK);
-    NRF_P0->OUTSET = (LED0_MASK | LED1_MASK | LED2_MASK | LED3_MASK);
-    NRF_P0->OUTSET = (LED0_MASK | LED1_MASK | LED2_MASK | LED3_MASK);
-
-    /* initialize the CPU */
-    cpu_init();
-}
diff --git a/boards/nrf52dk/include/board.h b/boards/nrf52dk/include/board.h
index b3a2c9c1a2144d804a4eb83787795c8df1505c85..7214c11fb5476e81a9f37e12195d90fe55e3e4a7 100644
--- a/boards/nrf52dk/include/board.h
+++ b/boards/nrf52dk/include/board.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016 Feie Universität Berlin
+ * Copyright (C) 2016-2017 Feie Universität Berlin
  *
  * 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
@@ -22,7 +22,7 @@
 #ifndef BOARD_H
 #define BOARD_H
 
-#include "cpu.h"
+#include "board_common.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -37,26 +37,27 @@ extern "C" {
 #define LED2_PIN            GPIO_PIN(0, 19)
 #define LED3_PIN            GPIO_PIN(0, 20)
 
+#define LED_PORT            (NRF_P0)
 #define LED0_MASK           (1 << 17)
 #define LED1_MASK           (1 << 18)
 #define LED2_MASK           (1 << 19)
 #define LED3_MASK           (1 << 20)
 
-#define LED0_ON             (NRF_P0->OUTCLR = LED0_MASK)
-#define LED0_OFF            (NRF_P0->OUTSET = LED0_MASK)
-#define LED0_TOGGLE         (NRF_P0->OUT   ^= LED0_MASK)
+#define LED0_ON             (LED_PORT->OUTCLR = LED0_MASK)
+#define LED0_OFF            (LED_PORT->OUTSET = LED0_MASK)
+#define LED0_TOGGLE         (LED_PORT->OUT   ^= LED0_MASK)
 
-#define LED1_ON             (NRF_P0->OUTCLR = LED1_MASK)
-#define LED1_OFF            (NRF_P0->OUTSET = LED1_MASK)
-#define LED1_TOGGLE         (NRF_P0->OUT   ^= LED1_MASK)
+#define LED1_ON             (LED_PORT->OUTCLR = LED1_MASK)
+#define LED1_OFF            (LED_PORT->OUTSET = LED1_MASK)
+#define LED1_TOGGLE         (LED_PORT->OUT   ^= LED1_MASK)
 
-#define LED2_ON             (NRF_P0->OUTCLR = LED2_MASK)
-#define LED2_OFF            (NRF_P0->OUTSET = LED2_MASK)
-#define LED2_TOGGLE         (NRF_P0->OUT   ^= LED2_MASK)
+#define LED2_ON             (LED_PORT->OUTCLR = LED2_MASK)
+#define LED2_OFF            (LED_PORT->OUTSET = LED2_MASK)
+#define LED2_TOGGLE         (LED_PORT->OUT   ^= LED2_MASK)
 
-#define LED3_ON             (NRF_P0->OUTCLR = LED3_MASK)
-#define LED3_OFF            (NRF_P0->OUTSET = LED3_MASK)
-#define LED3_TOGGLE         (NRF_P0->OUT   ^= LED3_MASK)
+#define LED3_ON             (LED_PORT->OUTCLR = LED3_MASK)
+#define LED3_OFF            (LED_PORT->OUTSET = LED3_MASK)
+#define LED3_TOGGLE         (LED_PORT->OUT   ^= LED3_MASK)
 /** @} */
 
 /**
@@ -73,11 +74,6 @@ extern "C" {
 #define BTN3_MODE           GPIO_IN_PU
 /** @} */
 
-/**
- * @brief   Initialize board specific hardware, including clock, LEDs and std-IO
- */
-void board_init(void);
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/boards/nrf52dk/include/gpio_params.h b/boards/nrf52dk/include/gpio_params.h
deleted file mode 100644
index 77525b4c87a1370d1c117c983a447cfcdddb5d16..0000000000000000000000000000000000000000
--- a/boards/nrf52dk/include/gpio_params.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (C) 2016 Freie Universität Berlin
- *
- * 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.
- */
-
-/**
- * @ingroup     boards_nrf52dk
- * @{
- *
- * @file
- * @brief       Configuration of SAUL mapped GPIO pins
- *
- * @author      Hauke Petersen <hauke.petersen@fu-berlin.de>
- * @author      Sebastian Meiling <s@mlng.net>
- */
-
-#ifndef GPIO_PARAMS_H
-#define GPIO_PARAMS_H
-
-#include "board.h"
-#include "saul/periph.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @brief    LED configuration
- */
-static const  saul_gpio_params_t saul_gpio_params[] =
-{
-    {
-        .name = "LED 1",
-        .pin = LED0_PIN,
-        .mode = GPIO_OUT
-    },
-    {
-        .name = "LED 2",
-        .pin = LED1_PIN,
-        .mode = GPIO_OUT
-    },
-    {
-        .name = "LED 3",
-        .pin = LED2_PIN,
-        .mode = GPIO_OUT
-    },
-    {
-        .name = "LED 4",
-        .pin = LED3_PIN,
-        .mode = GPIO_OUT
-    },
-    {
-        .name = "Button 1",
-        .pin  = BTN0_PIN,
-        .mode = BTN0_MODE
-    },
-    {
-        .name = "Button 2",
-        .pin  = BTN1_PIN,
-        .mode = BTN1_MODE
-    },
-    {
-        .name = "Button 3",
-        .pin  = BTN2_PIN,
-        .mode = BTN2_MODE
-    },
-    {
-        .name = "Button 4",
-        .pin  = BTN3_PIN,
-        .mode = BTN3_MODE
-    }
-};
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* GPIO_PARAMS_H */
-/** @} */
diff --git a/boards/nrf52dk/include/periph_conf.h b/boards/nrf52dk/include/periph_conf.h
deleted file mode 100644
index e9a82db84f0af09dceaed35074349ebe675d152c..0000000000000000000000000000000000000000
--- a/boards/nrf52dk/include/periph_conf.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (C) 2016-2017 Freie Universität Berlin
- *
- * 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.
- */
-
-/**
- * @ingroup     boards_nrf52dk
- * @{
- *
- * @file
- * @brief       Peripheral configuration for the nRF52 DK
- *
- * @author      Hauke Petersen <hauke.petersen@fu-berlin.de>
- *
- */
-
-#ifndef PERIPH_CONF_H
-#define PERIPH_CONF_H
-
-#include "periph_cpu.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @name    Clock configuration
- *
- * @note    The radio will not work with the internal RC oscillator!
- *
- * @{
- */
-#define CLOCK_HFCLK         (32U)           /* set to  0: internal RC oscillator
-                                             *        32: 32MHz crystal */
-#define CLOCK_LFCLK         (1)             /* set to  0: internal RC oscillator
-                                             *         1: 32.768 kHz crystal
-                                             *         2: derived from HFCLK */
-/** @} */
-
-/**
- * @name    Timer configuration
- * @{
- */
-static const timer_conf_t timer_config[] = {
-    {
-        .dev      =  NRF_TIMER1,
-        .channels =  3,
-        .bitmode  = TIMER_BITMODE_BITMODE_32Bit,
-        .irqn     = TIMER1_IRQn
-    }
-};
-
-#define TIMER_0_ISR         isr_timer1
-
-#define TIMER_NUMOF         (sizeof(timer_config) / sizeof(timer_config[0]))
-/** @} */
-
-/**
- * @name    Real time counter configuration
- * @{
- */
-#define RTT_NUMOF           (1U)
-#define RTT_DEV             (1)             /* NRF_RTC1 */
-#define RTT_MAX_VALUE       (0x00ffffff)
-#define RTT_FREQUENCY       (1024)
-/** @} */
-
-/**
- * @name    UART configuration
- * @{
- */
-#define UART_NUMOF          (1U)
-#define UART_PIN_RX         GPIO_PIN(0,8)
-#define UART_PIN_TX         GPIO_PIN(0,6)
-/** @} */
-
-/**
- * @name    SPI configuration
- * @{
- */
-static const spi_conf_t spi_config[] = {
-    {
-        .dev  = NRF_SPI0,
-        .sclk = 15,
-        .mosi = 13,
-        .miso = 14
-    }
-};
-
-#define SPI_NUMOF           (sizeof(spi_config) / sizeof(spi_config[0]))
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* PERIPH_CONF_H */