diff --git a/Makefile b/Makefile
index ca2faf9091c1cced6a6d53a9ff3dbfac12c918f8..945cb8a8a3b13091b6dd88442504ce8cf92b6489 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-DIRS = cpu core drivers sys 
+DIRS = $(RIOTCPU) core drivers sys 
 
 all:
 	mkdir -p $(BINDIR)
diff --git a/Makefile.base b/Makefile.base
index a2274f864ba56ac5817eaa07bbece3a2feb9446f..8419c511af1c607d56a43113d38198fb9fe9634d 100644
--- a/Makefile.base
+++ b/Makefile.base
@@ -4,43 +4,8 @@ SRC = $(wildcard *.c)
 OBJ = $(SRC:%.c=$(BINDIR)%.o)
 DEP = $(SRC:%.c=$(BINDIR)%.d)
 
-ifeq ($(CPU),lpc2387)
- INCLUDES += -I$(MAKEBASE)/cpu/arm_common/include/
- INCLUDES += -I$(MAKEBASE)/cpu/lpc2387/include
-endif
-ifeq ($(CPU),lpc214x)
- INCLUDES += -I$(MAKEBASE)/cpu/arm_common/include/
- INCLUDES += -I$(MAKEBASE)/cpu/lpc214x/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
-ifeq ($(BOARD),msba2)
- INCLUDES += -I$(RIOTBOARD)/msba2/include/
- INCLUDES += -I$(RIOTBOARD)/msba2-common/include/
- INCLUDES += -I$(RIOTBOARD)/msba2-common/drivers/include/
-endif
-ifeq ($(BOARD),msb-430)
- INCLUDES += -I$(RIOTBOARD)/msb-430/include/
- INCLUDES += -I$(RIOTBOARD)/msb-430-common/include/
- INCLUDES += -I$(RIOTBOARD)/msb-430-common/drivers/include/
-endif
-ifeq ($(BOARD),msb-430h)
- INCLUDES += -I$(RIOTBOARD)/msb-430h/include/
- INCLUDES += -I$(RIOTBOARD)/msb-430-common/include/
- INCLUDES += -I$(RIOTBOARD)/msb-430-common/drivers/include/
-endif
-ifeq ($(BOARD),native)
- INCLUDES += -I$(RIOTBOARD)/native/include/
-endif
+include $(RIOTCPU)/Makefile.base
+include $(RIOTBOARD)/Makefile.base
 
 $(BINDIR)$(MODULE).a: $(OBJ) $(ASMOBJ)
 	$(AR) -rc $(BINDIR)$(MODULE).a $(OBJ) $(ASMOBJ)
@@ -55,7 +20,7 @@ $(BINDIR)%.o: %.c
 	@printf "$(BINDIR)"|cat - $(BINDIR)$*.d > /tmp/riot_out && mv /tmp/riot_out $(BINDIR)$*.d
 
 $(BINDIR)%.o: %.s
-	$(AS) $(ASFLAGS) $*.s -o $(BINDIR)$*.o
+	@$(AS) $(ASFLAGS) $*.s -o $(BINDIR)$*.o
 
 # remove compilation products
 clean::
diff --git a/Makefile.dep b/Makefile.dep
index e23725d442fc2e28f36dce508b976b9a6ba855eb..00844b493307a0f88d825f3bd3b6cd4313dde126 100644
--- a/Makefile.dep
+++ b/Makefile.dep
@@ -14,24 +14,10 @@ ifneq (,$(findstring uart0,$(USEMODULE)))
 endif
 
 ifneq (,$(findstring cc110x_ng,$(USEMODULE)))
-  ifeq (,$(findstring transceiver,$(USEMODULE)))
-	USEMODULE += transceiver
-  endif
-
-  ifneq (,$(findstring msba2,$(BOARD)))
-  	USEMODULE += cc110x_spi
-	ifeq (,$(findstring gpioint,$(USEMODULE)))
-		USEMODULE += gpioint
+	ifeq (,$(findstring transceiver,$(USEMODULE)))
+		USEMODULE += transceiver
 	endif
 	ifeq (,$(findstring hwtimer,$(USEMODULE)))
 		USEMODULE += hwtimer
 	endif
