improve controller API