diff --git a/README.md b/README.md
index a893698c0ead17abf58869352a41a16691fec57a..c7e075f082a2036d9b5206e404cb168becd1d413 100644
--- a/README.md
+++ b/README.md
@@ -12,24 +12,22 @@ Adapt and add this block to your site.conf:
 
 ```
 ssid_changer = {
-    switch_timeframe = 1,   -- only once every timeframe (in minutes) the SSID will change to OFFLINE 
-                            -- set to 1440 to change once a day
-                            -- set to 1 minute to change every time the router gets offline
-    first = 5,              -- the first few minutes directly after reboot within which an Offline-SSID always may be activated
-    prefix = 'FF_OFFLINE_', -- use something short to leave space for the nodename (no '~' allowed!)
-    suffix = 'nodename',    -- generate the ssid with either 'nodename', 'mac' or to use only the prefix: 'none'
-    
-    limits = {
-      disabled = false,     -- if true, the offline ssid will only be set if there is no gateway reacheable
-      -- upper and lower limit to turn the offline_ssid on and off
-      -- in-between these two values the SSID will never be changed to preven it from toggeling every Minute.
-      tq_max = '55',        -- upper limit, above that the online SSID will be used
-      tq_min = '45'         -- lower limit, below that the offline SSID will be used
-    },
+  switch_timeframe = 1,   -- only once every timeframe (in minutes) the SSID will change to OFFLINE 
+                          -- set to 1440 to change once a day
+                          -- set to 1 minute to change every time the router gets offline
+  first = 5,              -- the first few minutes directly after reboot within which an Offline-SSID always may be activated
+  prefix = 'FF_OFFLINE_', -- use something short to leave space for the nodename (no '~' allowed!)
+  suffix = 'nodename',    -- generate the SSID with either 'nodename', 'mac' or to use only the prefix: 'none'
+  
+  tq_limit_enabled = 0,   -- if false, the offline SSID will only be set if there is no gateway reacheable
+                          -- upper and lower limit to turn the offline_ssid on and off
+                          -- in-between these two values the SSID will never be changed to prevent it from toggeling every minute.
+  tq_limit_max = '55',    -- upper limit, above that the online SSID will be used
+  tq_limit_min = '45'     -- lower limit, below that the offline SSID will be used
 },
 ```
 
-if limits are disabled, then it will be only checked, if the gateway is reachable with
+if tq_limit is disabled, then it will be only checked, if the gateway is reachable with
 
     batctl gwl -H
 
diff --git a/files/etc/config/ssid-changer b/files/etc/config/ssid-changer
new file mode 100644
index 0000000000000000000000000000000000000000..1ad4a1e5cd78b2aeb47384e326321913eafe39c7
--- /dev/null
+++ b/files/etc/config/ssid-changer
@@ -0,0 +1 @@
+config main 'settings'
diff --git a/files/lib/gluon/ssid-changer/ssid-changer.sh b/files/lib/gluon/ssid-changer/ssid-changer.sh
index 349020dd5ddf4bf669b458cfc4352894c60bbd89..255e658902d10967f8cc2e9829462c3d59c6f852 100755
--- a/files/lib/gluon/ssid-changer/ssid-changer.sh
+++ b/files/lib/gluon/ssid-changer/ssid-changer.sh
@@ -1,26 +1,59 @@
 #!/bin/sh
 
-MINUTES=1440 # only once every timeframe the SSID will change to OFFLINE (set to 1 minute to change every time the router gets offline)
-FIRST=5 # the first few minutes directly after reboot within which an Offline-SSID always may be activated
-OFFLINE_PREFIX='FF_OFFLINE_' # use something short to leave space for the nodename (no '~' allowed!)
+# only once every timeframe the SSID will change to OFFLINE (set to 1 minute to change every time the router gets offline)
+MINUTES="$(uci get ssid-changer.settings.switch_timeframe -q)"
+# the first few minutes directly after reboot within which an Offline-SSID always may be activated
+: ${MINUTES:=1}
 
