added shuffle part