check messages and update in one system_* function