add the basis of 4, and change the Makefile