diff --git a/Makefile.buildtests b/Makefile.buildtests
index 1c161ef8ef43b3656b2abe70f9960bb5d3618e02..fde12f6974839d70f6cdae6ca1ca524189f2259b 100644
--- a/Makefile.buildtests
+++ b/Makefile.buildtests
@@ -169,8 +169,16 @@ info-build:
 	@echo 'ELFFILE: $(ELFFILE)'
 	@echo 'HEXFILE: $(HEXFILE)'
 	@echo ''
-	@echo 'FEATURES_REQUIRED: $(sort $(FEATURES_REQUIRED))'
-	@echo 'FEATURES_PROVIDED: $(sort $(FEATURES_PROVIDED))'
+	@echo 'FEATURES_REQUIRED (excl. optional features):'
+	@echo '         $(or $(sort $(filter-out $(FEATURES_OPTIONAL), $(FEATURES_REQUIRED))), -none-)'
+	@echo 'FEATURES_OPTIONAL (strictly "nice to have"):'
+	@echo '         $(or $(sort $(FEATURES_OPTIONAL)), -none-)'
+	@echo 'FEATURES_PROVIDED (by the board):'
+	@echo '         $(or $(sort $(FEATURES_PROVIDED)), -none-)'
+	@echo 'FEATURES_MISSING (incl. optional features):'
+	@echo '         $(or $(sort $(filter-out $(FEATURES_PROVIDED), $(FEATURES_REQUIRED))), -none-)'
+	@echo 'FEATURES_MISSING (only non-optional features):'
+	@echo '         $(or $(sort $(filter-out $(FEATURES_OPTIONAL) $(FEATURES_PROVIDED), $(FEATURES_REQUIRED))), -none-)'
 	@echo ''
 	@echo 'CC:      $(CC)'
 	@echo -e 'CFLAGS:$(patsubst %, \n\t%, $(CFLAGS))'
@@ -215,6 +223,8 @@ info-features-missing:
 info-boards-features-missing:
 	@for f in $(BOARDS_FEATURES_MISSING); do echo $${f}; done | column -t
 
+FEATURES_REQUIRED += $(FEATURES_OPTIONAL)
+
 ifneq (, $(filter info-boards-supported info-boards-features-missing info-build, $(MAKECMDGOALS)))
   FEATURES_PROVIDED_BAK := $(FEATURES_PROVIDED)
 
@@ -224,8 +234,11 @@ ifneq (, $(filter info-boards-supported info-boards-features-missing info-build,
 
     FEATURES_MISSING := $$(filter-out $$(FEATURES_PROVIDED), $$(FEATURES_REQUIRED))
     ifneq (, $${FEATURES_MISSING})
-      BOARDS_WITH_MISSING_FEATURES += ${1}
       BOARDS_FEATURES_MISSING += "${1} $${FEATURES_MISSING}"
+
+      ifneq (, $$(filter-out $$(FEATURES_OPTIONAL), $$(FEATURES_MISSING)))
+        BOARDS_WITH_MISSING_FEATURES += ${1}
+      endif
     endif
   endef
 
diff --git a/Makefile.include b/Makefile.include
index 5daf23058cf419eedd078771f1dda23a9637a32a..16a34ee622ce02601b7f89b879ca9988bccf02de 100644
--- a/Makefile.include
+++ b/Makefile.include
@@ -219,9 +219,9 @@ ifneq (, $(filter all, $(if $(MAKECMDGOALS), $(MAKECMDGOALS), all)))
   endif
 
   # Test if all feature requirements were met by the selected board.
-  ifneq (, $(filter-out $(FEATURES_PROVIDED), $(FEATURES_REQUIRED)))
+  ifneq (, $(filter-out $(FEATURES_PROVIDED) $(FEATURES_OPTIONAL), $(FEATURES_REQUIRED)))
     $(shell $(COLOR_ECHO) "$(COLOR_RED)There are unsatisfied feature requirements:$(COLOR_RESET)"\
-                          "$(filter-out $(FEATURES_PROVIDED), $(FEATURES_REQUIRED))" 1>&2)
+                          "$(sort $(filter-out $(FEATURES_PROVIDED) $(FEATURES_OPTIONAL), $(FEATURES_REQUIRED)))" 1>&2)
     EXPECT_ERRORS := 1
   endif
 
diff --git a/examples/default/Makefile b/examples/default/Makefile
index 33746afc9ca7ece17553d9ac86db302c8a4d1b1b..fa481bfd49950988f4cf65490f5f0c89b04c3547 100644
--- a/examples/default/Makefile
+++ b/examples/default/Makefile
@@ -36,6 +36,8 @@ USEMODULE += ps
 USEMODULE += vtimer
 USEMODULE += defaulttransceiver
 
+FEATURES_OPTIONAL += transceiver
+
 ifneq (,$(filter msb-430,$(BOARD)))
 	USEMODULE += sht11
 endif