Check out
Maksim Shumeiko’s
Shuffle