refactor presenter logic