refactored new classes