refactor present method