 # Handle the conversion/removal of older version of settings that may have been
 # stored previously by `ext.init`.
 init_update = ->
-  store.rename 'update_progress', 'updates', {}
-  store.modify 'updates', (updates) ->
-    updates.settings ?= []
-    # Determine whether or not the user has just installed Template.
-    isNewInstall = updates.settings.length is 0
-    # Check if the settings need updated for 0.1.0.0.
-    if '0.1.0.0' not in updates.settings
-      # Update the settings for 0.1.0.0.
-      store.rename 'settingNotification',      'notifications',        on
-      store.rename 'settingNotificationTimer', 'notificationDuration', 3000
-      store.rename 'settingShortcut',          'shortcuts',            on
-      store.rename 'settingTargetAttr',        'doAnchorTarget',       off
-      store.rename 'settingTitleAttr',         'doAnchorTitle',        off
-      store.remove 'settingIeTabExtract',      'settingIeTabTitle'
-      # Ensure that settings are not updated for 0.1.0.0 again.
-      updates.settings.push '0.1.0.0'
-    # Check if the settings need updated for 1.0.0.
-    if '1.0.0' not in updates.settings
-      # Update the settings for 1.0.0.
-      updates.templates = updates.features ? []
-      delete updates.features
+  # Update the update progress indicator itself.
+  if store.exists 'update_progress'
+    store.modify 'updates', (updates) ->
+      progress = store.remove 'update_progress'
+      for own namespace, versions of progress
+        updates[namespace] = if versions?.length then versions.pop() else ''
+  # Create updater for the `settings` namespace.
+  updater      = new utils.Updater 'settings'
+  isNewInstall = updater.isNew
+  # Define the processes for all required updates to the `settings`
+  # namespace.
+  updater.update '0.1.0.0', ->
+    store.rename 'settingNotification',      'notifications',        on
+    store.rename 'settingNotificationTimer', 'notificationDuration', 3000
+    store.rename 'settingShortcut',          'shortcuts',            on
+    store.rename 'settingTargetAttr',        'doAnchorTarget',       off
+    store.rename 'settingTitleAttr',         'doAnchorTitle',        off
+    store.remove 'settingIeTabExtract',      'settingIeTabTitle'
+  updater.update '1.0.0', ->
+    if store.exists 'options_active_tab'
       optionsActiveTab = store.get 'options_active_tab'
-      if optionsActiveTab?
-        store.set 'options_active_tab', switch optionsActiveTab
-          when 'features_nav' then 'templates_nav'
-          when 'toolbar_nav' then 'general_nav'
-          else optionsActiveTab
-      store.modify 'anchor', (anchor) ->
-        anchor.target = store.get('doAnchorTarget') ? off
-        anchor.title  = store.get('doAnchorTitle') ? off
-      store.remove 'doAnchorTarget', 'doAnchorTitle'
-      store.set 'notifications',
-        duration: store.get('notificationDuration') ? 3000
-        enabled:  store.get('notifications') ? yes
-      store.remove 'notificationDuration'
-      # Ensure that settings are not updated for 1.0.0 again.
-      updates.settings.push '1.0.0'
+      store.set 'options_active_tab', switch optionsActiveTab
+        when 'features_nav' then 'templates_nav'
+        when 'toolbar_nav' then 'general_nav'
+        else optionsActiveTab
+    store.modify 'anchor', (anchor) ->
+      anchor.target = store.get('doAnchorTarget') ? off
+      anchor.title  = store.get('doAnchorTitle') ? off
+    store.remove 'doAnchorTarget', 'doAnchorTitle'
+    store.set 'notifications',
+      duration: store.get('notificationDuration') ? 3000
+      enabled:  store.get('notifications') ? yes
+    store.remove 'notificationDuration'
 
 # Initialize the settings related to statistical information.
 initStatistics = ->
-  store.init 'stats', {}
   updateStatistics()
 
 # Initialize `template` and its properties, before adding it to `templates` to

    store.init
      anchor:        {}
      notifications: {}
      updates:       {}
    init_update()
    store.modify 'anchor', (anchor) ->
      anchor.target ?= off

# Handle the conversion/removal of older version of settings that may have been
# stored previously by `initToolbar`.
initToolbar_update = ->
  # Create updater for the `toolbar` namespace.
  updater = new utils.Updater 'toolbar'
  # Define the processes for all required updates to the `toolbar` namespace.
  updater.update '1.0.0', ->
    store.modify 'toolbar', (toolbar) ->
      toolbar.popup = store.get('toolbarPopup') ? yes
      toolbar.style = store.get('toolbarFeatureDetails') ? no
    store.remove 'toolbarFeature',     'toolbarFeatureDetails',
                 'toolbarFeatureName', 'toolbarPopup'

# Initialize the settings related to the supported URL Shortener services.
initUrlShorteners = ->
