Refactored, added new classes