internal update