add sanity checks for returned statuses

also, only update status if it has changed!