new refactored