diff --git a/MMakefile b/MMakefile
index ff1be3f310e43d71fb9234e52384434106b1b72f..dac19fb247a00d3667d80578bb83197192762d02 100644
--- a/MMakefile
+++ b/MMakefile
@@ -1,7 +1,7 @@
 #-------------------------------------------------------------------------------
 # MASTER MAKEFILE FOR PYZENKIT PACKAGE
 #
-# Copyright (C) since 2016 CESNET, z.s.p.o (http://www.ces.net/)
+# Copyright (C) since 2015 CESNET, z.s.p.o (http://www.ces.net/)
 # Copyright (C) since 2015 Jan Mach <honza.mach.ml@gmail.com>
 # Use of this package is governed by the MIT license, see LICENSE file.
 #
@@ -14,14 +14,41 @@ DIR_LIB = pyzenkit
 DIST_SIZE:=$(shell ls dist | wc -l)
 
 #
-# Default make target.
+# Color code definitions for colored terminal output
+# https://stackoverflow.com/questions/5947742/how-to-change-the-output-color-of-echo-in-linux
 #
-all: docs archive bdist deploy
+RED=\033[0;31m
+GREEN=\033[0;32m
+ORANGE=\033[0;33m
+NC=\033[0m
 
+
+#-------------------------------------------------------------------------------
+
+
+#
+# Default make target, alias for 'help', you must explicitly choose the target.
+#
+default: help
+
+#
+# Perform all reasonable tasks to do full build.
+#
+full: docs archive bdist deploy
+
+#
+# Perform local build.
+#
 build: archive bdist
 
+#
+# Perfom build from automated system.
+#
 buildbot: bdist
 
+#
+# Check the project code.
+#
 check: pyflakes pylint test
 
 
@@ -29,82 +56,83 @@ check: pyflakes pylint test
 
 
 help:
-	$(info List of possible make targets:)
-	$(info   )
-	$(info   * all: archive previous packages, build new distribution and deploy to PyPI [default])
-	$(info   * build: archive previous packages and build new distribution)
-	$(info   * buildbot: build new distribution using buildbot automated system)
-	$(info   * docs: generate project documentation)
-	$(info   * check: perform extensive code checking)
-	$(info      = pyflakes: check source code with pyflakes)
-	$(info      = pylint: check source code with pylint)
-	$(info      = test: run unit tests with nosetest)
-	$(info   * archive: archive previous packages)
-	$(info   * bdist:   build new distribution)
-	$(info   * install: install distribution on local machine)
-	$(info   * deploy:  deploy to PyPI)
-	$(info   )
+	@echo ""
+	@echo "${RED}LIST OF MAKE TARGETS:${NC}"
+	@echo ""
+	@echo "  * ${GREEN}default${NC}: alias for help, you have to pick a target"
+	@echo "  * ${GREEN}help${NC}: print this help and exit"
+	@echo "  * ${GREEN}full${NC}: generate documentation, archive previous packages, build new distribution and deploy to PyPI"
+	@echo "  * ${GREEN}build${NC}: archive previous packages and build new distribution"
+	@echo "  * ${GREEN}buildbot${NC}: build new distribution using buildbot automated system"
+	@echo "  * ${GREEN}deps${NC}: install various dependencies"
+	@echo "     = ${ORANGE}deps-python${NC}: install Python dependencies with pip3"
+	@echo "  * ${GREEN}docs${NC}: generate project documentation"
+	@echo "  * ${GREEN}check${NC}: perform extensive code checking"
+	@echo "     = ${ORANGE}pyflakes${NC}: check source code with pyflakes"
+	@echo "     = ${ORANGE}pylint${NC}: check source code with pylint"
+	@echo "     = ${ORANGE}test${NC}: run unit tests with nosetest"
+	@echo "  * ${GREEN}archive${NC}: archive previous packages"
+	@echo "  * ${GREEN}bdist${NC}:   build new distribution"
+	@echo "  * ${GREEN}install${NC}: install distribution on local machine"
+	@echo "  * ${GREEN}deploy${NC}:  deploy to PyPI"
+	@echo ""
+
+
+#-------------------------------------------------------------------------------
+
+
+deps: deps-python
+
+deps-python: FORCE
+	@echo "\n${GREEN}*** Installing Python dependencies ***${NC}\n"
+	@sudo pip3 install -r requirements.pip --upgrade
 
 
 #-------------------------------------------------------------------------------
 
 
 docs: FORCE
-	echo "*** Generating project documentation ***"
-	#make clean
-	#make apidoc
-	make html
+	@echo "\n${GREEN}*** Generating project documentation ***${NC}\n"
+	@make html
 
 
 #-------------------------------------------------------------------------------
 
 
 pyflakes: FORCE
-	echo "*** Checking code with pyflakes ***"
-	python3 -m pyflakes $(DIR_LIB)/*.py
+	@echo "\n${GREEN}*** Checking code with pyflakes ***${NC}\n"
+	@python3 -m pyflakes $(DIR_LIB)/*.py
 
 pylint: FORCE
-	echo "*** Checking code with pylint ***"
-	python3 -m pylint $(DIR_LIB)/*.py --rcfile .pylintrc
+	@echo "\n${GREEN}*** Checking code with pylint ***${NC}\n"
+	@python3 -m pylint $(DIR_LIB)/*.py --rcfile .pylintrc
 
 test: FORCE
-	echo "*** Checking code with nosetests ***"
-	nosetests
+	@echo "\n${GREEN}*** Checking code with nosetests ***${NC}\n"
+	@nosetests
 
 
 #-------------------------------------------------------------------------------
 
 
-# Move old distribution files to archive directory
 archive: FORCE
-	$(info Checking if dist archivation is needed)
 	@if ! [ `ls dist/pyzenkit* | wc -l` = "0" ]; then\
-		echo "Moving old distribution files to archive";\
+		echo "\n${GREEN}*** Moving old distribution files to archive ***${NC}\n";\
 		mv -f dist/pyzenkit* archive;\
 	fi
 
-# Build various Python package distributions
 bdist: FORCE
-	$(info Building distributions)
+	@echo "\n${GREEN}*** Building Python packages ***${NC}\n"
+	@python3 setup.py sdist bdist_wheel
 
-	# Build and upload (insecure)
-	#python3 setup.py sdist bdist_wheel upload
-
-	# Build only
-	python3 setup.py sdist bdist_wheel
-
-# Perform installation from local files for Python 3
 install: FORCE
-	$(info Local installation)
-	sudo pip3 install dist/pyzenkit*.whl --upgrade
+	@echo "\n${GREEN}*** Performing local installation ***${NC}\n"
+	@sudo pip3 install dist/pyzenkit*.whl --upgrade
 
-# Deploy latest packages to PyPI
 deploy: FORCE
-	$(info PyPI deployment)
-
-	# Secure upload with Twine
-	twine upload dist/*
+	@echo "\n${GREEN}*** Deploying packages to PyPI ***${NC}\n"
+	twine upload dist/* --skip-existing
 
-# Empty rule as dependency wil force make to always perform target
+# Empty rule as dependency will force make to always perform target
 # Source: https://www.gnu.org/software/make/manual/html_node/Force-Targets.html
 FORCE:
diff --git a/requirements.pip b/requirements.pip
new file mode 100644
index 0000000000000000000000000000000000000000..571fc8aa62bb9ff2da7757da8b8163da4d7b56c8
--- /dev/null
+++ b/requirements.pip
@@ -0,0 +1,2 @@
+jsonschema
+pydgets