-ONLINE_SSID="$(uci get wireless.client_radio0.ssid -q)"
-: ${ONLINE_SSID:="FREIFUNK"} # if for whatever reason ONLINE_SSID is NULL
+FIRST="$(uci get ssid-changer.settings.first -q)"
+# use something short to leave space for the nodename (no '~' allowed!)
+: ${FIRST:=5}
+
+PREFIX="$(uci get ssid-changer.settings.prefix -q)"
+# generate the ssid with either 'nodename', 'mac' or to use only the prefix: 'none'
+: ${PREFIX:='FF_OFFLINE_'}
+
+SETTINGS_SUFFIX="$(uci get ssid-changer.settings.suffix -q)"
 
-# generate an Offline SSID with the first and last part of the nodename to allow owner to recognise wich node is down
-NODENAME="$(uname -n)"
-if [ ${#NODENAME} -gt $((30 - ${#OFFLINE_PREFIX})) ]; then # 32 would be possible as well
-	HALF=$(( (28 - ${#OFFLINE_PREFIX} ) / 2 )) # calculate the length of the first part of the node identifier in the offline-ssid
-	SKIP=$(( ${#NODENAME} - $HALF )) # jump to this charakter for the last part of the name
-	OFFLINE_SSID=$OFFLINE_PREFIX${NODENAME:0:$HALF}...${NODENAME:$SKIP:${#NODENAME}} # use the first and last part of the nodename for nodes with long name
+TQ_LIMIT_ENABLED="$(uci get ssid-changer.settings.tq_limit_disabled -q)"
+: ${TQ_LIMIT_ENABLED:='0'}	# if true, the offline ssid will only be set if there is no gateway reacheable
+														# upper and lower limit to turn the offline_ssid on and off
+														# in-between these two values the SSID will never be changed to preven it from toggeling every Minute.
+
+TQ_LIMIT_MAX="$(uci get ssid-changer.settings.tq_limit_max -q)"
+: ${TQ_LIMIT_MAX:='55'}	#  upper limit, above that the online SSID will be used
+TQ_LIMIT_MIN="$(uci get ssid-changer.settings.tq_limit_min -q)"
+: ${TQ_LIMIT_MIN:='45'}	#  lower limit, below that the offline SSID will be used
+
+if [ "$(uci get ssid-changer.settings.enabled -q)" = '0' ]; then 
+	DISABLED='1'
 else
-	OFFLINE_SSID="$OFFLINE_PREFIX$NODENAME" # great! we are able to use the full nodename in the offline ssid
+	DISABLED='0'
 fi
 
-# maximum simplified, no more ttvn rating
-CHECK=$(batctl gwl -H|grep -v "gateways in range"|wc -l)
+if [ $SETTINGS_SUFFIX = 'nodename' ]; then
+	SUFFIX="$(uname -n)"
+	if [ ${#SUFFIX} -gt $((30 - ${#PREFIX})) ]; then # 32 would be possible as well
+		HALF=$(( (28 - ${#PREFIX} ) / 2 )) # calculate the length of the first part of the node identifier in the offline-ssid
+		SKIP=$(( ${#SUFFIX} - $HALF )) # jump to this charakter for the last part of the name
+		SUFFIX=${SUFFIX:0:$HALF}...${SUFFIX:$SKIP:${#SUFFIX}} # use the first and last part of the nodename for nodes with long name
+	fi
+elif [ $SETTINGS_SUFFIX = 'mac' ]; then
+	SUFFIX="$(uci get network.bat0.macaddr -q)"
+else 
+	SUFFIX=''
+fi
+
+OFFLINE_SSID="$PREFIX$SUFFIX"
+
+# TODO: ffac tq limits has to be implemented here if enabled
+TQ_LIMIT_ENABLED=0 # disabled for now
+ONLINE_SSID="$(uci get wireless.client_radio0.ssid -q)"
+: ${ONLINE_SSID:="FREIFUNK"} # if for whatever reason ONLINE_SSID is NULL
+
+CHECK="$(batctl gwl -H|grep -v "gateways in range"|wc -l)"
 HUP_NEEDED=0
-if [ $CHECK -gt 0 ]; then
+if [ "$CHECK" -gt 0 ] || [ "$DISABLED" = '1' ]; then
 	echo "node is online"
 	for HOSTAPD in $(ls /var/run/hostapd-phy*); do # check status for all physical devices
 	CURRENT_SSID="$(grep "^ssid=$ONLINE_SSID" $HOSTAPD | cut -d"=" -f2)"
@@ -31,14 +64,14 @@ if [ $CHECK -gt 0 ]; then
 	fi
 	CURRENT_SSID="$(grep "^ssid=$OFFLINE_SSID" $HOSTAPD | cut -d"=" -f2)"
 	if [ "$CURRENT_SSID" = "$OFFLINE_SSID" ]; then
-		logger -s -t "gluon-offline-ssid" -p 5 "SSID is $CURRENT_SSID, change to $ONLINE_SSID"
+		logger -s -t "gluon-ssid-changer" -p 5 "SSID is $CURRENT_SSID, change to $ONLINE_SSID"
 		sed -i "s~^ssid=$CURRENT_SSID~ssid=$ONLINE_SSID~" $HOSTAPD
 		HUP_NEEDED=1 # HUP here would be to early for dualband devices
 	else
-		echo "There is something wrong, did not find SSID $ONLINE_SSID or $OFFLINE_SSID"
+		logger -s -t "gluon-ssid-changer" -p 5 "could not set to online state: did neither find SSID '$ONLINE_SSID' nor '$OFFLINE_SSID'. Please reboot"
 	fi
 done
-elif [ $CHECK -eq 0 ]; then
+elif [ "$CHECK" -eq 0 ]; then
 	echo "node is considered offline"
 	UP=$(cat /proc/uptime | sed 's/\..*//g')
 	if [ $(($UP / 60)) -lt $FIRST ] || [ $(($UP / 60 % $MINUTES)) -eq 0 ]; then
@@ -50,11 +83,11 @@ elif [ $CHECK -eq 0 ]; then
   		fi
   		CURRENT_SSID="$(grep "^ssid=$ONLINE_SSID" $HOSTAPD | cut -d"=" -f2)"
   		if [ "$CURRENT_SSID" = "$ONLINE_SSID" ]; then
-  			logger -s -t "gluon-offline-ssid" -p 5 "SSID is $CURRENT_SSID, change to $OFFLINE_SSID"
+  			logger -s -t "gluon-ssid-changer" -p 5 "SSID is $CURRENT_SSID, change to $OFFLINE_SSID"
   			sed -i "s~^ssid=$ONLINE_SSID~ssid=$OFFLINE_SSID~" $HOSTAPD
   			HUP_NEEDED=1
   		else
-  			echo "There is something wrong: did neither find SSID '$ONLINE_SSID' nor '$OFFLINE_SSID'"
+  			logger -s -t "gluon-ssid-changer" -p 5 "could not set to offline state: did neither find SSID '$ONLINE_SSID' nor '$OFFLINE_SSID'. Please reboot"
   		fi
 		done
 	fi
diff --git a/files/lib/gluon/upgrade/500-ssid-changer b/files/lib/gluon/upgrade/500-ssid-changer
new file mode 100644
index 0000000000000000000000000000000000000000..02d21883b87b366581595512b9349d5ea8516517
--- /dev/null
+++ b/files/lib/gluon/upgrade/500-ssid-changer
@@ -0,0 +1,23 @@
+#!/usr/bin/lua
+
+local site = require 'gluon.site_config'
+
+local legacy_uci = require 'luci.model.uci'
+local uci = legacy_uci.cursor()
+
+-- LEDE: local uci = require('simple-uci').cursor()
+
+if not uci:get('ssid-changer', 'settings', 'enabled') then
+uci:section('ssid-changer', 'main', 'settings', {
+  enabled           = '1',
+  switch_timeframe  = site.switch_timeframe or '1',
+  first             = site.first or '5',
+  prefix            = site.prefix or 'FF_OFFLINE_',
+  suffix            = site.suffix or 'nodename',
+  tq_limit_enabled  = site.tq_limit_enabled or '0',
+  tq_limit_max      = site.tq_limit_max or '55',
+  tq_limit_min      = site.tq_limit_min or '45',
+})
+end
+
+uci:save('ssid-changer')