diff --git a/SD_ROOT/wz_mini/www/cgi-bin/cam-NIGHT_LED_flag.md b/SD_ROOT/wz_mini/www/cgi-bin/cam-NIGHT_LED_flag.md
new file mode 100644
index 0000000..3c672f4
--- /dev/null
+++ b/SD_ROOT/wz_mini/www/cgi-bin/cam-NIGHT_LED_flag.md
@@ -0,0 +1 @@
+Night Vision IR Lights Far (1=Far, 2=Off or Near)
diff --git a/SD_ROOT/wz_mini/www/cgi-bin/cam-bitRate.md b/SD_ROOT/wz_mini/www/cgi-bin/cam-bitRate.md
new file mode 100644
index 0000000..4039d80
--- /dev/null
+++ b/SD_ROOT/wz_mini/www/cgi-bin/cam-bitRate.md
@@ -0,0 +1 @@
+(60=360p or SD, 120=HD)
diff --git a/SD_ROOT/wz_mini/www/cgi-bin/cam-drawBoxSwitch.md b/SD_ROOT/wz_mini/www/cgi-bin/cam-drawBoxSwitch.md
new file mode 100644
index 0000000..515a47a
--- /dev/null
+++ b/SD_ROOT/wz_mini/www/cgi-bin/cam-drawBoxSwitch.md
@@ -0,0 +1 @@
+Motion Box (1=Enabled, 2=Disabled)
diff --git a/SD_ROOT/wz_mini/www/cgi-bin/cam-fps.md b/SD_ROOT/wz_mini/www/cgi-bin/cam-fps.md
new file mode 100644
index 0000000..678b2b7
--- /dev/null
+++ b/SD_ROOT/wz_mini/www/cgi-bin/cam-fps.md
@@ -0,0 +1 @@
+Frames Per Second
diff --git a/SD_ROOT/wz_mini/www/cgi-bin/cam-indicator.md b/SD_ROOT/wz_mini/www/cgi-bin/cam-indicator.md
new file mode 100644
index 0000000..8f59d7c
--- /dev/null
+++ b/SD_ROOT/wz_mini/www/cgi-bin/cam-indicator.md
@@ -0,0 +1 @@
+Camera Status Light (1=Enabled, 2=Disabled)
diff --git a/SD_ROOT/wz_mini/www/cgi-bin/cam-nightVision.md b/SD_ROOT/wz_mini/www/cgi-bin/cam-nightVision.md
new file mode 100644
index 0000000..1856366
--- /dev/null
+++ b/SD_ROOT/wz_mini/www/cgi-bin/cam-nightVision.md
@@ -0,0 +1 @@
+Night Vision Mode (1=On, 2=Off, 3=Auto)
diff --git a/SD_ROOT/wz_mini/www/cgi-bin/cam-night_cut_thr.md b/SD_ROOT/wz_mini/www/cgi-bin/cam-night_cut_thr.md
new file mode 100644
index 0000000..cffab5b
--- /dev/null
+++ b/SD_ROOT/wz_mini/www/cgi-bin/cam-night_cut_thr.md
@@ -0,0 +1 @@
+Nightvision Conditions (1=Dusk, 2=Dark)
diff --git a/SD_ROOT/wz_mini/www/cgi-bin/cam-res.md b/SD_ROOT/wz_mini/www/cgi-bin/cam-res.md
new file mode 100644
index 0000000..c195509
--- /dev/null
+++ b/SD_ROOT/wz_mini/www/cgi-bin/cam-res.md
@@ -0,0 +1 @@
+(1=SD or HD, 2=360p)
diff --git a/SD_ROOT/wz_mini/www/cgi-bin/cam-timezone.md b/SD_ROOT/wz_mini/www/cgi-bin/cam-timezone.md
new file mode 100644
index 0000000..93a93bf
--- /dev/null
+++ b/SD_ROOT/wz_mini/www/cgi-bin/cam-timezone.md
@@ -0,0 +1 @@
+Timezone offset from GMT
diff --git a/SD_ROOT/wz_mini/www/cgi-bin/cam-watermark_flag.md b/SD_ROOT/wz_mini/www/cgi-bin/cam-watermark_flag.md
new file mode 100644
index 0000000..6c9cae9
--- /dev/null
+++ b/SD_ROOT/wz_mini/www/cgi-bin/cam-watermark_flag.md
@@ -0,0 +1 @@
+watermark_flag
diff --git a/SD_ROOT/wz_mini/www/cgi-bin/cam.cgi b/SD_ROOT/wz_mini/www/cgi-bin/cam.cgi
new file mode 100644
index 0000000..2cf27ae
--- /dev/null
+++ b/SD_ROOT/wz_mini/www/cgi-bin/cam.cgi
@@ -0,0 +1,256 @@
+#!/bin/sh
+# This serves a rudimentary webpage based on wz_mini.conf
+. /opt/wz_mini/www/cgi-bin/shared.cgi
+
+title="$camver on $camfirmware running wz_mini $hackver as $HOSTNAME"
+updated=false
+
+
+
+
+echo "HTTP/1.1 200"
+echo -e "Content-type: text/html\n\n"
+echo ""
+
+
+die_no_config()
+{
+if [ -f ${cam_config} ]
+then
+ if [ -s ${cam_config} ]
+ then
+ echo "$cam_config exists and not empty"
+ else
+ echo "$cam_config exists but empty"
+ echo "if you reboot then the camera will revert to defaults or possibly fail "
+ exit
+ fi
+else
+ echo "$cam_config file does not exist"
+ echo "Maybe they moved the file? or your camera type stores it somewhere else ?"
+ exit
+fi
+
+}
+
+
+reboot_camera() {
+ die_no_config
+ reboot_wait=90
+ echo "rebooting camera (refreshing screen in $reboot_wait seconds)"
+ echo ''
+ handle_css config.css
+ version_info "display_BAR"
+ reboot
+ exit
+}
+
+shft() {
+ # SE loop did not work -- thanks ash!
+ suff=8
+ while [ "$suff" -gt 0 ] ;
+ do
+ if [[ -f "$1.$suff" ]] ; then
+ nxt=$((suff + 1))
+ mv -f "$1.$suff" "$1.$nxt"
+ fi
+ suff=$((suff-1))
+ done
+ mv -f "$1" "$1.1"
+}
+
+
+
+
+
+
+if [[ $REQUEST_METHOD = 'GET' ]]; then
+
+ #since ash does not handle arrays we create variables using eval
+ IFS='&'
+ for PAIR in $QUERY_STRING
+ do
+ K=$(echo $PAIR | cut -f1 -d=)
+ VA=$(echo $PAIR | cut -f2 -d=)
+ eval GET_$K=$VA
+ done
+
+ if [[ "$GET_action" = "reboot" ]]; then
+ reboot_camera
+ fi
+fi
+
+
+#test for post
+if [[ $REQUEST_METHOD = 'POST' ]]; then
+ if [ "$CONTENT_LENGTH" -gt 0 ]; then
+ read -n $CONTENT_LENGTH POST_DATA <&0
+ while read line
+ do eval "echo ${line}"
+ done
+ fi
+
+ #since ash does not handle arrays we create variables using eval
+ IFS='&'
+ for PAIR in $POST_DATA
+ do
+ K=$(echo $PAIR | cut -f1 -d=)
+ VA=$(echo $PAIR | cut -f2 -d=)
+ VB=\"${VA//%3A/:}\"
+ #echo "
$K=$VB
"
+ eval POST_$K=\"$VB\"
+ done
+
+
+ #switch back to going through the config file
+ output="$cam_config.new"
+
+ #name our output file
+ while IFS= read -r \ARGUMENT; do
+ #cycle through each line of the current config
+ #copy through all comments
+ if [ -z "$ARGUMENT" ]; then
+ echo -ne "\n" >> $output
+ elif [[ ${ARGUMENT:0:1} == "#" ]] ; then
+ #echo $ARGUMENT $'\n'
+ echo -ne $ARGUMENT"\n" >> $output
+ else
+ #for non-comments check to see if we have an entry in the POST data by deciphering the key from the ini file and using eval for our fake array
+ KEY=$(echo $ARGUMENT | cut -f1 -d=)
+ test=$(eval echo \$POST_$KEY)
+ #echo "key was $KEY test was ... $test "
+ if [[ "$test" ]]; then
+ #if in the fake array then we use the new value
+ #echo "
matched
"
+ echo -ne $KEY=\"$test\""\n" >> $output
+ else
+ #if not in the fake array we use the current value
+ #echo "