add unique, shuffle algorithms