diff --git a/gluon-config-mode-zip/luasrc/lib/gluon/config-mode/wizard/0450-geo-location.lua b/gluon-config-mode-zip/luasrc/lib/gluon/config-mode/wizard/0450-geo-location.lua
index a536ad17dc35da94bbe219b5ab8e472c53d88252..ace7469b513fda1f7ccd44d5c5a69de211be88d3 100644
--- a/gluon-config-mode-zip/luasrc/lib/gluon/config-mode/wizard/0450-geo-location.lua
+++ b/gluon-config-mode-zip/luasrc/lib/gluon/config-mode/wizard/0450-geo-location.lua
@@ -1,27 +1,17 @@
-local cbi = require "luci.cbi"
-local i18n = require "luci.i18n"
-local uci = require("simple-uci").cursor()
 
-local M = {}
+return function(form, uci)
+    local location = uci:get_first("gluon-node-info", "location")
+    local text =  translate("gluon-config-mode:zip-help")
+    
+    local s = form:section(Section, nil, text)
 
-function M.section(form)
-    local text = i18n.translate("gluon-config-mode:zip-help")
-    local fieldlabel = i18n.translate("ZIP-Code")
-    local s = form:section(cbi.SimpleSection, nil, text)
-
-    local o = s:option(cbi.Value, "_zip", fieldlabel)
-    o.value = uci:get_first("gluon-node-info", "location", "zip")
-    o.rmempty = true
+    local o = s:option(Value, "zip", translate("ZIP-Code"), translatef("e.g. %s", "70499"))
+    o.default = uci:get("gluon-node-info", location, "zip")
     o.datatype = "uinteger"
-    o.description = i18n.translatef("e.g. %s", "70499")
-end
-
-function M.handle(data)
-    local sname = uci:get_first("gluon-node-info", "location")
-
-    uci:set("gluon-node-info", sname, "zip", data._zip:trim())
-    uci:save("gluon-node-info")
-    uci:commit("gluon-node-info")     
-end
-        
-return M
+    o.optional = true
+    function o:write(data)
+        uci:set("gluon-node-info", location, "zip", data)
+    end
+    
+    return {'gluon-node-info'}
+end
\ No newline at end of file