diff --git a/Makefile.include b/Makefile.include
index e239c5cf1a7dd555c7a61a3f7b4ba29677f9242e..16d0697727db7f3faa8562fcb26da75b2cc38c43 100644
--- a/Makefile.include
+++ b/Makefile.include
@@ -1,3 +1,4 @@
+# set undefined variables
 ifeq ($(strip $(RIOTCPU)),)
 	export RIOTCPU =$(RIOTBASE)/cpu
 endif
@@ -11,8 +12,9 @@ BB = $(shell echo $(BOARD)|tr 'a-z' 'A-Z')
 CFLAGS += -DBOARD=$(BB)
 export CFLAGS
 
-# mandatory include! 
+# mandatory includes!
 include $(RIOTBOARD)/$(BOARD)/Makefile.include
+include $(RIOTCPU)/Makefile.include
 include $(RIOTBASE)/Makefile.modules 
 
 # your binaries to link
diff --git a/cpu/Makefile b/cpu/Makefile
index b0f6e8f4df5e6b83ba9379d2406a72298b81843a..19c8c895337e9dfcf4fd4bcfdf84d050dbc94473 100644
--- a/cpu/Makefile
+++ b/cpu/Makefile
@@ -1,9 +1,13 @@
 ifeq ($(CPU),lpc2387)
- DIRS = arm_common lpc2387
+ DIRS = arm_common lpc_common lpc2387
 endif
 
 ifeq ($(CPU),lpc214x)
- DIRS = arm_common lpc214x
+ DIRS = arm_common lpc_common lpc214x
+endif
+
+ifeq ($(CPU),mc1322x)
+	DIRS = arm_common mc1322x
 endif
 
 ifeq ($(CPU),cc430)
@@ -28,6 +32,8 @@ $(DIRS):
 
 clean:
 	@$(MAKE) -C lpc2387 clean
+	@$(MAKE) -C mc1322x clean
+	@$(MAKE) -C lpc_common clean
 	@$(MAKE) -C arm_common clean
 	@$(MAKE) -C cc430 clean
 	@$(MAKE) -C msp430-common clean
diff --git a/cpu/Makefile.include b/cpu/Makefile.include
new file mode 100644
index 0000000000000000000000000000000000000000..968ca3812b3ce45aca6d246a31f8e3a3f8151f31
--- /dev/null
+++ b/cpu/Makefile.include
@@ -0,0 +1,21 @@
+### Minimal setup
+ifeq ($(CPU),lpc2387)
+  export USEMODULE += arm_common lpc_common
+  export UNDEF += $(BINDIR)syscalls.o
+  export INCLUDES += -I$(RIOTCPU)/arm_common/include
+  export INCLUDES += -I$(RIOTCPU)/lpc_common/include
+endif
+ifeq ($(CPU),lpc214x)
+  export USEMODULE += arm_common lpc_common
+  export UNDEF += $(BINDIR)syscalls.o
+  export INCLUDES += -I$(RIOTCPU)/arm_common/include
+  export INCLUDES += -I$(RIOTCPU)/lpc_common/include
+endif
+ifeq ($(CPU),mc1322x)
+  export USEMODULE += arm_common
+  export UNDEF += $(BINDIR)syscalls.o
+  export INCLUDES += -I$(RIOTBASE)/cpu/arm_common/include
+endif
+ifeq ($(CPU),native)
+  export INCLUDES += -I$(RIOTBASE)/cpu/native/include
+endif
diff --git a/cpu/arm_common/arm_cpu.c b/cpu/arm_common/arm_cpu.c
index f2177dc7c31ebd5570a4bd85ddbcef3075c3e14b..49ef69dbb8fe3957dac97d243ff203a8100e0b8f 100644
--- a/cpu/arm_common/arm_cpu.c
+++ b/cpu/arm_common/arm_cpu.c
@@ -89,7 +89,9 @@ void thread_print_stack(void)
     printf("STACK (%u)= %X \n", i, *s);
 }
 
-__attribute__((naked, noreturn)) void arm_reset(void)
+/* LPC specific */
+#ifdef WDTC
+__attribute__((naked,noreturn)) void arm_reset(void)
 {
     dINT();
     WDTC   = 0x00FFF;
@@ -99,3 +101,4 @@ __attribute__((naked, noreturn)) void arm_reset(void)
 
     while (1);
 }
+#endif
diff --git a/cpu/lpc_common/Makefile b/cpu/lpc_common/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..b8ccbfb0ef894af4824bae1e5c2a535799cdc218
--- /dev/null
+++ b/cpu/lpc_common/Makefile
@@ -0,0 +1,4 @@
+MODULE =lpc_common
+
+include $(RIOTBASE)/Makefile.base
+
diff --git a/cpu/arm_common/hwtimer_cpu.c b/cpu/lpc_common/hwtimer_cpu.c
similarity index 100%
rename from cpu/arm_common/hwtimer_cpu.c
rename to cpu/lpc_common/hwtimer_cpu.c
diff --git a/cpu/arm_common/iap.c b/cpu/lpc_common/iap.c
similarity index 99%
rename from cpu/arm_common/iap.c
rename to cpu/lpc_common/iap.c
index 9c261cf5fdb249f26e68c74d9008651ed4ab895e..56dee0e69375dcd166ad99aeba94633388f8b483 100644
--- a/cpu/arm_common/iap.c
+++ b/cpu/lpc_common/iap.c
@@ -7,6 +7,7 @@
 #include <irq.h>
 #include <flashrom.h>
 #include <iap.h>
+/* TODO: replace by a lpc generic header */
 #include <lpc2387.h>
 
 #define ENABLE_DEBUG    (0)