this may save some operations
update history