add shuffle logic