Refactor method_missing
Add support for predicates
Refactor naming in assignment methods