put implementation code in cpp files, cleanup makefile a bit