fix the status updating; add error check