Made Makefile completely abstract and reusable