major makefile refactoring