Rename; Addition of a few operations
Refactoring; Separated properties from definitions
Tried to encode functors; no success