refactored methods