diff --git a/cdist/conf/type/__net_bridge_interfaces_d/README b/cdist/conf/type/__net_bridge_interfaces_d/README
new file mode 100644
index 00000000..6b653873
--- /dev/null
+++ b/cdist/conf/type/__net_bridge_interfaces_d/README
@@ -0,0 +1,11 @@
+Notes:
+
+It would be nice if some CentOS/Redhat/Slackware/BSD/etc hackers could write
+other types to compliment this one for other OSes. Then we can unite them with a
+__net_bridge type that would call the other types such as this one.
+
+I might add support for vde2 and other linux/BSD virtual network technologies
+when I require them.
+
+If you have such a requirement for Debian derivatives, do not hesitate to
+contact me.
\ No newline at end of file
diff --git a/cdist/conf/type/__net_bridge_interfaces_d/explorer/interface b/cdist/conf/type/__net_bridge_interfaces_d/explorer/interface
new file mode 100755
index 00000000..9cffa449
--- /dev/null
+++ b/cdist/conf/type/__net_bridge_interfaces_d/explorer/interface
@@ -0,0 +1,46 @@
+#!/bin/sh
+#
+# 2016 Simon Walter (simon at explicit dot technology)
+#
+# This file is part of cdist.
+#
+# cdist is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# cdist is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cdist. If not, see .
+#
+#
+
+# Debug
+#exec >&2
+#set -x
+
+if [ -f "$__object/parameter/name" ]; then
+ name="$(cat "$__object/parameter/name")"
+else
+ name="$__object_id"
+fi
+
+if [ -f "/etc/network/interfaces.d/${name}" ] && ip link | grep -q "$name"; then
+ echo "true"
+fi
+if [ ! -f "/etc/network/interfaces.d/${name}" ] && ! ip link | grep -q "$name"; then
+ echo "false"
+fi
+if [ ! -f "/etc/network/interfaces.d/${name}" ] && ip link | grep -q "$name"; then
+ echo "conflict"
+fi
+if [ -f "/etc/network/interfaces.d/${name}" ] && ! ip link | grep -q "$name"; then
+ echo "conflict"
+fi
+
+# Debug
+#set +x
diff --git a/cdist/conf/type/__net_bridge_interfaces_d/explorer/interfaces.d b/cdist/conf/type/__net_bridge_interfaces_d/explorer/interfaces.d
new file mode 100755
index 00000000..215d8426
--- /dev/null
+++ b/cdist/conf/type/__net_bridge_interfaces_d/explorer/interfaces.d
@@ -0,0 +1,33 @@
+#!/bin/sh
+#
+# 2016 Simon Walter (simon at explicit dot technology)
+#
+# This file is part of cdist.
+#
+# cdist is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# cdist is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cdist. If not, see .
+#
+#
+
+# Debug
+#exec >&2
+#set -x
+
+if [ -d "/etc/network/interfaces.d/" ]; then
+ echo "true"
+else
+ echo "false"
+fi
+
+# Debug
+#set +x
diff --git a/cdist/conf/type/__net_bridge_interfaces_d/files/dynamic.sh b/cdist/conf/type/__net_bridge_interfaces_d/files/dynamic.sh
new file mode 100755
index 00000000..8f42d897
--- /dev/null
+++ b/cdist/conf/type/__net_bridge_interfaces_d/files/dynamic.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+cat << EOF
+auto $bridge
+iface $bridge inet dhcp
+ bridge_stp off
+ bridge_waitport 0
+ bridge_fd 0
+ pre-up brctl addbr $bridge
+ post-down brctl delbr $bridge
+EOF
\ No newline at end of file
diff --git a/cdist/conf/type/__net_bridge_interfaces_d/files/static.sh b/cdist/conf/type/__net_bridge_interfaces_d/files/static.sh
new file mode 100755
index 00000000..4a3d3e60
--- /dev/null
+++ b/cdist/conf/type/__net_bridge_interfaces_d/files/static.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+cat << EOF
+auto $bridge
+iface $bridge inet static
+ address $ipaddress
+ netmask $netmask
+ broadcast $broadcast
+ bridge_stp off # disable Spanning Tree Protocol
+ bridge_waitport 0 # no delay before a port becomes available
+ bridge_fd 0 # no forwarding delay
+ pre-up brctl addbr $bridge
+ post-down brctl delbr $bridge
+EOF
+# bridge_ports none # not to be used together with pre-up and post-down
+# up ip link set $bridge up # doesn't seem necessary
+# down ip link set $bridge down # doesn't seem necessary
\ No newline at end of file
diff --git a/cdist/conf/type/__net_bridge_interfaces_d/gencode-remote b/cdist/conf/type/__net_bridge_interfaces_d/gencode-remote
new file mode 100644
index 00000000..8c7ba707
--- /dev/null
+++ b/cdist/conf/type/__net_bridge_interfaces_d/gencode-remote
@@ -0,0 +1,146 @@
+#!/bin/sh
+#
+# 2016 Simon Walter (simon at explicit dot technology)
+#
+# This file is part of cdist.
+#
+# cdist is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# cdist is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cdist. If not, see .
+#
+#
+
+if [ -f "$__object/parameter/name" ]; then
+ name="$(cat "$__object/parameter/name")"
+else
+ name="$__object_id"
+fi
+
+if [ -f "$__object/parameter/force" ]; then
+ force="true"
+fi
+
+create()
+{
+ echo "Creating ${name}..." >&2
+
+ if [ -f "/etc/network/interfaces.d/${name}" ]; then
+ echo "\"/etc/network/interfaces.d/${name}\" exists. Terminating..." >&2
+ exit 1
+ fi
+
+ if [ -f "/etc/network/interfaces.d/${name}" -a "$force" = "true" ]; then
+ echo "\"/etc/network/interfaces.d/${name}\" exists. Deleteing..." >&2
+ echo "rm /etc/network/interfaces.d/${name}"
+ fi
+
+ echo "touch /etc/network/interfaces.d/${name}"
+
+ echo "echo \"auto ${name}\" > /etc/network/interfaces.d/${name}"
+ if [ -f "$__object/parameter/ipaddress" ]; then
+ echo "echo \"iface ${name} inet static\" >> /etc/network/interfaces.d/${name}"
+ echo "echo \" address $(cat "$__object/parameter/ipaddress")\" >> /etc/network/interfaces.d/${name}"
+ if [ -f "$__object/parameter/netmask" ]; then
+ echo "echo \" netmask $(cat "$__object/parameter/netmask")\" >> /etc/network/interfaces.d/${name}"
+ fi
+ if [ -f "$__object/parameter/broadcast" ]; then
+ echo "echo \" broadcast $(cat "$__object/parameter/broadcast")\" >> /etc/network/interfaces.d/${name}"
+ fi
+ else
+ echo "echo \"iface ${name} inet dhcp\" >> /etc/network/interfaces.d/${name}"
+ fi
+ echo "echo \" bridge_stp off\" >> /etc/network/interfaces.d/${name}"
+ echo "echo \" bridge_waitport 0\" >> /etc/network/interfaces.d/${name}"
+ echo "echo \" bridge_fd 0\" >> /etc/network/interfaces.d/${name}"
+ echo "echo \" pre-up brctl addbr ${name}\" >> /etc/network/interfaces.d/${name}"
+ echo "echo \" post-down brctl delbr ${name}\" >> /etc/network/interfaces.d/${name}"
+
+ echo "Starting ${name}..." >&2
+ #echo "if ifup lxcbr0 2>&1 | grep -q \"already configured\"; then echo \"darn\"; fi"
+
+ echo "ifup ${name}"
+}
+
+remove()
+{
+ echo "Stopping ${name}..." >&2
+
+ echo "ifdown ${name}"
+
+ echo "Removing ${name}..." >&2
+
+ echo "rm /etc/network/interfaces.d/${name}"
+}
+
+force_remove()
+{
+ echo "Stopping ${name}..." >&2
+
+ echo "ip address flush dev ${name}"
+ echo "ip link set ${name} down"
+ echo "ip link delete ${name}"
+ echo "ifdown ${name} --force"
+
+ echo "Removing ${name}..." >&2
+
+ if [ -f "/etc/network/interfaces.d/${name}" ]; then
+ echo "rm /etc/network/interfaces.d/${name}"
+ fi
+}
+
+os=$(cat "$__global/explorer/os")
+case "$os" in
+ debian|ubuntu|devuan)
+ state="$(cat "$__object/parameter/state")"
+ exists="$(cat "$__object/explorer/interface")"
+
+ if [ "$exists" = "false" -a "$state" = "absent" ]; then
+ exit 0;
+ fi
+ if [ "$exists" = "true" -a "$state" = "present" ]; then
+ if [ "$force" = "true" ]; then
+ remove
+ create
+ else
+ exit 0;
+ fi
+ fi
+ if [ "$exists" = "true" -a "$state" = "absent" ]; then
+ remove
+ fi
+ if [ "$exists" = "false" -a "$state" = "present" ]; then
+ create
+ fi
+ if [ "$exists" = "conflict" -a "$state" = "absent" -a "$force" = "true" ]; then
+ echo "Warning! This interface might not be managed by cdist." >&2
+ echo "\"force\" parameter given." >&2
+ force_remove
+ fi
+ if [ "$exists" = "conflict" -a "$state" = "present" -a "$force" = "true" ]; then
+ echo "Warning! This interface might not be managed by cdist." >&2
+ echo "\"force\" parameter given." >&2
+ force_remove
+ create
+ fi
+ if [ "$exists" = "conflict" -a "$force" != "true" ]; then
+ echo "Warning! This interface might not be managed by cdist." >&2
+ echo "\"force\" parameter given not given. Terminating..." >&2
+ exit 1
+ fi
+ ;;
+
+ *)
+ #Other types should handle other OSes
+ echo "Unsupported OS: ${os}" >&2
+ exit 1
+ ;;
+esac
\ No newline at end of file
diff --git a/cdist/conf/type/__net_bridge_interfaces_d/man.rst b/cdist/conf/type/__net_bridge_interfaces_d/man.rst
new file mode 100644
index 00000000..095103fd
--- /dev/null
+++ b/cdist/conf/type/__net_bridge_interfaces_d/man.rst
@@ -0,0 +1,80 @@
+
+cdist-type__net_bridge_interface_d(7)
+==================================
+Simon Walter
+
+
+NAME
+----
+cdist-type__net_bridge_interface_d - Manage network bridges with
+/etc/network/interfaces.d/files
+
+
+DESCRIPTION
+-----------
+Add and remove bridges on a Debian derivative. Does not respect any network
+manager or other userspace software.
+
+The files under /etc/network/interfaces.d/ allow one to add configurations
+without touching the main /etc/network/interfaces file.
+
+You will need: __package bridge-utils --state present
+
+
+REQUIRED PARAMETERS
+-------------------
+None - defaults may not be suitable!
+
+
+OPTIONAL PARAMETERS
+-------------------
+- name
+ If supplied, use the name and not the object id as the bridge name.
+
+- state
+ Either "present" or "absent", defaults to "present"
+
+- ipaddress
+ Set the IP address of the bridge to static. If not set, defaults to DHCP.
+
+- netmask
+ If ipaddress is in CIDR notation, this is not required.
+
+- broadcast
+ If ipaddress is in CIDR notation, this is not required.
+
+- force
+ This type manages bridges with files in /etc/network/interfaces.d/. When
+ an interface does not have a correspoding file in
+ /etc/network/interfaces.d/, it is assumed that it is not managed by cdist.
+ This flag will override the default to exit when no file is found.
+ It will also recreate the interface and file even if both exist. This is a
+ good way to make sure that you've updated to new values.
+
+EXAMPLES
+--------
+
+--------------------------------------------------------------------------------
+::
+# Set up a bridge with a static IP address
+__net_bridge_interface_d br0 --ipaddress 10.1.1.1 --netmask 255.255.255.0 \
+--broadcast 10.1.1.255 --force-update
+
+# Remove bridge "br0"
+__net_bridge_interface_d br0 --state absent
+
+# Making sure that the necessary packages are installed first
+require="__package/bridge-utils" __net_bridge_interface_d br0 \
+--ipaddress 10.1.1.1 --netmask 255.255.255.0 --broadcast 10.1.1.255
+--------------------------------------------------------------------------------
+
+
+SEE ALSO
+--------
+- cdist-type(7)
+
+
+COPYING
+-------
+Copyright \(C) 2016 Simon Walter. Free use of this software is
+granted under the terms of the GNU General Public License version 3 (GPLv3).
diff --git a/cdist/conf/type/__net_bridge_interfaces_d/man.text b/cdist/conf/type/__net_bridge_interfaces_d/man.text
new file mode 100644
index 00000000..22b51384
--- /dev/null
+++ b/cdist/conf/type/__net_bridge_interfaces_d/man.text
@@ -0,0 +1,79 @@
+
+cdist-type__net_bridge_interface_d(7)
+==========================
+Simon Walter
+
+
+NAME
+----
+cdist-type__net_bridge_interface_d - Manage network bridges with
+/etc/network/interfaces.d/files
+
+
+DESCRIPTION
+-----------
+Add and remove bridges on a Debian derivative. Does not respect any network
+manager or other userspace software.
+
+The files under /etc/network/interfaces.d/ allow one to add configurations
+without touching the main /etc/network/interfaces file.
+
+You will need: __package bridge-utils --state present
+
+
+REQUIRED PARAMETERS
+-------------------
+None - defaults may not be suitable!
+
+
+OPTIONAL PARAMETERS
+-------------------
+name::
+ If supplied, use the name and not the object id as the bridge name.
+
+state::
+ Either "present" or "absent", defaults to "present"
+
+ipaddress::
+ Set the IP address of the bridge to static. If not set, defaults to DHCP.
+
+netmask::
+ If ipaddress is in CIDR notation, this is not required.
+
+broadcast::
+ If ipaddress is in CIDR notation, this is not required.
+
+force::
+ This type manages bridges with files in /etc/network/interfaces.d/. When
+ an interface does not have a correspoding file in
+ /etc/network/interfaces.d/, it is assumed that it is not managed by cdist.
+ This flag will override default to exit when no file is found.
+ It will also recreate the interface and file even if both exist. This is a
+ good way to make sure that you've updated to new values.
+
+EXAMPLES
+--------
+
+--------------------------------------------------------------------------------
+# Set up a bridge with a static IP address
+__net_bridge_interface_d br0 --ipaddress 10.1.1.1 --netmask 255.255.255.0 \
+--broadcast 10.1.1.255 --force-update
+
+# Remove bridge "br0"
+__net_bridge_interface_d br0 --state absent
+
+# Making sure that the necessary packages are installed first
+require="__package/bridge-utils" __net_bridge_interface_d br0 \
+--ipaddress 10.1.1.1 --netmask 255.255.255.0 --broadcast 10.1.1.255
+--------------------------------------------------------------------------------
+
+
+SEE ALSO
+--------
+- cdist-type(7)
+
+
+COPYING
+-------
+Copyright \(C) 2016 Simon Walter. Free use of this software is
+granted under the terms of the GNU General Public License version 3 (GPLv3).
diff --git a/cdist/conf/type/__net_bridge_interfaces_d/manifest b/cdist/conf/type/__net_bridge_interfaces_d/manifest
new file mode 100644
index 00000000..5db17003
--- /dev/null
+++ b/cdist/conf/type/__net_bridge_interfaces_d/manifest
@@ -0,0 +1,36 @@
+#!/bin/sh
+#
+# 2016 Simon Walter (simon at explicit dot technology)
+#
+# This file is part of cdist.
+#
+# cdist is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# cdist is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cdist. If not, see .
+#
+#
+
+os=$(cat "$__global/explorer/os")
+case "$os" in
+ debian|ubuntu|devuan)
+ if [ "$(cat "$__object/explorer/interfaces.d")" = "false" ]; then
+ __directory /etc/network/interfaces.d/ --parents --mode 0755
+ fi
+ __line source-interfaces --file /etc/network/interfaces \
+ --line 'source /etc/network/interfaces.d/*' \
+ --state present
+ ;;
+ *)
+ echo "Unsupported OS: ${os}" >&2
+ exit 1
+ ;;
+esac
\ No newline at end of file
diff --git a/cdist/conf/type/__net_bridge_interfaces_d/parameter/boolean b/cdist/conf/type/__net_bridge_interfaces_d/parameter/boolean
new file mode 100644
index 00000000..3802376a
--- /dev/null
+++ b/cdist/conf/type/__net_bridge_interfaces_d/parameter/boolean
@@ -0,0 +1 @@
+force
diff --git a/cdist/conf/type/__net_bridge_interfaces_d/parameter/default/state b/cdist/conf/type/__net_bridge_interfaces_d/parameter/default/state
new file mode 100644
index 00000000..e7f6134f
--- /dev/null
+++ b/cdist/conf/type/__net_bridge_interfaces_d/parameter/default/state
@@ -0,0 +1 @@
+present
diff --git a/cdist/conf/type/__net_bridge_interfaces_d/parameter/optional b/cdist/conf/type/__net_bridge_interfaces_d/parameter/optional
new file mode 100644
index 00000000..1cd6cb28
--- /dev/null
+++ b/cdist/conf/type/__net_bridge_interfaces_d/parameter/optional
@@ -0,0 +1,5 @@
+name
+state
+ipaddress
+netmask
+broadcast
\ No newline at end of file