refactored presenter