also propagate array mutations in observer