diff --git a/horizons/engine/__init__.py b/horizons/engine/__init__.py
index 5642de4..9bff8c5 100644
--- a/horizons/engine/__init__.py
+++ b/horizons/engine/__init__.py
@@ -23,5 +23,6 @@
 UH_MODULE = "unknownhorizons"
 FIFE_MODULE = "FIFE"
 KEY_MODULE = "keys"
+META_MODULE = "meta"
 
 from engine import Fife
diff --git a/horizons/engine/settings.py b/horizons/engine/settings.py
index ca81cc2..debf5aa 100644
--- a/horizons/engine/settings.py
+++ b/horizons/engine/settings.py
@@ -23,7 +23,7 @@
 from fife.extensions.serializers.simplexml import SimpleXMLSerializer
 
 from horizons.constants import LANGUAGENAMES
-from horizons.engine import UH_MODULE
+from horizons.engine import UH_MODULE, META_MODULE
 from horizons.i18n import change_language
 
 class Settings(object):
@@ -37,6 +37,24 @@ class Settings(object):
 		self._settings_serializer.load(settings_file)
 		self._settings_template_serializer = SimpleXMLSerializer()
 		self._settings_template_serializer.load(settings_template_file)
+		self.upgrade()
+
+	def upgrade(self):
+		# copies olf settings into dump, copy template to user and applies dump
+		"""Upgrade settings_file to the pattern of the provided settings_template_file."""
+		print "upgrade"
+		settings_file_version = self.get(META_MODULE, "SettingsVersion")
+		settings_template_file_version = self._settings_template_serializer.get(META_MODULE, "SettingsVersion")
+		if settings_file_version < settings_template_file_version:
+			#update necessary
+			print 'Discovered old settings file, auto-upgrading: %s -> %s' % \
+				(settings_file_version, settings_template_file_version)
+			for template_module in self._settings_template_serializer.getModuleName():
+				self._module_settings_template[template_module] = \
+						self._settings_template_serializer.getAllSettings(module)
+			for module in self._settings_serializer.getModuleName():
+				self._module_settings_template[module] = \
+						self._settings_template_serializer.getAllSettings(module)
 
 	def get(self, module, name, default=None):
 		if default is None:
@@ -71,7 +89,6 @@ class Settings(object):
 		return self._settings_template_serializer.getAllSettings(module)
 
 	def save(self):
-
 		self._settings_serializer.save(self._settings_file)
 
 	def apply(self):
