diff --git a/src/gpioplus/internal/fd.hpp b/src/gpioplus/internal/fd.hpp
index 4fb19cd..b111c3e 100644
--- a/src/gpioplus/internal/fd.hpp
+++ b/src/gpioplus/internal/fd.hpp
@@ -7,20 +7,56 @@
 namespace internal
 {
 
+/** @class Fd
+ *  @brief Holds references to file descriptors
+ *  @details Provides RAII semantics for file descriptors
+ */
 class Fd
 {
   public:
+    /** @brief Opens a file and holds the file descriptor
+     *
+     *  @param[in] pathname - The path to the file being opened
+     *  @param[in] flags    - Flags passed to open(2)
+     *  @param[in] sys      - Optional underlying syscall implementation
+     *  @throws std::system_error for underlying syscall failures
+     */
     Fd(const char* pathname, int flags, const Sys* sys);
-    Fd(int fd, const Sys* sys);
-    Fd(int fd, std::false_type, const Sys* sys);
-    ~Fd();
 
+    /** @brief Duplicates and holds a file descriptor
+     *        Does not automatically close the input descriptor
+     *
+     *  @param[in] fd  - File descriptor being duplicated
+     *  @param[in] sys - Optional underlying syscall implementation
+     *  @throws std::system_error for underlying syscall failures
+     */
+    Fd(int fd, const Sys* sys);
+
+    /** @brief Holds the input file descriptor
+     *        Becomes the sole owner of the file descriptor
+     *
+     *  @param[in] fd  - File descriptor being duplicated
+     *  @param[in]     - Denotes that the fd is directly used
+     *  @param[in] sys - Optional underlying syscall implementation
+     */
+    Fd(int fd, std::false_type, const Sys* sys);
+
+    virtual ~Fd();
     Fd(const Fd& other);
     Fd& operator=(const Fd& other);
     Fd(Fd&& other);
     Fd& operator=(Fd&& other);
 
+    /** @brief Gets the managed file descriptor
+     *
+     *  @return The file descriptor
+     */
     int operator*() const;
+
+    /** @brief Gets the syscall interface implementation
+     *
+     *  @return The syscall implementation
+     */
     const Sys* getSys() const;
 
     void setBlocking(bool enabled) const;
@@ -29,9 +65,24 @@
     const Sys* sys;
     int fd;
 
+    /** @brief Sets flags on the file descriptor
+     *
+     *  @param[in] flags - The flags to set
+     *  @throws std::system_error for underlying syscall failures
+     */
     void setFlags(int flags) const;
+
+    /** @brief Gets the flags from the file descriptor
+     *
+     *  @throws std::system_error for underlying syscall failures
+     *  @return The file descriptor flags
+     */
     int getFlags() const;
 
+    /** @brief Cleans up the held file descriptor
+     *
+     *  @throws std::system_error for underlying syscall failures
+     */
     void reset();
 };
 
