refactoring everything

fully refactored :beer: