custom shuffle method