major restructure; introducing makefile