diff --git a/src/sdeventplus/source/base.hpp b/src/sdeventplus/source/base.hpp
index dd2a715..33b37d7 100644
--- a/src/sdeventplus/source/base.hpp
+++ b/src/sdeventplus/source/base.hpp
@@ -114,8 +114,24 @@
     Event event;
     internal::SdRef<sd_event_source> source;
 
-    // Base sources cannot be directly constructed.
+    /** @brief Constructs a basic event source wrapper
+     *         Adds a reference to the source
+     *
+     *  @param[in] event  - The event associated with the source
+     *  @param[in] source - The underlying sd_event_source wrapped
+     *  @throws SdEventError for underlying sd_event errors
+     */
     Base(const Event& event, sd_event_source* source);
+
+    /** @brief Constructs a basic event source wrapper
+     *         Owns the passed reference to the source
+     *         This ownership is exception safe and will properly free the
+     *         source in the case of an exception during construction
+     *
+     *  @param[in] event  - The event associated with the source
+     *  @param[in] source - The underlying sd_event_source wrapped
+     *  @throws SdEventError for underlying sd_event errors
+     */
     Base(const Event& event, sd_event_source* source, std::false_type);
 
     // We can't ever copy an event_source because the callback
@@ -126,8 +142,23 @@
     Base(Base&& other);
     Base& operator=(Base&& other);
 
+    /** @brief Returns a reference to the prepare callback executed for this
+     *         source
+     *
+     *  @return A reference to the callback, this should be checked to make sure
+     *          the callback is valid as there is no guarantee
+     */
     const Callback& get_prepare() const;
 
+    /** @brief A helper for subclasses to trivially wrap a c++ style callback
+     *         to be called from the sd-event c library
+     *
+     *  @param[in] name     - The name of the callback for use in error messages
+     *  @param[in] source   - The sd_event_source provided by sd-event
+     *  @param[in] userdata - The userdata provided by sd-event
+     *  @param[in] args...  - Extra arguments to pass to the callaback
+     *  @return An negative errno on error, or 0 on success
+     */
     template <typename Callback, class Source,
               const Callback& (Source::*getter)() const, typename... Args>
     static int sourceCallback(const char* name, sd_event_source*,
@@ -146,7 +177,19 @@
   private:
     Callback prepare;
 
+    /** @brief A helper used to make sure the userdata for the sd-event
+     *         callback is set to the current source c++ object
+     *
+     *  @throws SdEventError for underlying sd_event errors
+     */
     void set_userdata();
+
+    /** @brief A wrapper around the callback that can be called from sd-event
+     *
+     * @param[in] source   - The sd_event_source associated with the call
+     * @param[in] userdata - The provided userdata for the source
+     * @return 0 on success or a negative errno otherwise
+     */
     static int prepareCallback(sd_event_source* source, void* userdata);
 };
 
