Shuffling methods around, moving initialize to top
Forgotten duplicate removed, empty?() streamlined
Exceptions polished, with specs but also TODOs