add makefile and explanation