diff --git a/game/engines/default/engine/version.lua b/game/engines/default/engine/version.lua
index 2ca15ab228f218e88c5c43e63b6f6d292f462774..7975bb63d79ae01096511f6feb30c160d2171b10 100644
--- a/game/engines/default/engine/version.lua
+++ b/game/engines/default/engine/version.lua
@@ -18,5 +18,15 @@
 -- darkgod@te4.org
 
 -- Engine Version
-engine.version = {0,9,10,"te4"}
-engine.version_id = "te4-0.9.10"
+engine.version = {0,9,9,"te4"}
+engine.version_id = "te4-0.9.9"
+
+function engine.version_check(v)
+	local ev = engine.version
+	if v[4] ~= ev[4] then return "different engine" end
+	if v[1] > ev[1] then return "newer" end
+	if v[1] == ev[1] and v[2] > ev[2] then return "newer" end
+	if v[1] == ev[1] and v[2] == ev[2] and v[3] > ev[3] then return "newer" end
+	if v[1] == ev[1] and v[2] == ev[2] and v[3] == ev[3] then return "same" end
+	return "lower"
+end
diff --git a/game/engines/default/special/mainmenu/class/Game.lua b/game/engines/default/special/mainmenu/class/Game.lua
index 1725ad7e7087c284af92d3ba378a7e536ff92427..dbd6e0a6f1d5a6161432125ba02aebcdc4cfb577 100644
--- a/game/engines/default/special/mainmenu/class/Game.lua
+++ b/game/engines/default/special/mainmenu/class/Game.lua
@@ -201,6 +201,23 @@ function _M:selectStepMain()
 
 	if not self.news then
 		self.news = profile:getNews()
+
+		if self.news then
+			local f = loadstring(self.news.text)
+			if f then
+				local env = {}
+				setfenv(f, env)
+				pcall(f)
+				if env.text and env.version then
+					self.news.text = env.text
+					print("Latest engine version available: ", env.version[4], env.version[1], env.version[2], env.version[3])
+					self.latest_engine_version = env.version
+				else
+					self.news = nil
+				end
+			end
+		end
+
 		if not self.news then
 			self.news = {
 				title = 'Welcome to T-Engine and the Tales of Middle-earth',
@@ -215,10 +232,13 @@ Remember that in most roguelikes death is usually permanent so be careful!
 Now go and have some fun!]]
 			}
 		end
+
 		self.tooltip:set("#AQUAMARINE#%s#WHITE#\n---\n%s", self.news.title, self.news.text)
 	end
 	self.step.do_tooltip = true
 
+	self:installNewEngine()
+
 	if not self.firstrunchecked then
 		-- Check first time run for online profile
 		self.firstrunchecked = true
@@ -455,3 +475,20 @@ function _M:selectStepOnlineProfile()
 		end, "Create", "Login")
 	end
 end
+
+function _M:installNewEngine()
+	if not self.latest_engine_version then return end
+	if engine.version_check(self.latest_engine_version) == "newer" then
+		local url = ("http://te4.org/dl/engines/%s-%d.%d.%d.teae"):format(self.latest_engine_version[4], self.latest_engine_version[1], self.latest_engine_version[2], self.latest_engine_version[3])
+		local d = DownloadDialog.new(("Downloading: T-Engine 4 %d.%d.%d"):format(self.latest_engine_version[1], self.latest_engine_version[2], self.latest_engine_version[3]), url, function(di, data)
+			fs.mkdir("/engines")
+			local f = fs.open(("/engines/%s-%d.%d.%d.teae"):format(self.latest_engine_version[4], self.latest_engine_version[1], self.latest_engine_version[2], self.latest_engine_version[3]), "w")
+			for i, v in ipairs(data) do f:write(v) end
+			f:close()
+
+			Dialog:simplePopup("Success!", "The new engine is installed, it will now restart using it.", function() util.showMainMenu() end)
+		end)
+		self:registerDialog(d)
+		d:startDownload()
+	end
+end
diff --git a/game/loader/init.lua b/game/loader/init.lua
index 6f0cb3c2f3b0790fbcfb36e0f29af0cb6a724d8b..9f073f578639d0fab3590b354489e1e6db866a28 100644
--- a/game/loader/init.lua
+++ b/game/loader/init.lua
@@ -17,6 +17,10 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
+-- Setup the user directory
+local homepath = fs.getUserPath()..fs.getPathSeparator()..fs.getHomePath()..fs.getPathSeparator().."4.0"
+fs.mount(homepath, "/")
+
 -- Look for the required engine and load it
 local args = {...}
 local req_engine = args[1] or "te4"
@@ -96,5 +100,7 @@ elseif use_engine.load_dir then
 	fs.mount(fs.getRealPath(use_engine.load_dir), "/")
 end
 
+fs.umount(homepath)
+
 -- RUN engine RUN !!
 dofile("/engine/init.lua")