new makefile and structure