-  endif
-  ifneq (,$(findstring msb-430h,$(BOARD)))
-  	USEMODULE += cc110x_spi
-	ifeq (,$(findstring hwtimer,$(USEMODULE)))
-		USEMODULE += hwtimer
-	endif
-  endif
 endif
-
diff --git a/Makefile.include b/Makefile.include
index b345a8b017c62c5875282ef3ea2691c2a2cdbade..daee2f2db8b0af83ab0940d819968efccbaf5d3d 100644
--- a/Makefile.include
+++ b/Makefile.include
@@ -1,3 +1,8 @@
+ifeq ($(strip $(RIOTCPU)),)
+	export RIOTCPU =$(RIOTBASE)/cpu
+endif
+	
+
 # if you want to publish the board into the sources as an uppercase #define
 BB = $(shell echo $(BOARD)|tr 'a-z' 'A-Z')
 CFLAGS += -DBOARD=$(BB)
@@ -18,9 +23,9 @@ all: $(PROJBINDIR)/$(PROJECT).a
 	@echo "Building project $(PROJECT) for $(BOARD) w/ MCU $(CPU)."
 	$(MAKE) -C $(RIOTBOARD)
 	$(MAKE) -C $(RIOTBASE)
-	$(LINK) $(UNDEF) -o $(PROJBINDIR)/$(PROJECT).elf -Wl,--start-group $(BASELIBS) -lm -Wl,--end-group  -Wl,-Map=$(PROJBINDIR)/$(PROJECT).map $(LINKFLAGS) 
-	$(SIZE) $(PROJBINDIR)/$(PROJECT).elf
-	$(OBJCOPY) -O ihex $(PROJBINDIR)/$(PROJECT).elf $(PROJBINDIR)/$(PROJECT).hex
+	@$(LINK) $(UNDEF) -o $(PROJBINDIR)/$(PROJECT).elf -Wl,--start-group $(BASELIBS) -lm -Wl,--end-group  -Wl,-Map=$(PROJBINDIR)/$(PROJECT).map $(LINKFLAGS) 
+	@$(SIZE) $(PROJBINDIR)/$(PROJECT).elf
+	@$(OBJCOPY) -O ihex $(PROJBINDIR)/$(PROJECT).elf $(PROJBINDIR)/$(PROJECT).hex
 
 ## your make rules
 ## Only basic example - modify it for larger projects!!
diff --git a/Makefile.modules b/Makefile.modules
index 94f123c06acd19cea56bff6618e4d68168e053d8..7db789617300dd6f10bb9b0b8a1c61665b57d105 100644
--- a/Makefile.modules
+++ b/Makefile.modules
@@ -1,6 +1,5 @@
 export MAKEBASE =$(RIOTBASE)
 export BINDIR =$(RIOTBASE)/bin/
-#UNDEF =  $(BINDIR)startup.o $(BINDIR)builddate.o
 UNDEF =  $(BINDIR)startup.o
 
 ### Minimal setup
@@ -16,12 +15,13 @@ endif
 ifeq ($(CPU),native)
   export INCLUDES += -I$(RIOTBASE)/cpu/native/include
 endif
-ifeq ($(CPU),cc430)
-USEMODULE += cpu core lib sys
-else
+ifeq ($(CPU),stm32f407vgt6)
+	USEMODULE += stm32f4xxstdperi
+	UNDEF += $(BINDIR)syscalls.o
+endif
+
 #USEMODULE += cpu_drivers cpu core lib sys
 USEMODULE += cpu core sys
-endif
 ED = $(USEMODULE:%=-DMODULE_%)
 EXTDEFINES = $(shell echo $(ED)|tr 'a-z' 'A-Z')
 BL=$(USEMODULE:%= $(BINDIR)%.a)
diff --git a/core/Makefile b/core/Makefile
index 08d75b1707649947da896f1dae05f348d9d534ae..4bf9f52402e446e7dc609e62727bd9761b16de25 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -1,5 +1,5 @@
 MODULE =core
 
-INCLUDES = -Iinclude/ -I../sys/include -I../sys/lib -I../sys/drivers/include -I../cpu/$(CPU)/include/ -I../.. -I../drivers/include/
+INCLUDES = -Iinclude/ -I../sys/include -I../sys/lib -I../sys/drivers/include -I$(RIOTCPU)/$(CPU)/include/ -I../.. -I../drivers/include/
 
 include $(RIOTBASE)/Makefile.base
