DRY out app with presenter