added shuffle functionality