Introduce attribute morph, pass it to hooks
Introduce setProperty, update attribute morph to have similar behavior