added shuffle feature