diff --git a/Makefile b/Makefile
index cd5bd421c3242124343f830523d1e08628f058a2..1d41fa5b5e09f5004b73f417adb837c9188757bb 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-DIRS = $(RIOTCPU) core drivers sys 
+DIRS = $(RIOTCPU)/$(CPU) core drivers sys
 
 .PHONY: all clean doc
 
diff --git a/Makefile.base b/Makefile.base
index 624f74285c14b684fbbc0828888ec9912f01c1e9..500c6b6a8004c464c4d4df9c0d972d9a37e686ef 100644
--- a/Makefile.base
+++ b/Makefile.base
@@ -23,7 +23,7 @@ export CFLAGS += -DVERSION=\"$(GIT_VERSION)\"
 
 .PHONY: clean
 
-include $(RIOTCPU)/Makefile.base
+include $(RIOTCPU)/$(CPU)/Makefile.include
 include $(RIOTBOARD)/$(BOARD)/Makefile.include
 
 $(BINDIR)$(MODULE).a: $(OBJ) $(ASMOBJ)
diff --git a/Makefile.include b/Makefile.include
index 31f98056a5c711d8965af71f8c00477d7861c5b2..01311e4668381c33e2a29263373292bd0e5099ae 100644
--- a/Makefile.include
+++ b/Makefile.include
@@ -21,7 +21,7 @@ export BINDIR =$(CURDIR)/bin/
 
 # mandatory includes!
 include $(RIOTBOARD)/$(BOARD)/Makefile.include
-include $(RIOTCPU)/Makefile.include
+include $(RIOTCPU)/$(CPU)/Makefile.include
 include $(RIOTBASE)/Makefile.modules 
 
 # your binaries to link
diff --git a/cpu/Makefile b/cpu/Makefile
deleted file mode 100644
index 3988d3058b6b05ed45a5f2e7c6c2749577962e75..0000000000000000000000000000000000000000
--- a/cpu/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
-ifeq ($(CPU),lpc1768)
- DIRS = lpc1768
-endif
-
-ifeq ($(CPU),lpc2387)
- DIRS = arm_common lpc_common lpc2387
-endif
-
-ifeq ($(CPU),mc1322x)
-	DIRS = arm_common mc1322x
-endif
-
-ifeq ($(CPU),cc430)
- DIRS = msp430-common cc430
-endif
-
-ifeq ($(CPU),msp430x16x)
- DIRS = msp430-common msp430x16x
-endif
-
-ifeq ($(CPU),native)
- DIRS = native
-endif
-
-.PHONY: cpus
-.PHONY: $(DIRS)
-
-cpus: $(DIRS)
-
-$(DIRS): 
-	@"$(MAKE)" -C $@
-
-clean:
-	@"$(MAKE)" -C lpc1768 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
-	@"$(MAKE)" -C msp430x16x clean
-	@"$(MAKE)" -C native clean
diff --git a/cpu/Makefile.base b/cpu/Makefile.base
deleted file mode 100644
index 9e83ceec69da888941011530abe0b5f3fb2cb712..0000000000000000000000000000000000000000
--- a/cpu/Makefile.base
+++ /dev/null
@@ -1,24 +0,0 @@
-ifeq ($(CPU),lpc1768)
- INCLUDES += -I$(MAKEBASE)/cpu/lpc1768/include
-endif
-ifeq ($(CPU),lpc2387)
- INCLUDES += -I$(MAKEBASE)/cpu/arm_common/include/
- INCLUDES += -I$(MAKEBASE)/cpu/lpc_common/include/
- INCLUDES += -I$(MAKEBASE)/cpu/lpc2387/include
-endif
-ifeq ($(CPU),mc1322x)
- INCLUDES += -I$(MAKEBASE)/cpu/arm_common/include/
- INCLUDES += -I$(MAKEBASE)/cpu/mc1322x/include
-endif
-ifeq ($(CPU),msp430x16x)
- INCLUDES += -I$(MAKEBASE)/cpu/msp430-common/include/
- INCLUDES += -I$(MAKEBASE)/cpu/msp430x16x/include/
-endif
-ifeq ($(CPU),cc430)
- INCLUDES += -I$(MAKEBASE)/cpu/msp430-common/include/
- INCLUDES += -I$(MAKEBASE)/cpu/cc430/include/
-endif
-ifeq ($(CPU),native)
- INCLUDES += -I$(MAKEBASE)/cpu/native/include/
-endif
-
diff --git a/cpu/Makefile.include b/cpu/Makefile.include
deleted file mode 100644
index 5498061a250da83a76a31d869f616eb9b2f2484c..0000000000000000000000000000000000000000
--- a/cpu/Makefile.include
+++ /dev/null
@@ -1,19 +0,0 @@
-### Minimal setup
-ifeq ($(CPU),lpc1768)
-  export UNDEF += $(BINDIR)syscalls.o
-endif
-ifeq ($(CPU),lpc2387)
-  export USEMODULE += arm_common lpc_common
-  export UNDEF += $(BINDIR)syscalls.o $(BINDIR)lpc_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 UNDEF += $(BINDIR)mc1322x_syscalls.o
-  export INCLUDES += -I$(RIOTBASE)/cpu/arm_common/include
-endif
-ifeq ($(CPU),native)
-  export INCLUDES += -I$(RIOTCPU)/native/include
-endif
diff --git a/cpu/arm_common/Makefile.include b/cpu/arm_common/Makefile.include
new file mode 100644
index 0000000000000000000000000000000000000000..21a06d3fa7738fbacf7aa2c2aa2a294f8400a898
--- /dev/null
+++ b/cpu/arm_common/Makefile.include
@@ -0,0 +1,4 @@
+INCLUDES += -I$(MAKEBASE)/cpu/arm_common/include/
+
+export UNDEF += $(BINDIR)syscalls.o
+
diff --git a/cpu/cc430/Makefile b/cpu/cc430/Makefile
index 14776b83ffb0ef80fe18edddb6ba11bc7235b131..d08377bd38003f5b6e82baffbda4127755e87ef7 100644
--- a/cpu/cc430/Makefile
+++ b/cpu/cc430/Makefile
@@ -1,7 +1,7 @@
 MODULE = cpu
 
 INCLUDES += -I$(RIOTCPU)/$(CPU)/include -I$(RIOTBASE)/core/include -I$(RIOTBASE)/drivers/cc110x_ng/include
