#ifndef SAUCE_SAUCE_EXCEPTIONS_H_
#define SAUCE_SAUCE_EXCEPTIONS_H_

#include <string>
#include <stdexcept>

namespace sauce {

/**
 * Base class for all sauce exceptions.
 */
struct Exception: std::runtime_error {
  Exception(std::string message):
    std::runtime_error(message) {}
};

/**
 * Raised when no binding can be found for a given interface.
 *
 * TODO sure would be nice to know who..
 */
struct UnboundException: Exception {
  UnboundException():
    Exception("Request for unbound interface.") {}
};

/**
 * Raised when a cycle is found in the interface's dependencies.
 *
 * TODO sure would be nice to know what the cycle is..
 */
struct CircularDependencyException: Exception {
  CircularDependencyException():
    Exception("Request for unbound interface.") {}
};

}

#endif // ifndef SAUCE_SAUCE_EXCEPTIONS_H_
#ifndef SAUCE_SAUCE_EXCEPTIONS_H_
#define SAUCE_SAUCE_EXCEPTIONS_H_

#include <stdexcept>

namespace sauce {

/**
 * Raised when no binding can be found for a given interface.
 *
 * TODO sure would be nice to know who..
 */
struct UnboundException:
  public std::runtime_error {
  UnboundException():
    std::runtime_error("Request for unbound interface.") {}
};

}

#endif // ifndef SAUCE_SAUCE_EXCEPTIONS_H_
--- 
+++ 
@@ -1,19 +1,37 @@
 #ifndef SAUCE_SAUCE_EXCEPTIONS_H_
 #define SAUCE_SAUCE_EXCEPTIONS_H_
 
+#include <string>
 #include <stdexcept>
 
 namespace sauce {
+
+/**
+ * Base class for all sauce exceptions.
+ */
+struct Exception: std::runtime_error {
+  Exception(std::string message):
+    std::runtime_error(message) {}
+};
 
 /**
  * Raised when no binding can be found for a given interface.
  *
  * TODO sure would be nice to know who..
  */
-struct UnboundException:
-  public std::runtime_error {
+struct UnboundException: Exception {
   UnboundException():
-    std::runtime_error("Request for unbound interface.") {}
+    Exception("Request for unbound interface.") {}
+};
+
+/**
+ * Raised when a cycle is found in the interface's dependencies.
+ *
+ * TODO sure would be nice to know what the cycle is..
+ */
+struct CircularDependencyException: Exception {
+  CircularDependencyException():
+    Exception("Request for unbound interface.") {}
 };
 
 }
Add a circular dependency exception.

Also break out an exception base type.
