every decent project needs a makefile