refactored services chooser