improved makefile and project structure