added fisher yates shuffling algorithm