set changes before notifying observers

this should make all the error catching stuff work