diff --git a/Makefile.features b/Makefile.features
new file mode 100644
index 0000000000000000000000000000000000000000..adb95de06eb447b3a3c51c0e73bdf0d05eb7983b
--- /dev/null
+++ b/Makefile.features
@@ -0,0 +1,8 @@
+# import list of provided features
+-include $(RIOTBOARD)/$(BOARD)/Makefile.features
+-include $(RIOTCPU)/$(CPU)/Makefile.features
+
+DEFAULT_FEATURES += periph_pm
+
+# add available default features to required list
+FEATURES_REQUIRED += $(filter-out $(DISABLE_FEATURES), $(filter $(FEATURES_PROVIDED), $(DEFAULT_FEATURES)))
diff --git a/Makefile.include b/Makefile.include
index 7fc769c7146f3bd52150cf7d1385ff87acab43b5..196810d085fdc5ed2a12831d88000c850007d2b9 100644
--- a/Makefile.include
+++ b/Makefile.include
@@ -398,8 +398,8 @@ $(CURDIR)/eclipsesym.xml:
 # Extra make goals for testing and comparing changes.
 include $(RIOTBASE)/Makefile.buildtests
 
-# import list of provided features
--include $(RIOTBOARD)/$(BOARD)/Makefile.features
+# process provided features
+include $(RIOTBASE)/Makefile.features
 
 # Export variables used throughout the whole make system:
 include $(RIOTBASE)/Makefile.vars