added shuffle and random