refactored almost everything