diff --git a/cpu/Makefile.base b/cpu/Makefile.base
new file mode 100644
index 0000000000000000000000000000000000000000..4772bde338960dd6274779a66c676096c062c952
--- /dev/null
+++ b/cpu/Makefile.base
@@ -0,0 +1,20 @@
+ifeq ($(CPU),lpc2387)
+ INCLUDES += -I$(MAKEBASE)/cpu/arm_common/include/
+ INCLUDES += -I$(MAKEBASE)/cpu/lpc2387/include
+endif
+ifeq ($(CPU),lpc214x)
+ INCLUDES += -I$(MAKEBASE)/cpu/arm_common/include/
+ INCLUDES += -I$(MAKEBASE)/cpu/lpc214x/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/dist/Makefile b/dist/Makefile
index ef29cadbe822df053afb12f1b120dc5eef2c65e3..4677cf1710719f9275a9aff64a2b698e293383e5 100644
--- a/dist/Makefile
+++ b/dist/Makefile
@@ -5,7 +5,7 @@
 #### /this makefile
 #### ../../RIOT 
 #### ../../boards   for board definitions (if you have one or more)
-####/.. 
+#### 
 
 # name of your project
 export PROJECT =foobar
@@ -15,6 +15,7 @@ export BOARD = msb-430
 
 # this has to be the absolute path of the RIOT-base dir
 export RIOTBASE =$(CURDIR)/../../RIOT
+export RIOTCPU =$(CURDIR)/../../RIOT/cpu
 export RIOTBOARD =$(CURDIR)/../../boards
 
 ## Modules to include. 
@@ -28,6 +29,6 @@ export RIOTBOARD =$(CURDIR)/../../boards
 #USEMODULE += cc110x
 #USEMODULE += fat
 
-export INCLUDES = -I$(RIOTBOARD)/$(BOARD)/include -I$(RIOTBASE)/core/include -I$(RIOTBASE)/cpu/$(CPU)/include -I$(RIOTBASE)/sys/lib -I$(RIOTBASE)/sys/include/ -I$(RIOTBASE)/drivers/include/
+export INCLUDES = -I$(RIOTBOARD)/$(BOARD)/include -I$(RIOTBASE)/core/include -I$(RIOTCPU)/$(CPU)/include -I$(RIOTBASE)/sys/lib -I$(RIOTBASE)/sys/include/ -I$(RIOTBASE)/drivers/include/
 
 include $(RIOTBASE)/Makefile.include
diff --git a/sys/Makefile b/sys/Makefile
index df535749d4588d8742bbeec288a597c20f2a2799..7f5188b453ab9b326d7cbd7e7a340e5e4afe1003 100644
--- a/sys/Makefile
+++ b/sys/Makefile
@@ -1,5 +1,4 @@
-
-INCLUDES = -Iinclude -I$(RIOTBASE)/drivers/ -I$(RIOTBASE)/drivers/include -Ilib -I../.. -I../cpu/$(CPU)/include -I../cpu/ -Ilib/cmdengine -Inet -I../hal/include -I../core/include -Iconfig
+INCLUDES = -Iinclude -I$(RIOTBASE)/drivers/ -I$(RIOTBASE)/drivers/include -Ilib -I$(RIOTCPU)/$(CPU)/include -Inet -I../core/include
 
 MODULE =sys
 ifneq (,$(findstring auto_init,$(USEMODULE)))
diff --git a/sys/lib/Makefile b/sys/lib/Makefile
index 18996f3c34a3d714ccb6c70529cfaa73092e199c..2a10bf68c4bcaabda93ec8340f6ebba5a69a88a0 100644
--- a/sys/lib/Makefile
+++ b/sys/lib/Makefile
@@ -1,4 +1,4 @@
-INCLUDES = -I../include -I../drivers/include -I../lib -I../../cpu/$(CPU)/include -I../../cpu/ -I../lib/cmdengine -I../net -I../../hal/include -I../../core/include -I../config
+INCLUDES = -I../include -I../drivers/include -I../lib -I$(RIOTCPU)/$(CPU)/include -I../net -I../../core/include
 MODULE =lib
 
 include $(RIOTBASE)/Makefile.base
