diff --git a/PPI/Setup.cti b/PPI/Setup.cti
index f18f8b4840d132e17d9d8e6b248d362d14beea16..509bbb112a8ea0099932262f9426841e68bc2044 100644
--- a/PPI/Setup.cti
+++ b/PPI/Setup.cti
@@ -26,6 +26,7 @@
 //#include "Setup.ih"
 
 // Custom includes
+#include "Jack.hh"
 
 #define prefix_ inline
 ///////////////////////////////cti.p///////////////////////////////////////
@@ -37,7 +38,7 @@ prefix_ void senf::ppi::
 connect(T & source, C & target,
         typename boost::disable_if< boost::is_base_of<connector::Connector, T> >::type *,
         typename boost::enable_if< boost::is_base_of<connector::Connector, C> >::type *,
-        typename boost::disable_if< boost::is_base_of<connector::Jack, T> >:: type *)
+        typename boost::disable_if< boost::is_base_of<connector::Jack, T> >::type *)
 {
     connect(source.output, target);
 }
@@ -47,7 +48,7 @@ prefix_ void senf::ppi::
 connect(C & source, T & target,
         typename boost::enable_if< boost::is_base_of<connector::Connector, C> >::type *,
         typename boost::disable_if< boost::is_base_of<connector::Connector,T> >::type *,
-        typename boost::disable_if< boost::is_base_of<connector::Jack, T> >:: type *)
+        typename boost::disable_if< boost::is_base_of<connector::Jack, T> >::type *)
 {
     connect(source, target.input);
 }
@@ -57,8 +58,8 @@ prefix_ void senf::ppi::
 connect(T1 & source, T2 & target,
         typename boost::disable_if< boost::is_base_of<connector::Connector, T1> >::type *,
         typename boost::disable_if< boost::is_base_of<connector::Connector, T2> >::type *,
-        typename boost::disable_if< boost::is_base_of<connector::Jack, T1> >:: type *,
-        typename boost::disable_if< boost::is_base_of<connector::Jack, T2> >:: type *)
+        typename boost::disable_if< boost::is_base_of<connector::Jack, T1> >::type *,
+        typename boost::disable_if< boost::is_base_of<connector::Jack, T2> >::type *)
 {
     connect(source.output, target.input);
 }
diff --git a/Utils/Console/Node.cci b/Utils/Console/Node.cci
index 3c21bc95b60ce7fd2f3f63fcbaa48bcbd7ed410a..59228c229b474e502e18313b345ae3875b4a0af6 100644
--- a/Utils/Console/Node.cci
+++ b/Utils/Console/Node.cci
@@ -212,6 +212,12 @@ senf::console::DirectoryNode::mkdir(std::string const & name)
     return add(name, create());
 }
 
