restructure and add makefile