Please refer to readme.pdf for details