add sort and shuffle feature