switch controller to promise, update tests