write good makefile first