diff --git a/doc/libfprint-docs.xml b/doc/libfprint-docs.xml
index ac42ceb..21fd590 100644
--- a/doc/libfprint-docs.xml
+++ b/doc/libfprint-docs.xml
@@ -40,6 +40,8 @@
Writing Drivers
+
+
diff --git a/doc/libfprint-sections.txt b/doc/libfprint-sections.txt
index b09840e..ea6ee94 100644
--- a/doc/libfprint-sections.txt
+++ b/doc/libfprint-sections.txt
@@ -197,6 +197,20 @@ fp_dev_set_instance_data
FP_INSTANCE_DATA
+
+fpi-core.h
+fpi-core
+usb_id
+fp_driver_type
+
+
+
+fpi-core.h
+fpi-core-img
+FP_IMGDRV_SUPPORTS_UNCONDITIONAL_CAPTURE
+fp_img_driver
+
+
fpi-img.h
fpi-img
diff --git a/libfprint/fpi-core.c b/libfprint/fpi-core.c
index fc19757..75b2838 100644
--- a/libfprint/fpi-core.c
+++ b/libfprint/fpi-core.c
@@ -111,6 +111,25 @@ GSList *opened_devices = NULL;
* verification) on some devices which do not provide images.
*/
+/**
+ * SECTION:fpi-core
+ * @title: Driver structures
+ *
+ * Driver structures need to be defined inside each driver in
+ * order for the core library to know what function to call, and the capabilities
+ * of the driver and the devices it supports.
+ */
+
+/**
+ * SECTION:fpi-core-img
+ * @title: Image driver structures
+ *
+ * Image driver structures need to be defined inside each image driver in
+ * order for the core library to know what function to call, and the capabilities
+ * of the driver and the devices it supports. Its structure is based off the
+ * #fp_driver struct.
+ */
+
static GSList *registered_drivers = NULL;
static void register_driver(struct fp_driver *drv)