diff --git a/qg/src/project/mod.rs b/qg/src/project/mod.rs
index 430eee6..8d76556 100644
--- a/qg/src/project/mod.rs
+++ b/qg/src/project/mod.rs
@@ -191,7 +191,7 @@
             root_manifest_file.path(),
             false,
         );
-        registry.add_provider(project_provider);
+        registry.add_provider(project_provider)?;
 
         for (name, target) in root_manifest.targets {
             registry.add_target(crate::Target::from_manifest(
@@ -199,7 +199,7 @@
                 &root_manifest.project.name,
                 target.namespace.is_global(),
                 target,
-            )?);
+            )?)?;
         }
 
         for (provider, desc) in &root_manifest.providers {
@@ -217,7 +217,7 @@
                     provider,
                     provider_file.path(),
                     global_provider,
-                ));
+                ))?;
 
                 for (name, target) in provider_data.targets {
                     registry.add_target(crate::Target::from_manifest(
@@ -225,7 +225,7 @@
                         provider,
                         global_provider || target.namespace.is_global(),
                         target,
-                    )?);
+                    )?)?;
                 }
             }
         }
diff --git a/qg/src/registry.rs b/qg/src/registry.rs
index 376e0f7..8c3aa74 100644
--- a/qg/src/registry.rs
+++ b/qg/src/registry.rs
@@ -18,6 +18,7 @@
 };
 
 use crate::target::{Provider, Target};
+use crate::{Error, Result};
 
 /// A database of packages known to `qg`.
 #[derive(Debug)]
@@ -54,16 +55,21 @@
         self.targets.values().map(Arc::as_ref)
     }
 
-    pub(crate) fn add_provider(&mut self, provider: Provider) -> bool {
-        self.providers
-            .insert(provider.name.clone(), provider)
-            .is_none()
+    /// Registers a new provider.
+    pub(crate) fn add_provider(&mut self, provider: Provider) -> Result<()> {
+        if self.providers.contains_key(&provider.name) {
+            // TODO(frolv): Provider names must be unique.
+            return Err(Error::GenericErrorPlaceholder);
+        }
+        self.providers.insert(provider.name.clone(), provider);
+        Ok(())
     }
 
     /// Inserts a target into the registry.
-    pub(crate) fn add_target(&mut self, target: Target) -> bool {
+    pub(crate) fn add_target(&mut self, target: Target) -> Result<()> {
         if !self.providers.contains_key(target.provider()) {
-            return false;
+            // TODO(frolv): Target must have a known provider.
+            return Err(Error::GenericErrorPlaceholder);
         };
 
         let target_name = target.full_name();
@@ -80,7 +86,7 @@
         let target = Arc::new(target);
         self.targets.insert(target_name, target);
 
-        true
+        Ok(())
     }
 }
 
