Introduce setProperty, update attribute morph to have similar behavior