diff --git a/lists/luci-utils.m4 b/lists/luci-utils.m4
deleted file mode 100644
index d69a15eee07835e417865778f63cc317bbbd98c9..0000000000000000000000000000000000000000
--- a/lists/luci-utils.m4
+++ /dev/null
@@ -1,17 +0,0 @@
-
-local function luci_app(...)
-	for _, app in pairs({...}) do
-		Install("luci-app-" .. app, { priority = 40 })
-		if for_l10n then
-			Install("luci-i18n-" .. app .. "-en", { optional = true })
-			for_l10n("luci-i18n-" .. app .. "-")
-		end
-	end
-end
-
-local function luci_proto(...)
-	for _, proto in pairs({...}) do
-		Install("luci-proto-" .. proto, { priority = 40 })
-	end
-end
-
diff --git a/lists/luci.lua.m4 b/lists/luci.lua.m4
index af3cfc114038f7a70b2bdcbcbf1135ae2ba12846..7bd900dd5ea6f422106360bcbb280365168b624e 100644
--- a/lists/luci.lua.m4
+++ b/lists/luci.lua.m4
@@ -1,14 +1,113 @@
 include(utils.m4)dnl
-include(luci-utils.m4)dnl
 _FEATURE_GUARD_
 
+local luci_apps = {
+	"acme",
+	"adblock",
+	"advanced-reboot",
+	"ahcp",
+	"aria2",
+	"attendedsysupgrade",
+	"banip",
+	"bcp38",
+	"bird1-ipv4",
+	"bird1-ipv6",
+	"bmx6",
+	"bmx7",
+	"cjdns",
+	"clamav",
+	"commands",
+	"cshark",
+	"dcwapd",
+	"ddns",
+	"diag-core",
+	"dnscrypt-proxy",
+	"dump1090",
+	"dynapoint",
+	"e2guardian",
+	"firewall",
+	"fwknopd",
+	"hd-idle",
+	"hnet",
+	"https-dns-proxy",
+	"ipfixprobe",
+	"ksmbd",
+	"lxc",
+	"minidlna",
+	"mjpg-streamer",
+	"mosquitto",
+	"mwan3",
+	"nextdns",
+	"nft-qos",
+	"nlbwmon",
+	"noddos",
+	"ntpc",
+	"nut",
+	"ocserv",
+	"olsr",
+	"olsr-services",
+	"olsr-viz",
+	"openvpn",
+	"opkg",
+	"p910nd",
+	"pagekitec",
+	"polipo",
+	"privoxy",
+	"qos",
+	"radicale",
+	"radicale2",
+	"rainbow",
+	"rosy-file-server",
+	"rp-pppoe-server",
+	"samba",
+	"samba4",
+	"shadowsocks-libev",
+	"shairplay",
+	"siitwizard",
+	"simple-adblock",
+	"snmpd",
+	"splash",
+	"sqm",
+	"squid",
+	"statistics",
+	"tinyproxy",
+	"transmission",
+	"travelmate",
+	"ttyd",
+	"udpxy",
+	"uhttpd",
+	"unbound",
+	"upnp",
+	"vnstat",
+	"vpn-policy-routing",
+	"vpnbypass",
+	"watchcat",
+	"wifischedule",
+	"wireguard",
+	"wol",
+}
+
+-- Conditional install requests for language packages
+if for_l10n and features.request_condition then
+	for _, lang in pairs({"en", unpack(l10n or {})}) do
+		for _, name in pairs(luci_apps) do
+			Install("luci-i18n-" .. name .. "-" .. lang, {
+				priority = 40,
+				optional = true,
+				condition = "luci-app-" .. name
+			})
+		end
+	end
+end
+
+
 Install("luci", "luci-base", "luci-lighttpd", { priority = 40 })
 if for_l10n then
 	Install("luci-i18n-base-en", { optional = true })
 	for_l10n("luci-i18n-base-")
 end
 
-luci_app("commands")
-luci_proto("ipv6", "ppp")
+Install("luci-app-commands", { priority = 40 })
+Install("luci-proto-ipv6", "luci-proto-ppp", { priority = 40 })
 
 _END_FEATURE_GUARD_
diff --git a/lists/pkglists/3g.lua.m4 b/lists/pkglists/3g.lua.m4
index 6305211031299b86cc0c27e1635b91056adaf9ce..7135e35f6436589611bbbac5b5a8a97898721d98 100644
--- a/lists/pkglists/3g.lua.m4
+++ b/lists/pkglists/3g.lua.m4
@@ -1,5 +1,4 @@
 include(utils.m4)dnl
-include(luci-utils.m4)dnl
 _FEATURE_GUARD_
 
 -- 3G
