Adding support for expressions like `obj.prop = val`. Refactoring some of the code. Adding tests for the modifications