much better makefile