[bug fix] pass the extra argument to a scope function.

was not sending the correct value.
[fix] always returns $this.
[fix/feature] modify only if some values are modified.