completely reorganized the project to be nice and usable