diff --git a/make/crosstool.mk b/make/crosstool.mk
index f60f89b3..6326db9a 100644
--- a/make/crosstool.mk
+++ b/make/crosstool.mk
@@ -55,7 +55,7 @@ crosstool-arm-hd1: CROSS_DIR-check $(SOURCE_DIR)/$(NI_LINUX-KERNEL)
 		tar cf linux-$(KERNEL_VERSION).tar --exclude-vcs -C $(SOURCE_DIR)/$(NI_LINUX-KERNEL) . && \
 		mv linux-$(KERNEL_VERSION).tar $(BUILD_TMP)/crosstool-ng/targets/src/ && \
 		cp -a $(CONFIGS)/ct-ng-$(BOXTYPE)-$(BOXSERIES).config .config && \
-		sed -i "s@^CT_PARALLEL_JOBS=.*@CT_PARALLEL_JOBS=$(NUM_CPUS)@" .config && \
+		sed -i "s@^CT_PARALLEL_JOBS=.*@CT_PARALLEL_JOBS=$(PARALLEL_JOBS)@" .config && \
 		export NI_BASE_DIR=$(BASE_DIR) && \
 		export NI_CUSTOM_KERNEL=$(BUILD_TMP)/crosstool-ng/targets/src/linux-$(KERNEL_VERSION).tar && \
 		export NI_CUSTOM_KERNEL_VERSION=$(KERNEL_VERSION) && \
