diff --git a/Makefile.include b/Makefile.include
index e5fadea98443d69fb7bbee05971f8115d5c46156..0ba16357ea678ffd66d56e134d00148b84d9e9ea 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/Makefile.modules b/Makefile.modules
index 7db789617300dd6f10bb9b0b8a1c61665b57d105..233f0416f2529e2fb74150ae5e72f40455061e60 100644
--- a/Makefile.modules
+++ b/Makefile.modules
@@ -1,26 +1,7 @@
 export MAKEBASE =$(RIOTBASE)
 export BINDIR =$(RIOTBASE)/bin/
-UNDEF =  $(BINDIR)startup.o
+UNDEF += $(BINDIR)startup.o
 
-### Minimal setup
-ifeq ($(CPU),lpc2387)
-  USEMODULE += arm_common
-  UNDEF += $(BINDIR)syscalls.o
-  export INCLUDES += -I$(RIOTBASE)/cpu/arm_common/include
-endif
-ifeq ($(CPU),lpc214x)
-  USEMODULE += arm_common
-  UNDEF += $(BINDIR)syscalls.o
-endif
-ifeq ($(CPU),native)
-  export INCLUDES += -I$(RIOTBASE)/cpu/native/include
-endif
-ifeq ($(CPU),stm32f407vgt6)
-	USEMODULE += stm32f4xxstdperi
-	UNDEF += $(BINDIR)syscalls.o
-endif
-
-#USEMODULE += cpu_drivers cpu core lib sys
 USEMODULE += cpu core sys
 ED = $(USEMODULE:%=-DMODULE_%)
 EXTDEFINES = $(shell echo $(ED)|tr 'a-z' 'A-Z')
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 36ee390405da85213c0c22eb7230204c21b5dec3..97d3d13d38ca8404284d3abe6974de8f9c980c8d 100644
--- a/cpu/arm_common/arm_cpu.c
+++ b/cpu/arm_common/arm_cpu.c
@@ -86,6 +86,8 @@ void thread_print_stack(void)
     printf("STACK (%u)= %X \n",i,*s);
 }
 
+/* LPC specific */
+#ifdef WDTC
 __attribute__((naked,noreturn)) void arm_reset(void)
 {
     dINT();
@@ -95,3 +97,4 @@ __attribute__((naked,noreturn)) void arm_reset(void)
     WDFEED= 0x55;
     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 0f0b418abed12894bf5c0c100c15e49e92ecf6ea..0e67f23589e753270fbbe274d6daf43bac7f683c 100644
--- a/cpu/arm_common/iap.c
+++ b/cpu/lpc_common/iap.c
@@ -1,13 +1,13 @@
 /* iap driver
  * 
  * based on iap driver for LPC2148 Controller made by Andreas Weschenfelder, 2008
- * see:
  * 
  */
 
 #include <irq.h>
 #include <flashrom.h>
 #include <iap.h>
+/* TODO: replace by a lpc generic header */
 #include <lpc2387.h>
 
 //#define ENABLE_DEBUG