-DIRS =
+DIRS = $(RIOTCPU)/msp430-common
 
 all: $(BINDIR)$(MODULE).a
 	@for i in $(DIRS) ; do "$(MAKE)" -C $$i ; done ;
diff --git a/cpu/cc430/Makefile.include b/cpu/cc430/Makefile.include
new file mode 100644
index 0000000000000000000000000000000000000000..901122b7a6d439001ab627644eb8d6a4ec77dd21
--- /dev/null
+++ b/cpu/cc430/Makefile.include
@@ -0,0 +1,2 @@
+ INCLUDES += -I$(MAKEBASE)/cpu/cc430/include/
+
diff --git a/cpu/lpc1768/Makefile b/cpu/lpc1768/Makefile
index 4d2bc58f268b6ef57e121dd4417cdc5620a99fe9..263b41a37457ff5598a06788d4c1cffffbdb55ad 100644
--- a/cpu/lpc1768/Makefile
+++ b/cpu/lpc1768/Makefile
@@ -7,8 +7,7 @@ CC_SYMBOLS = -DTARGET_LPC1769 -DTOOLCHAIN_GCC_ARM -DNDEBUG -D__CORTEX_M3
 LD_FLAGS = -mcpu=cortex-m3 -mthumb -Wl,--gc-sections,-Map=$(PROJECT).map,--cref --specs=nano.specs
 LD_SYS_LIBS = -lc -lgcc -lnosys
 
-INCLUDES = -Iinclude
-INCLUDES += -I$(RIOTBASE)/core/include -I$(RIOTBASE)/sys/include -I$(RIOTBASE)/sys/lib 
+INCLUDES = -Iinclude -I$(RIOTBASE)/core/include -I$(RIOTBASE)/sys/include -I$(RIOTBASE)/sys/lib 
 
 all: $(BINDIR)$(MODULE).a
 
diff --git a/cpu/lpc1768/Makefile.include b/cpu/lpc1768/Makefile.include
new file mode 100644
index 0000000000000000000000000000000000000000..bacb82189b023b2cb34b389f89176f118ad1714d
--- /dev/null
+++ b/cpu/lpc1768/Makefile.include
@@ -0,0 +1,3 @@
+INCLUDES += -I$(MAKEBASE)/cpu/lpc1768/include
+
+export UNDEF += $(BINDIR)syscalls.o
diff --git a/cpu/lpc1768/include/LPC17xx.h b/cpu/lpc1768/include/LPC17xx.h
index 377fdf240afac5b49e8f426f472e3eaa7dc84cd0..bdc57c0d896dd5df953e1b86f3df4f042156f174 100644
--- a/cpu/lpc1768/include/LPC17xx.h
+++ b/cpu/lpc1768/include/LPC17xx.h
@@ -97,7 +97,6 @@ typedef enum IRQn
 
 
 #include "core_cm3.h"                       /* Cortex-M3 processor and core peripherals           */
