diff --git a/src/sdeventplus/internal/sdevent.hpp b/src/sdeventplus/internal/sdevent.hpp
index 80a321c..8f2e608 100644
--- a/src/sdeventplus/internal/sdevent.hpp
+++ b/src/sdeventplus/internal/sdevent.hpp
@@ -7,6 +7,9 @@
 namespace internal
 {
 
+/** @class SdEvent
+ *  @brief Overridable direct sd_event interface
+ */
 class SdEvent
 {
   public:
@@ -104,6 +107,10 @@
                                               pid_t* pid) const = 0;
 };
 
+/** @class SdEventImpl
+ *  @brief sd_event concrete implementation
+ *  @details Uses libsystemd to handle all sd_event calls
+ */
 class SdEventImpl : public SdEvent
 {
   public:
@@ -204,6 +211,8 @@
                                       pid_t* pid) const override;
 };
 
+/** @brief Default instantiation of sd_event
+ */
 extern SdEventImpl sdevent_impl;
 
 } // namespace internal
diff --git a/src/sdeventplus/internal/sdref.hpp b/src/sdeventplus/internal/sdref.hpp
index 12e395f..bc3a950 100644
--- a/src/sdeventplus/internal/sdref.hpp
+++ b/src/sdeventplus/internal/sdref.hpp
@@ -9,24 +9,59 @@
 namespace internal
 {
 
+/** @class SdRef
+ *  @brief Takes and releases references to T objects
+ *  @details Used primarily as an RAII wrapper around sd_event
+ *           and sd_event_source object references.
+ */
 template <typename T>
 class SdRef
 {
   public:
+    /** @brief The type signature of ref / deref functions
+     */
     using Func = std::function<T*(const SdEvent*, T*)>;
 
+    /** @brief Constructs a new reference holder
+     *         This constructor calls take_ref on ref
+     *
+     *  @param[in] ref         - Object which is referenced
+     *  @param[in] take_ref    - Function used to take references
+     *  @param[im] release_ref - Function used to release references
+     *  @param[in] sdevent     - Optional underlying sd_event implementation
+     */
     SdRef(T* ref, Func take_ref, Func release_ref,
           const SdEvent* sdevent = &sdevent_impl);
+
+    /** @brief Constructs a new reference holder
+     *         Does not take a new reference on the passed ref
+     *
+     *  @param[in] ref         - Object which is referenced
+     *  @param[in] take_ref    - Function used to take references
+     *  @param[im] release_ref - Function used to release references
+     *  @param[in]             - Denotes no reference taken during construction
+     *  @param[in] sdevent     - Optional underlying sd_event implementation
+     */
     SdRef(T* ref, Func take_ref, Func release_ref, std::false_type,
           const SdEvent* sdevent = &sdevent_impl);
-    virtual ~SdRef();
 
+    virtual ~SdRef();
     SdRef(const SdRef& other);
     SdRef& operator=(const SdRef& other);
     SdRef(SdRef&& other);
     SdRef& operator=(SdRef&& other);
 
+    /** @brief Determines if a reference is currently being held
+     *
+     *  @return 'true' if a reference is held
+     *          'false' if empty
+     */
     explicit operator bool() const;
+
+    /** @brief Get a pointer to the object being referenced
+     *
+     * @return The object pointer
+     */
     T* get() const;
 
   private:
diff --git a/src/sdeventplus/internal/utils.hpp b/src/sdeventplus/internal/utils.hpp
index 47a019b..ce9342d 100644
--- a/src/sdeventplus/internal/utils.hpp
+++ b/src/sdeventplus/internal/utils.hpp
@@ -17,7 +17,10 @@
 namespace internal
 {
 
-// Helpers for sd_event callbacks to handle exceptions gracefully
+/** @brief Handle sd_event callback exception gracefully
+ *  @details A generic wrapper that turns exceptions into
+ *           error messages and return codes.
+ */
 template <typename Func, typename... Args>
 inline int performCallback(const char* name, Func func, Args... args)
 {
diff --git a/src/sdeventplus/test/sdevent.hpp b/src/sdeventplus/test/sdevent.hpp
index 5079a99..366cb67 100644
--- a/src/sdeventplus/test/sdevent.hpp
+++ b/src/sdeventplus/test/sdevent.hpp
@@ -9,6 +9,10 @@
 namespace test
 {
 
+/** @class SdEventMock
+ *  @brief sd_event mocked implementation
+ *  @details Uses googlemock to handle all sd_event calls
+ */
 class SdEventMock : public internal::SdEvent
 {
   public:
