perfect Makefile