added tests & shuffle