@@ -11,6 +10,6 @@ Install("usb-modeswitch", { priority = 40 })
 forInstall(kmod,nf-nathelper-extra,usb-net-rndis,usb-net-qmi-wwan,usb-serial-option,usb-serial-qualcomm)
 
 -- Luci
-luci_proto("3g")
+Install("luci-proto-3g", { priority = 40 })
 
 _END_FEATURE_GUARD_
diff --git a/lists/pkglists/luci-controls.lua.m4 b/lists/pkglists/luci-controls.lua.m4
index e169aa014c9231d23fd1bfcbc9842299b406aa6d..076ab4437d2b3350fa5a0ee30da1d092df1e226a 100644
--- a/lists/pkglists/luci-controls.lua.m4
+++ b/lists/pkglists/luci-controls.lua.m4
@@ -1,11 +1,37 @@
 include(utils.m4)dnl
-include(luci-utils.m4)dnl
 _FEATURE_GUARD_
 
-luci_app("ahcp", "adblock", "bcp38", "firewall", "minidlna", "mjpg-streamer", "sqm", "statistics", "tinyproxy", "transmission", "upnp")
+local apps = {
+	"ahcp",
+	"adblock",
+	"bcp38",
+	"firewall",
+	"minidlna",
+	"mjpg-streamer",
+	"sqm",
+	"statistics",
+	"tinyproxy",
+	"transmission",
+	"upnp"
+}
+
+local proto = {
+	"openconnect",
+	"relay",
+	"vpnc"
+}
+
+
+for _, app in pairs(apps) do
+	Install("luci-app-" .. app, { priority = 40 })
+end
+
 if board == "omnia" or board == "turris1x" then
-	luci_app('rainbow')
+	Install('luci-app-rainbow', { priority = 40 })
+end
+
+for _, proto in pairs(proto) do
+	Install("luci-proto-" .. proto, { priority = 40 })
 end
-luci_proto("openconnect", "relay", "vpnc")
 
 _END_FEATURE_GUARD_
diff --git a/lists/pkglists/lxc.lua.m4 b/lists/pkglists/lxc.lua.m4
index 74fb316ed240169243a633008584f88b6ceaf1f5..b4623afb64b0e934747b3432d1506a02797c2c23 100644
--- a/lists/pkglists/lxc.lua.m4
+++ b/lists/pkglists/lxc.lua.m4
@@ -1,11 +1,10 @@
 include(utils.m4)dnl
-include(luci-utils.m4)dnl
 _FEATURE_GUARD_
 
 Install("lxc", { priority = 40 })
 forInstall(lxc,attach,auto,console,copy,create,destroy,freeze,info,ls,monitor,monitord,snapshot,start,stop,unfreeze)
 
-luci_app("lxc")
+Install("luci-app-lxc", { priority = 40 })
 
 Install("kmod-veth", { priority = 40 })
 Install("gnupg", "gnupg-utils", "getopt", "tar", "wget", { priority = 40 })
diff --git a/lists/pkglists/nas.lua.m4 b/lists/pkglists/nas.lua.m4
index 74e8b1de886b1154735dd1e4bb572150395f7159..8cf449f917f490f4d97977362e69625956e949bb 100644
--- a/lists/pkglists/nas.lua.m4
+++ b/lists/pkglists/nas.lua.m4
@@ -1,5 +1,4 @@
 include(utils.m4)dnl
-include(luci-utils.m4)dnl
 _FEATURE_GUARD_
 
 -- Kernel --
@@ -38,7 +37,7 @@ Install("wget", "rsync", "rsyncd", { priority = 40 })
 forInstall(samba4,client,server,admin,utils)
 
 -- Luci
-luci_app("hd-idle","minidlna", "samba4")
+Install("luci-app-hd-idle","luci-app-minidlna", "luci-app-samba4", { priority = 40 })
 
 -- Encryption --
 Install("cryptsetup", "kmod-cryptodev", "kmod-crypto-user", { priority = 40 })
diff --git a/lists/pkglists/printserver.lua.m4 b/lists/pkglists/printserver.lua.m4
index 74b57ec1ecf89d66f6e96ea1663dfb7822b1a3cc..e396b7b55d85c4d3273c2b017792f40a998939d4 100644
--- a/lists/pkglists/printserver.lua.m4
+++ b/lists/pkglists/printserver.lua.m4
@@ -1,11 +1,10 @@
 include(utils.m4)dnl
-include(luci-utils.m4)dnl
 _FEATURE_GUARD_
 
 -- Kernel
 Install("kmod-usb-printer", { priority = 40 })
 
 -- Luci
-luci_app("p910nd")
+Install("luci-app-p910nd", { priority = 40 })
 
 _END_FEATURE_GUARD_