Added source files, header files, and Makefile