added silent flag for surpressing change events