Changed implementation to be based on shuffled list