diff --git a/reclass/storage/mixed/__init__.py b/reclass/storage/mixed/__init__.py
index 95713b4..d9983fd 100644
--- a/reclass/storage/mixed/__init__.py
+++ b/reclass/storage/mixed/__init__.py
@@ -33,7 +33,7 @@
         if 'env_overrides' in classes_uri:
             for override in classes_uri['env_overrides']:
                 for env, options in override.iteritems():
-                        uri = classes_uri
+                        uri = copy.deepcopy(classes_uri)
                         uri.update(options)
                         uri = self._uri(uri)
                         self._classes_storage[env] = get_storage(uri.storage_type, None, uri.options)
diff --git a/reclass/storage/yaml_git/__init__.py b/reclass/storage/yaml_git/__init__.py
index 9274148..3dadeef 100644
--- a/reclass/storage/yaml_git/__init__.py
+++ b/reclass/storage/yaml_git/__init__.py
@@ -232,6 +232,12 @@
         uri = self._env_to_uri(environment)
         if uri.root is not None:
             name = '{0}.{1}'.format(uri.root, name)
+        if uri.repo not in self._repos:
+            raise reclass.errors.NotFoundError("Repo " + uri.repo + " unknown or missing")
+        if uri.branch not in self._repos[uri.repo].files:
+            raise reclass.errors.NotFoundError("Branch " + uri.branch + " missing from " + uri.repo)
+        if name not in self._repos[uri.repo].files[uri.branch]:
+            raise reclass.errors.NotFoundError("File " + name + " missing from " + uri.repo + " branch " + uri.branch)
         file = self._repos[uri.repo].files[uri.branch][name]
         blob = self._repos[uri.repo].get(file.id)
         entity = YamlData.from_string(blob.data, 'git_fs://{0}#{1}/{2}'.format(uri.repo, uri.branch, file.path)).get_entity(name)
