Simplified. The main shred method still needs work
Some refactoring