add sample_without_replacement
change type names