updating so many things...still needs refactoring