A lot of this work here is being done again in propertyChanged(). You should create a common method for them to avoid code duplication