Code

optimization: do not notify any listeners if attributes' new value is the same as old