implemented selection