diff --git a/cdist/conf/type/__firewalld_rule/explorer/rule b/cdist/conf/type/__firewalld_rule/explorer/rule
index e9e1ebeb..5a0e0265 100644
--- a/cdist/conf/type/__firewalld_rule/explorer/rule
+++ b/cdist/conf/type/__firewalld_rule/explorer/rule
@@ -1,3 +1,4 @@
+#!/bin/sh
 #
 # 2015 Nico Schottelius (nico-cdist at schottelius.org)
 #
diff --git a/cdist/conf/type/__firewalld_rule/gencode-remote b/cdist/conf/type/__firewalld_rule/gencode-remote
index e184f5b3..8f1ba28a 100644
--- a/cdist/conf/type/__firewalld_rule/gencode-remote
+++ b/cdist/conf/type/__firewalld_rule/gencode-remote
@@ -1,3 +1,4 @@
+#!/bin/sh
 #
 # 2015 Nico Schottelius (nico-cdist at schottelius.org)
 #
diff --git a/cdist/conf/type/__iptables_apply/gencode-remote b/cdist/conf/type/__iptables_apply/gencode-remote
index 9cdf28cf..c15d4d7f 100644
--- a/cdist/conf/type/__iptables_apply/gencode-remote
+++ b/cdist/conf/type/__iptables_apply/gencode-remote
@@ -1,3 +1,5 @@
+#!/bin/sh
+
 if grep -q "^__file/etc/iptables.d/" "$__messages_in"; then
     echo /etc/init.d/iptables restart
 fi
diff --git a/cdist/conf/type/__iptables_apply/manifest b/cdist/conf/type/__iptables_apply/manifest
index a22901ba..3bb2d976 100644
--- a/cdist/conf/type/__iptables_apply/manifest
+++ b/cdist/conf/type/__iptables_apply/manifest
@@ -1,3 +1,4 @@
+#!/bin/sh
 #
 # 2013 Nico Schottelius (nico-cdist at schottelius.org)
 #
diff --git a/cdist/conf/type/__iptables_rule/manifest b/cdist/conf/type/__iptables_rule/manifest
index f02ab18b..13cec523 100644
--- a/cdist/conf/type/__iptables_rule/manifest
+++ b/cdist/conf/type/__iptables_rule/manifest
@@ -1,3 +1,4 @@
+#!/bin/sh
 #
 # 2013 Nico Schottelius (nico-cdist at schottelius.org)
 #
diff --git a/cdist/conf/type/__key_value/files/remote_script.sh b/cdist/conf/type/__key_value/files/remote_script.sh
index 282ba531..52b3f2de 100644
--- a/cdist/conf/type/__key_value/files/remote_script.sh
+++ b/cdist/conf/type/__key_value/files/remote_script.sh
@@ -1,3 +1,5 @@
+#!/bin/sh
+
 export key="$(cat "$__object/parameter/key" 2>/dev/null \
    || echo "$__object_id")"
 export state="$(cat "$__object/parameter/state")"
diff --git a/cdist/conf/type/__motd/gencode-remote b/cdist/conf/type/__motd/gencode-remote
index 2aa84902..bfd13b5e 100755
--- a/cdist/conf/type/__motd/gencode-remote
+++ b/cdist/conf/type/__motd/gencode-remote
@@ -1,3 +1,5 @@
+#!/bin/sh
+#
 # 2013 Nico Schottelius (nico-cdist at schottelius.org)
 #
 # This file is part of cdist.
diff --git a/cdist/conf/type/__package_zypper/explorer/pkg_version b/cdist/conf/type/__package_zypper/explorer/pkg_version
index 7f203067..83bf6dab 100644
--- a/cdist/conf/type/__package_zypper/explorer/pkg_version
+++ b/cdist/conf/type/__package_zypper/explorer/pkg_version
@@ -42,7 +42,7 @@ case "$ptype" in
         zypper search --match-exact --installed-only --type "$ptype" "$name" | grep -E '^i' | cut -d " " -f 3 || true
     ;;
     *)
-        echo "unknown ptype in __package_zypper explorer" &>2
+        echo "unknown ptype in __package_zypper explorer" >&2
         exit 1
     ;;
 esac
