Refactor
Add deriving clauses