improved makefile rules