diff --git a/src/hei_includes.hpp b/src/hei_includes.hpp
new file mode 100644
index 0000000..fa2506b
--- /dev/null
+++ b/src/hei_includes.hpp
@@ -0,0 +1,10 @@
+#pragma once
+
+// The purpose of this file is to include common headers that will be used
+// throughout this library.
+
+#include <stdint.h>
+
+#include <hei_return_code.hpp>
+#include <hei_user_defines.hpp> // For HEI_ASSERT, HEI_INF, and HEI_ERR
+
diff --git a/src/hei_return_code.hpp b/src/hei_return_code.hpp
new file mode 100644
index 0000000..cdb1700
--- /dev/null
+++ b/src/hei_return_code.hpp
@@ -0,0 +1,65 @@
+#pragma once
+
+#include <stdint.h>
+
+namespace libhei
+{
+
+class ReturnCode
+{
+  public:
+
+    /**
+     * @brief Constructor.
+     * @param i_rc The error code value.
+     */
+    explicit constexpr ReturnCode( uint32_t i_rc = 0 ) :
+        iv_rc( i_rc )
+    {}
+
+    /** @brief Default copy constructor. */
+    ReturnCode( const ReturnCode & ) = default;
+
+    /** @brief Default assignment operator. */
+    ReturnCode& operator=( const ReturnCode & ) = default;
+
+    /** @brief Default destructor. */
+    ~ReturnCode() = default;
+
+	/** @brief Integral type conversion function. */
+    operator uint32_t() const { return iv_rc; }
+
+    /** @brief Integral type conversion function. */
+    operator uint64_t() const { return iv_rc; }
+
+    /** @brief Equals operator. */
+    bool operator==( const ReturnCode & rhs ) const
+    {
+        return rhs.iv_rc == iv_rc;
+    }
+
+    /** @brief Not equals operator. */
+    bool operator!=( const ReturnCode & rhs ) const
+    {
+        return rhs.iv_rc != iv_rc;
+    }
+
+    /**
+     * @brief Returns the error code value.
+     *
+     * We'd prefer to use the integral type conversion functions above, but
+     * some compilers will throw warnings when passing this object into
+     * functions with variadic arguments, like printf().
+     */
+    uint32_t get() const { return iv_rc; }
+
+  private:
+
+    const uint32_t iv_rc; ///< return code value
+};
+
+/** Function returned successfully. */
+static constexpr ReturnCode RC_SUCCESS = ReturnCode();
+
+}; // end namespace libhei
+
