reconfigured to use RNGCrypto for shuffle