Check out
Daniel Friddle’s
Shuffle