modularized makefile