refactor and lots of new stuff