add shuffle argument