@@ -86,7 +86,7 @@ crosstool-arm-hd2: CROSS_DIR-check $(ARCHIVE)/gcc-linaro-$(GCC_VER).tar.xz $(SOU
 		tar cf linux-$(KERNEL_VERSION).tar --exclude-vcs -C $(SOURCE_DIR)/$(NI_LINUX-KERNEL) . && \
 		mv linux-$(KERNEL_VERSION).tar $(BUILD_TMP)/crosstool-ng/targets/src/ && \
 		cp -a $(CONFIGS)/ct-ng-$(BOXTYPE)-$(BOXSERIES).config .config && \
-		sed -i "s@^CT_PARALLEL_JOBS=.*@CT_PARALLEL_JOBS=$(NUM_CPUS)@" .config && \
+		sed -i "s@^CT_PARALLEL_JOBS=.*@CT_PARALLEL_JOBS=$(PARALLEL_JOBS)@" .config && \
 		export NI_BASE_DIR=$(BASE_DIR) && \
 		export NI_CUSTOM_KERNEL=$(BUILD_TMP)/crosstool-ng/targets/src/linux-$(KERNEL_VERSION).tar && \
 		export NI_CUSTOM_KERNEL_VERSION=$(KERNEL_VERSION) && \
@@ -117,7 +117,7 @@ crosstool-arm-hd51: CROSS_DIR-check
 		tar cf linux-$(KERNEL_VERSION).tar --exclude-vcs -C $(SOURCE_DIR)/$(NI_LINUX-KERNEL) . && \
 		mv linux-$(KERNEL_VERSION).tar $(BUILD_TMP)/crosstool-ng/targets/src/ && \
 		cp -a $(CONFIGS)/ct-ng-$(BOXTYPE)-$(BOXSERIES).config .config && \
-		sed -i "s@^CT_PARALLEL_JOBS=.*@CT_PARALLEL_JOBS=$(NUM_CPUS)@" .config && \
+		sed -i "s@^CT_PARALLEL_JOBS=.*@CT_PARALLEL_JOBS=$(PARALLEL_JOBS)@" .config && \
 		export NI_BASE_DIR=$(BASE_DIR) && \
 		export NI_CUSTOM_KERNEL=$(BUILD_TMP)/crosstool-ng/targets/src/linux-$(KERNEL_VERSION).tar && \
 		export NI_CUSTOM_KERNEL_VERSION=$(KERNEL_VERSION) && \
diff --git a/make/environment-build.mk b/make/environment-build.mk
index bec6b8ad..48044f6a 100644
--- a/make/environment-build.mk
+++ b/make/environment-build.mk
@@ -3,8 +3,6 @@
 #
 # -----------------------------------------------------------------------------
 
-NUM_CPUS=$$(expr `grep -c ^processor /proc/cpuinfo`)
-
 CONFIG_SITE =
 export CONFIG_SITE
 
@@ -13,7 +11,7 @@ export LD_LIBRARY_PATH
 
 SHELL := /bin/bash
 
-BASE_DIR    := $(shell pwd)
+# -----------------------------------------------------------------------------
 
 # assign box environment
 
@@ -111,6 +109,8 @@ else ifeq ($(BOXTYPE), armbox)
   BOXARCH = arm
 endif
 
+# -----------------------------------------------------------------------------
+
 ifndef BOXTYPE
   $(error BOXTYPE not set)
 endif
@@ -130,8 +130,17 @@ ifndef BOXMODEL
   $(error BOXMODEL not set)
 endif
 
+# -----------------------------------------------------------------------------
+
+# set up default parallelism
+PARALLEL_JOBS := $$(expr `grep -c ^processor /proc/cpuinfo`)
+override MAKE = make $(if $(findstring j,$(filter-out --%,$(MAKEFLAGS))),,-j$(PARALLEL_JOBS))
+
 MAKEFLAGS += --no-print-directory
 
+# -----------------------------------------------------------------------------
+
+BASE_DIR     := $(shell pwd)
 MAINTAINER   ?= NI-Team
 WHOAMI       := $(shell id -un)
 ARCHIVE       = $(BASE_DIR)/download
@@ -169,6 +178,8 @@ TARGET_INCLUDE_DIR = $(TARGET_DIR)/include
 # create debug image
 DEBUG ?= no
 
+# -----------------------------------------------------------------------------
+
 KERNEL_NAME = NI $(shell echo $(BOXMODEL) | sed 's/.*/\u&/') Kernel
 
 ifeq ($(BOXSERIES), hd1)
diff --git a/make/kernel-coolstream.mk b/make/kernel-coolstream.mk
index 3c5d92e0..90a34361 100644
--- a/make/kernel-coolstream.mk
+++ b/make/kernel-coolstream.mk
@@ -21,15 +21,15 @@ kernel-coolstream-install: kernel-coolstream-install-$(BOXSERIES)
 
 kernel-coolstream-install-all:
 	make clean BOXFAMILY=nevis
-	make -j$(NUM_CPUS) kernel-coolstream-hd1 BOXFAMILY=nevis
+	$(MAKE) kernel-coolstream-hd1 BOXFAMILY=nevis
 	make kernel-coolstream-install-hd1 BOXFAMILY=nevis
 	#
 	make clean BOXFAMILY=apollo
-	make -j$(NUM_CPUS) kernel-coolstream-hd2 BOXFAMILY=apollo
+	$(MAKE) kernel-coolstream-hd2 BOXFAMILY=apollo
 	make kernel-coolstream-install-hd2 BOXFAMILY=apollo
 	#
 	make clean BOXFAMILY=kronos
-	make -j$(NUM_CPUS) kernel-coolstream-hd2 BOXFAMILY=kronos
+	$(MAKE) kernel-coolstream-hd2 BOXFAMILY=kronos
 	make kernel-coolstream-install-hd2 BOXFAMILY=kronos
 	#
 	make clean BOXFAMILY=nevis > /dev/null 2>&1
diff --git a/make/ni.mk b/make/ni.mk
index 25fa7b27..b128542b 100644
--- a/make/ni.mk
+++ b/make/ni.mk
@@ -20,63 +20,63 @@ personalized-image:
 
 image \
 ni-image:
-	@echo "starting 'make $@' build with "$(NUM_CPUS)" threads!"
-	make -j$(NUM_CPUS) neutrino
+	@echo "starting 'make $@' build with "$(PARALLEL_JOBS)" threads!"
+	$(MAKE) neutrino
 	make plugins-all
 	make plugins-$(BOXSERIES)
 	make fbshot
-	make -j$(NUM_CPUS) luacurl
-	make -j$(NUM_CPUS) timezone
-	make -j$(NUM_CPUS) smartmontools
-	make -j$(NUM_CPUS) sg3-utils
-	make -j$(NUM_CPUS) nfs-utils
-	make -j$(NUM_CPUS) procps-ng
-	make -j$(NUM_CPUS) nano
+	$(MAKE) luacurl
+	$(MAKE) timezone
+	$(MAKE) smartmontools
+	$(MAKE) sg3-utils
+	$(MAKE) nfs-utils
+	$(MAKE) procps-ng
+	$(MAKE) nano
 	make hd-idle
-	make -j$(NUM_CPUS) e2fsprogs
-	make -j$(NUM_CPUS) ntfs-3g
-	make -j$(NUM_CPUS) exfat-utils
-	make -j$(NUM_CPUS) vsftpd
-	make -j$(NUM_CPUS) djmount
-	make -j$(NUM_CPUS) ushare
-	make -j$(NUM_CPUS) xupnpd
+	$(MAKE) e2fsprogs
+	$(MAKE) ntfs-3g
+	$(MAKE) exfat-utils
+	$(MAKE) vsftpd
+	$(MAKE) djmount
+	$(MAKE) ushare
+	$(MAKE) xupnpd
 	make inadyn
-	make -j$(NUM_CPUS) samba
+	$(MAKE) samba
 	make dropbear
-	make -j$(NUM_CPUS) hdparm
-	make -j$(NUM_CPUS) busybox
-	make -j$(NUM_CPUS) coreutils
-	make -j$(NUM_CPUS) dosfstools
-	make -j$(NUM_CPUS) wpa_supplicant
-	make -j$(NUM_CPUS) mtd-utils
-	make -j$(NUM_CPUS) wget
-	make -j$(NUM_CPUS) iconv
-	make -j$(NUM_CPUS) streamripper
+	$(MAKE) hdparm
+	$(MAKE) busybox
+	$(MAKE) coreutils
+	$(MAKE) dosfstools
+	$(MAKE) wpa_supplicant
+	$(MAKE) mtd-utils
+	$(MAKE) wget
+	$(MAKE) iconv
+	$(MAKE) streamripper
 ifeq ($(BOXSERIES), $(filter $(BOXSERIES), hd2 hd51))
 	make channellogos
-	make -j$(NUM_CPUS) less
-	make -j$(NUM_CPUS) parted
-	make -j$(NUM_CPUS) openvpn
-	make -j$(NUM_CPUS) openssh
-	make -j$(NUM_CPUS) ethtool
+	$(MAKE) less
+	$(MAKE) parted
+	$(MAKE) openvpn
+	$(MAKE) openssh
+	$(MAKE) ethtool
   ifneq ($(BOXMODEL), kronos_v2)
-	make -j$(NUM_CPUS) bash
-	make -j$(NUM_CPUS) iperf
-	make -j$(NUM_CPUS) minicom
-	make -j$(NUM_CPUS) mc
+	$(MAKE) bash
+	$(MAKE) iperf
+	$(MAKE) minicom
+	$(MAKE) mc
   endif
   ifeq ($(BOXSERIES), hd51)
-	make -j$(NUM_CPUS) ofgwrite
-	make -j$(NUM_CPUS) aio-grab
-	make -j$(NUM_CPUS) dvbsnoop
+	$(MAKE) ofgwrite
+	$(MAKE) aio-grab
+	$(MAKE) dvbsnoop
   endif
   ifeq ($(DEBUG), yes)
-	make -j$(NUM_CPUS) strace
-	make -j$(NUM_CPUS) valgrind
-	make -j$(NUM_CPUS) gdb
+	$(MAKE) strace
+	$(MAKE) valgrind
+	$(MAKE) gdb
   endif
 endif
-	make -j$(NUM_CPUS) kernel-$(BOXTYPE)-modules
+	$(MAKE) kernel-$(BOXTYPE)-modules
 	make autofs5
 	make scripts
 	make init-scripts