diff --git a/package/gluon-core/Makefile b/package/gluon-core/Makefile
index 3dd287667ba16bec055e7c4e1965db477caf0e7d..1282de362afc1120e402d2b66f48c70ab1e637db 100644
--- a/package/gluon-core/Makefile
+++ b/package/gluon-core/Makefile
@@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gluon-core
 PKG_VERSION:=2
-PKG_RELEASE:=1
+PKG_RELEASE:=$(GLUON_VERSION)
 
 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
 
@@ -12,7 +12,7 @@ define Package/gluon-core
   SECTION:=gluon
   CATEGORY:=Gluon
   TITLE:=Base files of Gluon
-  DEPENDS:=+gluon-config +odhcp6c
+  DEPENDS:=+gluon-config +luci-lib-core +odhcp6c
 endef
 
 define Package/gluon-core/description
@@ -31,7 +31,6 @@ endef
 
 define Package/gluon-core/install
 	$(CP) ./files/* $(1)/
-	$(GLUON_GENERATE) ./generate/* $(1)/
 
 	$(INSTALL_DIR) $(1)/lib/gluon
 	echo "$(GLUON_VERSION)" > $(1)/lib/gluon/gluon-version
diff --git a/package/gluon-core/files/lib/gluon/upgrade/core/initial/010-gluon-system b/package/gluon-core/files/lib/gluon/upgrade/core/initial/010-gluon-system
new file mode 100755
index 0000000000000000000000000000000000000000..27b052c445ea2797e795b3a0d649f8d5a6901d28
--- /dev/null
+++ b/package/gluon-core/files/lib/gluon/upgrade/core/initial/010-gluon-system
@@ -0,0 +1,14 @@
+#!/usr/bin/lua
+
+local site = require 'gluon.site_config'
+local sysconfig = require 'gluon.sysconfig'
+local uci = require 'luci.model.uci'
+
+local c = uci.cursor()
+local system = c:get_first('system', 'system')
+
+c:set('system', system, 'hostname', site.hostname_prefix .. '-' .. string.gsub(sysconfig.primary_mac, ':', ''))
+c:set('system', system, 'timezone', site.timezone)
+
+c:save('system')
+c:commit('system')
diff --git a/package/gluon-core/files/lib/gluon/upgrade/core/invariant/012-ntp-servers b/package/gluon-core/files/lib/gluon/upgrade/core/invariant/012-ntp-servers
new file mode 100755
index 0000000000000000000000000000000000000000..2b3a2df6135e809a634fa26736a9e9369ca21acb
--- /dev/null
+++ b/package/gluon-core/files/lib/gluon/upgrade/core/invariant/012-ntp-servers
@@ -0,0 +1,14 @@
+#!/usr/bin/lua
+
+local site = require 'gluon.site_config'
+local uci = require 'luci.model.uci'
+
+if not site.ntp_servers or #site.ntp_servers == 0 then
+	os.exit(0)
+end
+
+local c = uci.cursor()
+c:delete('system', 'ntp', 'server')
+c:set_list('system', 'ntp', 'server', site.ntp_servers)
+c:save('system')
+c:commit('system')
diff --git a/package/gluon-core/files/lib/gluon/upgrade/core/invariant/012-reboot-on-oom b/package/gluon-core/files/lib/gluon/upgrade/core/invariant/013-reboot-on-oom
similarity index 100%
rename from package/gluon-core/files/lib/gluon/upgrade/core/invariant/012-reboot-on-oom
rename to package/gluon-core/files/lib/gluon/upgrade/core/invariant/013-reboot-on-oom
diff --git a/package/gluon-core/files/usr/lib/lua/gluon/sysconfig.lua b/package/gluon-core/files/usr/lib/lua/gluon/sysconfig.lua
new file mode 100644
index 0000000000000000000000000000000000000000..70882491caab78ef97fecfae02acc3397b3fc544
--- /dev/null
+++ b/package/gluon-core/files/usr/lib/lua/gluon/sysconfig.lua
@@ -0,0 +1,27 @@
+local sysconfigdir = '/lib/gluon/core/sysconfig/'
+
+local function get(_, name)
+	local ret = nil
+	local f = io.open(sysconfigdir .. name)
+	if f then
+		ret = f:read('*line')
+		f:close()
+	end
+	return ret
+end
+
+local function set(_, name, val)
+	local ret = nil
+	local f = io.open(sysconfigdir .. name, 'w+')
+	f:write(val)
+	f:close()
+end
+
+local sysconfig = {}
+local mt = {
+	__index = get,
+	__newindex = set,
+}
+
+setmetatable(sysconfig, mt)
+return sysconfig
diff --git a/package/gluon-core/generate/lib/gluon/upgrade/core/initial/010-gluon-system b/package/gluon-core/generate/lib/gluon/upgrade/core/initial/010-gluon-system
deleted file mode 100755
index 96b8bd3188cb585fab4816f7689d67643872e6c2..0000000000000000000000000000000000000000
--- a/package/gluon-core/generate/lib/gluon/upgrade/core/initial/010-gluon-system
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-. /lib/functions.sh
-. /lib/gluon/functions/sysconfig.sh
-
-macaddr=$(sysconfig primary_mac)
-
-uci_set system '@system[0]' hostname "@hostname_prefix@-${macaddr//:/}"
-uci_set system '@system[0]' timezone '@timezone@'
-uci_commit system
diff --git a/package/gluon-core/generate/lib/gluon/upgrade/core/invariant/011-ntp-servers b/package/gluon-core/generate/lib/gluon/upgrade/core/invariant/011-ntp-servers
deleted file mode 100755
index db82e9505edf5331b302745fa52ae21fac2ef23f..0000000000000000000000000000000000000000
--- a/package/gluon-core/generate/lib/gluon/upgrade/core/invariant/011-ntp-servers
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-[ -n "$(echo @ntp_servers@)" ] || exit 0
-
-
-uci delete system.ntp.server
-
-for server in @ntp_servers@; do
-	uci add_list system.ntp.server="$server"
-done
-
-uci commit system