refactored presenter as required