diff --git a/sys/logd/Makefile b/sys/logd/Makefile
index af6415cf276ede6b75b28234dad59561dc1985c2..6b81d22e04b4d14916f21cb38a94a9f659be784a 100644
--- a/sys/logd/Makefile
+++ b/sys/logd/Makefile
@@ -1,7 +1,6 @@
-INCLUDES = -I../include -I../drivers/include -I../lib -I../../cpu/$(CPU)/include -I../../cpu/ -I../lib/cmdengine -I../net -I../../hal/include -I../../core/include -I../config
+INCLUDES = -I../include -I../drivers/include -I../lib -I$(RIOTCPU)/$(CPU)/include  -I../net -I../../core/include
 
 MODULE =logd
 
 include $(MAKEBASE)/Makefile.base
 
-
diff --git a/sys/syslog/Makefile b/sys/syslog/Makefile
index 6d9a30e8f06a2cb5a2e6736f18b019b1e8c277c3..54d7db9bcd8d95726c54120cfdaf5b232cb5f7af 100644
--- a/sys/syslog/Makefile
+++ b/sys/syslog/Makefile
@@ -1,4 +1,4 @@
-INCLUDES = -I../include -I../drivers/include -I../lib -I../../cpu/$(CPU)/include -I../../cpu/ -I../lib/cmdengine -I../net -I../../hal/include -I../../core/include -I../config
+INCLUDES = -I../include -I../drivers/include -I../lib -I$(RIOTCPU)/$(CPU)/include -I../net -I../../core/include
 MODULE =syslog
 
 include $(MAKEBASE)/Makefile.base
diff --git a/sys/tracelog/Makefile b/sys/tracelog/Makefile
index 350c65eb1dc5818769e6562860795ea5f4b3d0fd..5b10ef31d805d6d3094105ca193196fdf8a6bc00 100644
--- a/sys/tracelog/Makefile
+++ b/sys/tracelog/Makefile
@@ -1,4 +1,4 @@
-INCLUDES = -I../include -I../drivers/include -I../lib -I../../cpu/$(CPU)/include -I../../cpu/ -I../lib/cmdengine -I../net -I../../hal/include -I../../core/include -I../config
+INCLUDES = -I../include -I../drivers/include -I../lib -I$(RIOTCPU)/$(CPU)/include -I../net -I../../core/include 
 MODULE =tracelog
 
 include $(MAKEBASE)/Makefile.base
diff --git a/sys/transceiver/Makefile b/sys/transceiver/Makefile
index cc75d9d7d720e358d66c1de10870b2734ba9fa7e..3d01f44b6d9b2ea5621f404d2bfa6ddd175e74c2 100644
--- a/sys/transceiver/Makefile
+++ b/sys/transceiver/Makefile
@@ -1,4 +1,4 @@
-INCLUDES = -I../include -I$(RIOTBAE)/drivers/include -I$(RIOTBASE)/drivers/cc110x_ng/include -I../lib -I../../cpu/$(CPU)/include -I../../cpu/ -I../net -I../../hal/include -I../../core/include -I../config
+INCLUDES = -I../include -I$(RIOTBAE)/drivers/include -I$(RIOTBASE)/drivers/cc110x_ng/include -I../lib -I$(RIOTCPU)/$(CPU)/include -I../net -I../../core/include 
 MODULE =transceiver
 
 include $(MAKEBASE)/Makefile.base
diff --git a/sys/uart0/Makefile b/sys/uart0/Makefile
index 2f2d2f238c0297534ce3d648d6daa19ac36e7f28..39ca411fbff335d74d20ff0ffc65be2b6b7aaa35 100644
--- a/sys/uart0/Makefile
+++ b/sys/uart0/Makefile
@@ -1,4 +1,4 @@
-INCLUDES = -I../include -I../drivers/include -I../lib -I../../cpu/$(CPU)/include -I../../cpu/ -I../lib/cmdengine -I../net -I../../hal/include -I../../core/include -I../config
+INCLUDES = -I../include -I../drivers/include -I../lib -I$(RIOTCPU)/$(CPU)/include -I../net -I../../core/include 
 
 MODULE =uart0