added on change watchers
cleaned up some repetitive code in getters_and_setters
fixing merge conflicts