adding some presenter logic, and shared application controller logic