refactored new class.