Improved update logic and let users known what, why and when it failed.