add source code and Makefile