update and polish