refactor, break up some files, update readme