diff --git a/doc/source/changelog.rst b/doc/source/changelog.rst
index 4604c6a..3553051 100644
--- a/doc/source/changelog.rst
+++ b/doc/source/changelog.rst
@@ -5,6 +5,7 @@
 ========= ========== ========================================================
 Version   Date       Changes
 ========= ========== ========================================================
+                     * Classes and nodes URI must not overlap anymore
                      * Class names must not contain spaces
 1.1       2013-08-28 Salt adapter: fix interface to include minion_id, filter
                      output accordingly; fixes master_tops
diff --git a/doc/source/operations.rst b/doc/source/operations.rst
index 75da3f1..c3439c5 100644
--- a/doc/source/operations.rst
+++ b/doc/source/operations.rst
@@ -10,8 +10,8 @@
 (as suggested by the ``_fs`` postfix).
 
 ``yaml_fs`` works with two directories, one for node definitions, and another
-for class definitions. It is possible to use a single directory for both, but
-that could get messy and is therefore not recommended.
+for class definitions. The two directories must not be the same, nor can one
+be a parent of the other.
 
 Files in those directories are YAML-files, specifying key-value pairs. The
 following three keys are read by |reclass|:
diff --git a/reclass/config.py b/reclass/config.py
index 9243a46..e9aa9ba 100644
--- a/reclass/config.py
+++ b/reclass/config.py
@@ -185,6 +185,11 @@
         ret = os.path.expanduser(ret)
         return os.path.abspath(ret)
 
-    return map(_path_mangler_inner, (nodes_uri, classes_uri))
+    n, c = map(_path_mangler_inner, (nodes_uri, classes_uri))
+    if n == c:
+        raise errors.DuplicateUriError(n, c)
+    common = os.path.commonprefix((n, c))
+    if common == n or common == c:
+        raise errors.UriOverlapError(n, c)
 
-    return nodes_uri, classes_uri
+    return n, c
diff --git a/reclass/errors.py b/reclass/errors.py
index dbd6a78..8f097c6 100644
--- a/reclass/errors.py
+++ b/reclass/errors.py
@@ -39,6 +39,29 @@
         super(InvocationError, self).__init__(msg, rc)
 
 
+class ConfigError(ReclassException):
+
+    def __init__(self, msg, rc=posix.EX_CONFIG):
+        super(ConfigError, self).__init__(msg, rc)
+
+
+class DuplicateUriError(ConfigError):
+
+    def __init__(self, nodes_uri, classes_uri):
+        msg = "The inventory URIs must not be the same for nodes and classes: "
+        msg += nodes_uri
+        super(DuplicateUriError, self).__init__(msg)
+
+
+class UriOverlapError(ConfigError):
+
+    def __init__(self, nodes_uri, classes_uri):
+        msg = "The URIs for the nodes and classes inventories must not " \
+              "overlap, but {0} and {1} do."
+        msg = msg.format(nodes_uri, classes_uri)
+        super(UriOverlapError, self).__init__(msg)
+
+
 class NotFoundError(ReclassException):
 
     def __init__(self, msg, rc=posix.EX_IOERR):
