Refactored around MVP