+prefix_ senf::console::DirectoryNode &
+senf::console::DirectoryNode::provideDirectory(std::string const & name)
+{
+    return hasChild(name) ? getDirectory(name) : mkdir(name);
+}
+
 prefix_ senf::console::DirectoryNode::ChildrenRange senf::console::DirectoryNode::children()
     const
 {
@@ -348,6 +354,13 @@ senf::console::senf_console_add_node(DirectoryNode & node, std::string const & n
     return node.add(name, SimpleCommandNode::create(fn));
 }
 
+prefix_ senf::console::DirectoryNode &
+senf::console::senf_console_add_node(DirectoryNode & node, std::string const & name,
+                                     DirectoryNode & dir, int)
+{
+    return node.add(name, dir.thisptr());
+}
+
 #endif
 
 ///////////////////////////////cci.e///////////////////////////////////////
diff --git a/Utils/Console/Node.hh b/Utils/Console/Node.hh
index fcd44d0d12e51f1d5021fd1b72c9f27974c99dfb..3e796ecb785f65c9b18328bc4876649e9b42a0f5 100644
--- a/Utils/Console/Node.hh
+++ b/Utils/Console/Node.hh
@@ -538,6 +538,8 @@ namespace console {
 
         DirectoryNode & mkdir(std::string const & name);
                                         ///< Create sub-directory node
+        DirectoryNode & provideDirectory(std::string const & name);
+                                        ///< Return subdirectory, possibly creating it
 
         ChildrenRange children() const; ///< Return iterator range over all children.
                                         /**< The returned range is sorted by child name. */
@@ -711,6 +713,9 @@ namespace console {
     SimpleCommandNode & senf_console_add_node(DirectoryNode & node, std::string const & name,
                                               SimpleCommandNode::Function fn, int);
 
+    DirectoryNode & senf_console_add_node(DirectoryNode & node, std::string const & name,
+                                          DirectoryNode & dir, int);
+
 #endif
 
 }}
diff --git a/Utils/Console/ScopedDirectory.cti b/Utils/Console/ScopedDirectory.cti
index 6fedea2d3f6aa6519ca837db4a65460bf3bb9b6e..b93344cf45aee79d4a3387df243f143b5eadc2b8 100644
--- a/Utils/Console/ScopedDirectory.cti
+++ b/Utils/Console/ScopedDirectory.cti
@@ -88,6 +88,14 @@ senf_console_add_node(DirectoryNode & node, Owner & owner, std::string const & n
     return node.add(name, boost::bind(fn,boost::ref(owner),_1,_2));
 }
 
+template <class Owner>
+prefix_ senf::console::DirectoryNode &
+senf::console::senf_console_add_node(DirectoryNode & node, Owner & owner,
+                                     std::string const & name, DirectoryNode & dir, int)
+{
+    return node.add(name, dir.thisptr());
+}
+
 template <class Node>
 prefix_ senf::console::DirectoryNode & senf::console::
 senf_console_add_node(DirectoryNode & dir, std::string const & name, Node const & node, int,
diff --git a/Utils/Console/ScopedDirectory.hh b/Utils/Console/ScopedDirectory.hh
index 512386e371a71ae9a72eab5f2885985f352b43f1..1712f9f325f3251746cb41373f06c200b43334b4 100644
--- a/Utils/Console/ScopedDirectory.hh
+++ b/Utils/Console/ScopedDirectory.hh
@@ -197,6 +197,10 @@ namespace console {
         DirectoryNode & node, Owner & owner, std::string const & name,
         void (Owner::*fn)(std::ostream &, ParseCommandInfo const &), int);
 
+    template <class Owner>
+    DirectoryNode & senf_console_add_node(DirectoryNode & node, Owner & owner, 
+                                          std::string const & name, DirectoryNode & dir, int);
+
     template <class Node>
     DirectoryNode & senf_console_add_node(
         DirectoryNode & dir, std::string const & name, Node const & node, int, 
diff --git a/Utils/Console/Variables.cti b/Utils/Console/Variables.cti
index 3c7fd8ed88673aaff6eae48cad8e7e2976f6087d..f428842b5bf0ce61ae1168148726b8c497731733 100644
--- a/Utils/Console/Variables.cti
+++ b/Utils/Console/Variables.cti
@@ -199,6 +199,7 @@ template <class Variable>
 prefix_ senf::console::VariableAttributor<Variable> senf::console::
 senf_console_add_node(DirectoryNode & node, std::string const & name, Variable & var, int,
                       typename boost::disable_if< boost::is_convertible<Variable*, ScopedDirectoryBase*> >::type *,
+                      typename boost::disable_if< boost::is_convertible<Variable*, GenericNode*> >::type *, 
                       typename boost::disable_if_c<detail::ParsedCommandTraits<Variable>::is_callable>::type *)
 {
     return detail::VariableNodeCreator<Variable>::add(node, name, var);
@@ -214,9 +215,10 @@ senf::console::senf_console_add_node(DirectoryNode & node, std::string const & n
 
 template <class Variable, class Owner>
 prefix_ senf::console::VariableAttributor<Variable> senf::console::
-senf_console_add_node(DirectoryNode & node, Owner &, std::string const & name,
+senf_console_add_node(DirectoryNode & node, Owner & owner, std::string const & name,
                       Variable & var, int,
-                      typename boost::disable_if< boost::is_convertible<Variable*, ScopedDirectoryBase*> >::type *,
+                      typename boost::disable_if< boost::is_convertible<Variable*, ScopedDirectoryBase*> >::type *, 
+                      typename boost::disable_if< boost::is_convertible<Variable*, GenericNode*> >::type *, 
                       typename boost::disable_if_c<detail::ParsedCommandTraits<Variable>::is_callable>::type *)
 {
     return detail::VariableNodeCreator<Variable>::add(node, name, var);
diff --git a/Utils/Console/Variables.hh b/Utils/Console/Variables.hh
index 13fb7872d5f1d5104e31cd697fe170b8d442d1ee..870f2ed7a10f1aec239f54b64efe4ddb9e8b1937 100644
--- a/Utils/Console/Variables.hh
+++ b/Utils/Console/Variables.hh
@@ -42,12 +42,15 @@ namespace console {
     class ScopedDirectoryBase;
     template <class Variable> class VariableAttributor;
 
+    
+
 #ifndef DOXYGEN
 
     template <class Variable>
     VariableAttributor<Variable> senf_console_add_node(
         DirectoryNode & node, std::string const & name, Variable & var, int,
         typename boost::disable_if< boost::is_convertible<Variable*, ScopedDirectoryBase*> >::type * = 0,
+        typename boost::disable_if< boost::is_convertible<Variable*, GenericNode*> >::type * = 0,
         typename boost::disable_if_c<detail::ParsedCommandTraits<Variable>::is_callable>::type * = 0);
 
     template <class Variable>
@@ -59,6 +62,7 @@ namespace console {
     VariableAttributor<Variable> senf_console_add_node(
         DirectoryNode & node, Owner & owner, std::string const & name, Variable & var, int,
         typename boost::disable_if< boost::is_convertible<Variable*, ScopedDirectoryBase*> >::type * = 0,
+        typename boost::disable_if< boost::is_convertible<Variable*, GenericNode*> >::type * = 0,
         typename boost::disable_if_c<detail::ParsedCommandTraits<Variable>::is_callable>::type * = 0);
 
     template <class Variable, class Owner>