restructure and add makefies