generalizing Makefile