add valueForKeyPath:defVal: method restore