use observableAttrs for dirty tracking