diff --git a/cdist/conf/type/__pacman_conf/manifest b/cdist/conf/type/__pacman_conf/manifest
index 19e232a7..b9679577 100644
--- a/cdist/conf/type/__pacman_conf/manifest
+++ b/cdist/conf/type/__pacman_conf/manifest
@@ -42,11 +42,10 @@ contains_element() {
     MATCH=0
 
     target=$1
-    keys="${@:2}"
+    shift
 
-
-    for key in ${keys}; do
-        if [ "${key}" == "${target}" ]; then
+    for key in "$@"; do
+        if [ "${key}" = "${target}" ]; then
             MATCH=1
             return 0
         fi  
@@ -58,14 +57,14 @@ if [ "${file}" ]; then
     __file "${sec_path}/plain_file_${file}"\
         --state exists --mode 666
 
-    if [ "${state}" == "present" ]; then
+    if [ "${state}" = "present" ]; then
 
         require="__file/${sec_path}/plain_file_${file}" __key_value ${file}_${key}\
             --file ${sec_path}/plain_file_${file} --key ${key} --value ${value} --delimiter ' = '
 
         exit 0
 
-    elif [ "${state}" == "absent" ]; then
+    elif [ "${state}" = "absent" ]; then
         require="__file/${sec_path}/plain_file_${file}" __key_value ${file}_${key}\
                 --state absent
         exit 0
@@ -76,7 +75,7 @@ if [ "${file}" ]; then
     fi
 fi  
 
-if [ "${section}" == "options" ]; then
+if [ "${section}" = "options" ]; then
 
     __file "${sec_path}/${section}"\
             --state exists --mode 666 --source - << eof
@@ -87,10 +86,10 @@ eof
     contains_element "${key}" "${boolean_option_keys}"
 
     if [ "${MATCH}" -eq 1 ]; then
-        if [ "${value}" == "on" ]; then
+        if [ "${value}" = "on" ]; then
             require="__file/${sec_path}/${section}" __line ${key}_${value}\
                 --file ${sec_path}/${section} --line ${key}
-        elif [ "${value}" == "off" ]; then
+        elif [ "${value}" = "off" ]; then
             require="__file/${sec_path}/${section}" __line ${key}_${value}\
                 --file ${sec_path}/${section} --line ${key} --state absent
         fi
@@ -111,7 +110,7 @@ else
             --state exists --mode 666 --source - << eof
 [${section}]
 eof
-    if [ "${state}" == "present" ]; then
+    if [ "${state}" = "present" ]; then
 
         #check if key is valid
         contains_element "${key}" "${allowed_repo_keys}"
@@ -122,7 +121,7 @@ eof
         require="__file/${sec_path}/repo_${section}" __key_value ${section}_${key}\
                 --file ${sec_path}/repo_${section} --key ${key} --value ${value} --delimiter ' = '
 
-    elif [ "${state}" == "absent" ]; then
+    elif [ "${state}" = "absent" ]; then
 
         require="__file/${sec_path}/repo_${section}" __key_value ${section}_${key}\
             --state absent
diff --git a/cdist/conf/type/__pacman_conf_integrate/manifest b/cdist/conf/type/__pacman_conf_integrate/manifest
index 5f398c19..1d02f3b3 100644
--- a/cdist/conf/type/__pacman_conf_integrate/manifest
+++ b/cdist/conf/type/__pacman_conf_integrate/manifest
@@ -22,7 +22,7 @@ state=$(cat $__object/parameter/state 2>/dev/null)
 
 path="/etc/"
 
-if [ "${state}" == "present" ]; then
+if [ "${state}" = "present" ]; then
     __file /etc/pacman.conf\
         --owner root --group root --mode 644 --source $__type/files/pacman.conf.cdist
 
@@ -35,7 +35,7 @@ if [ "${state}" == "present" ]; then
     __file /etc/pacman.d/plain_file_empty_placeholder\
         --owner root --group root --mode 644
 
-elif [ "${state}" == "absent" ]; then
+elif [ "${state}" = "absent" ]; then
 
     __file /etc/pacman.conf\
         --owner root --group root --mode 644 --source $__type/files/pacman.conf.pacman
diff --git a/cdist/conf/type/__qemu_img/gencode-remote b/cdist/conf/type/__qemu_img/gencode-remote
index 6e4bb4d0..bffedd26 100644
--- a/cdist/conf/type/__qemu_img/gencode-remote
+++ b/cdist/conf/type/__qemu_img/gencode-remote
@@ -1,3 +1,5 @@
+#!/bin/sh
+#
 ################################################################################
 # State: absent is handled by manifest - we need only to do stuff if image is
 # not existing and state != absent
diff --git a/cdist/conf/type/__qemu_img/manifest b/cdist/conf/type/__qemu_img/manifest
index bb2c9366..e0ff6e03 100644
--- a/cdist/conf/type/__qemu_img/manifest
+++ b/cdist/conf/type/__qemu_img/manifest
@@ -1,3 +1,5 @@
+#!/bin/sh
+#
 ################################################################################
 # Default settings
 #
diff --git a/cdist/conf/type/__start_on_boot/explorer/state b/cdist/conf/type/__start_on_boot/explorer/state
index 1cad6602..2f94a521 100644
--- a/cdist/conf/type/__start_on_boot/explorer/state
+++ b/cdist/conf/type/__start_on_boot/explorer/state
@@ -28,7 +28,7 @@ init=$("$__explorer/init")
 target_runlevel="$(cat "$__object/parameter/target_runlevel")"
 name="$__object_id"
 
-if [ "$init" == 'systemd' ]; then
+if [ "$init" = 'systemd' ]; then
     # this handles ALL linux distros with systemd
     # e.g. archlinux, gentoo, new RHEL and SLES versions
     state=$(systemctl is-enabled "$name" >/dev/null 2>&1 \
diff --git a/cdist/conf/type/__start_on_boot/gencode-remote b/cdist/conf/type/__start_on_boot/gencode-remote
index c8488e3a..8d3678d3 100644
--- a/cdist/conf/type/__start_on_boot/gencode-remote
+++ b/cdist/conf/type/__start_on_boot/gencode-remote
@@ -34,7 +34,7 @@ name="$__object_id"
 
 case "$state_should" in
     present)
-        if [ "$init" == 'systemd' ]; then
+        if [ "$init" = 'systemd' ]; then
             # this handles ALL linux distros with systemd
             # e.g. archlinux, gentoo in some cases, new RHEL and SLES versions
             echo "systemctl -q enable \"$name\""
@@ -85,7 +85,7 @@ case "$state_should" in
     ;;
 
     absent)
-        if [ "$init" == 'systemd' ]; then
+        if [ "$init" = 'systemd' ]; then
             # this handles ALL linux distros with systemd
             # e.g. archlinux, gentoo in some cases, new RHEL and SLES versions
             echo "systemctl -q disable \"$name\""