Implement Shuffling and add some tests