removed debug code
refactored method for more simplicity, speed and not calling __set() on not updated attributes