huge refactoring
updates!