Refactor attribute assignment to fix edge cases easily
Fix some reek identified code smells
Add support for redo
Reorganize specs