refactoring MVP