you can now choose if the list will be shuffled, how it will be split, and a distance function by the arguments