add: better Makefile, complie only what you need