-#include "system_LPC17xx.h"                 /* System Header                                      */
 
 
 /******************************************************************************/
diff --git a/cpu/lpc1768/include/cpu-conf.h b/cpu/lpc1768/include/cpu-conf.h
index 624edc7fbbd30df541948921136aeebc39138d68..1e426ce4477699e959156c066dcd2168af45cb0d 100644
--- a/cpu/lpc1768/include/cpu-conf.h
+++ b/cpu/lpc1768/include/cpu-conf.h
@@ -13,6 +13,8 @@
 #endif
 
 #define KERNEL_CONF_STACKSIZE_IDLE		1000
+
+#define UART0_BUFSIZE                   (128)
 /** @} */
 
 #endif /* CPU_CONF_H */
diff --git a/cpu/lpc2387/Makefile b/cpu/lpc2387/Makefile
index 627ac79289771518f38c461bed8ac53bd70e446e..461827d5f97535e3c4eca0f9599e3e7ba3b20069 100644
--- a/cpu/lpc2387/Makefile
+++ b/cpu/lpc2387/Makefile
@@ -1,7 +1,7 @@
 MODULE =cpu
 
 INCLUDES = -I../include -Idrivers/include -I../arm_common/include -I../../sys/lib -I../../drivers/include -I../../core/include -I../../sys/include -I../../hal/include -I../../.. 
-DIRS =
+DIRS = $(RIOTCPU)/arm_common $(RIOTCPU)/lpc_common
 ifneq (,$(findstring gpioint,$(USEMODULE)))
 	DIRS += gpioint
 endif
diff --git a/cpu/lpc2387/Makefile.include b/cpu/lpc2387/Makefile.include
new file mode 100644
index 0000000000000000000000000000000000000000..92ada6348208405aee5229a344cb16430906dcf1
--- /dev/null
+++ b/cpu/lpc2387/Makefile.include
@@ -0,0 +1,7 @@
+INCLUDES += -I$(RIOTCPU)/lpc2387/include
+
+include $(RIOTCPU)/arm_common/Makefile.include
+include $(RIOTCPU)/lpc_common/Makefile.include
+
+export USEMODULE += arm_common lpc_common
+
diff --git a/cpu/lpc_common/Makefile.include b/cpu/lpc_common/Makefile.include
new file mode 100644
index 0000000000000000000000000000000000000000..d90912db90429128a2d8619852414a3e027fbf50
--- /dev/null
+++ b/cpu/lpc_common/Makefile.include
@@ -0,0 +1,3 @@
+INCLUDES += -I$(RIOTCPU)/lpc_common/include
+
+export UNDEF += $(BINDIR)lpc_syscalls.o
diff --git a/cpu/mc1322x/Makefile b/cpu/mc1322x/Makefile
index 706aac84a56c7327f30d850b8cd90c654d1d9e1d..cb7f2993a00d69a8492adce0807990bbc1dafb35 100644
--- a/cpu/mc1322x/Makefile
+++ b/cpu/mc1322x/Makefile
@@ -1,6 +1,6 @@
 MODULE =cpu
 
-DIRS =
+DIRS = $(RIOTCPU)/arm_common
 ifneq (,$(findstring mc1322x_adc,$(USEMODULE)))
   DIRS += adc
 endif
diff --git a/cpu/mc1322x/Makefile.include b/cpu/mc1322x/Makefile.include
new file mode 100644
index 0000000000000000000000000000000000000000..9bc7621575ea308b23e73d048d303f2a379b7f79
--- /dev/null
+++ b/cpu/mc1322x/Makefile.include
@@ -0,0 +1,7 @@
+INCLUDES += -I$(MAKEBASE)/cpu/mc1322x/include
+
+include $(RIOTCPU)/arm_common/Makefile.include
+
+export UNDEF += $(BINDIR)mc1322x_syscalls.o
+
+export USEMODULE += arm_common
diff --git a/cpu/mc1322x/gpio.c b/cpu/mc1322x/gpio.c
index f238d052da90c58e0db0f009bc80e9f392dc8097..197e9351e409c611b4b5e13310732b42307ea814 100644
--- a/cpu/mc1322x/gpio.c
+++ b/cpu/mc1322x/gpio.c
@@ -10,19 +10,19 @@
 
 #include "gpio.h"
 
-inline void gpio_pad_dir(volatile uint64_t data) 
+static inline void gpio_pad_dir(volatile uint64_t data) 
 {
         GPIO->PAD_DIR0 = (data & 0xffffffff);
         GPIO->PAD_DIR1 = (data >> 32);
 }
 
