type constraints for select