-inline void gpio_data(volatile uint64_t data) 
+static inline void gpio_data(volatile uint64_t data) 
 {
         GPIO->DATA0 = (data & 0xffffffff);
         GPIO->DATA1 = (data >> 32);
 }
 
-inline uint64_t gpio_data_get(volatile uint64_t bits) {
+static inline uint64_t gpio_data_get(volatile uint64_t bits) {
         uint64_t rdata = 0;
 
         rdata = GPIO->DATA0 & (bits & 0xffffffff);
@@ -31,43 +31,43 @@ inline uint64_t gpio_data_get(volatile uint64_t bits) {
         return rdata;
 }
 
-inline void gpio_pad_pu_en(volatile uint64_t data) 
+static inline void gpio_pad_pu_en(volatile uint64_t data) 
 {
         GPIO->PAD_PU_EN0 = (data & 0xffffffff);
         GPIO->PAD_PU_EN1 = (data >> 32);
 }
 
-inline void gpio_data_sel(volatile uint64_t data) 
+static inline void gpio_data_sel(volatile uint64_t data) 
 {
         GPIO->DATA_SEL0 = (data & 0xffffffff);
         GPIO->DATA_SEL1 = (data >> 32);
 }
 
-inline void gpio_pad_pu_sel(volatile uint64_t data) 
+static inline void gpio_pad_pu_sel(volatile uint64_t data) 
 {
         GPIO->PAD_PU_SEL0 = (data & 0xffffffff);
         GPIO->PAD_PU_SEL1 = (data >> 32);
 }
 
-inline void gpio_data_set(volatile uint64_t data) 
+static inline void gpio_data_set(volatile uint64_t data) 
 {
         GPIO->DATA_SET0 = (data & 0xffffffff);
         GPIO->DATA_SET1 = (data >> 32);
 }
 
-inline void gpio_data_reset(volatile uint64_t data) 
+static inline void gpio_data_reset(volatile uint64_t data) 
 {
         GPIO->DATA_RESET0 = (data & 0xffffffff);
         GPIO->DATA_RESET1 = (data >> 32);
 }
 
-inline void gpio_pad_dir_set(volatile uint64_t data) 
+static inline void gpio_pad_dir_set(volatile uint64_t data) 
 {
         GPIO->PAD_DIR_SET0 = (data & 0xffffffff);
         GPIO->PAD_DIR_SET1 = (data >> 32);
 }
 
-inline void gpio_pad_dir_reset(volatile uint64_t data) 
+static inline void gpio_pad_dir_reset(volatile uint64_t data) 
 {
         GPIO->PAD_DIR_RESET0 = (data & 0xffffffff);
         GPIO->PAD_DIR_RESET1 = (data >> 32);
diff --git a/cpu/msp430-common/Makefile.include b/cpu/msp430-common/Makefile.include
new file mode 100644
index 0000000000000000000000000000000000000000..bd2f745e30fb355c6ac18c93bafe8bb02018f9f2
--- /dev/null
+++ b/cpu/msp430-common/Makefile.include
@@ -0,0 +1,2 @@
+INCLUDES += -I$(MAKEBASE)/cpu/msp430-common/include/
+
diff --git a/cpu/msp430x16x/Makefile b/cpu/msp430x16x/Makefile
index 421e3af303a40ecdc1fbb32601082bdb1200a127..0d95efd3a990d98affe688c295dc6dc7dd338316 100644
--- a/cpu/msp430x16x/Makefile
+++ b/cpu/msp430x16x/Makefile
@@ -1,7 +1,7 @@
 MODULE =cpu
 
 INCLUDES = -I../include -I$(RIOTBASE)/core/include
-DIRS =
+DIRS = $(RIOTCPU)/msp430-common/
 
 all: $(BINDIR)$(MODULE).a
 	@for i in $(DIRS) ; do "$(MAKE)" -C $$i ; done ;
diff --git a/cpu/msp430x16x/Makefile.include b/cpu/msp430x16x/Makefile.include
new file mode 100644
index 0000000000000000000000000000000000000000..b9dcae6d052f5331991201e4e343234d90ca7279
--- /dev/null
+++ b/cpu/msp430x16x/Makefile.include
@@ -0,0 +1,4 @@
+INCLUDES += -I$(RIOTCPU)/msp430x16x/include/
+
+include $(RIOTCPU)/msp430-common/Makefile.include
+
diff --git a/cpu/native/Makefile.include b/cpu/native/Makefile.include
new file mode 100644
index 0000000000000000000000000000000000000000..54626e3344d0806ad045862c34bb6b9f54526dfe
--- /dev/null
+++ b/cpu/native/Makefile.include
@@ -0,0 +1,2 @@
+export INCLUDES += -I$(RIOTCPU)/native/include
+