diff --git a/doc/libfprint-docs.xml b/doc/libfprint-docs.xml
index 3ef995b..52041ad 100644
--- a/doc/libfprint-docs.xml
+++ b/doc/libfprint-docs.xml
@@ -31,8 +31,6 @@
     <xi:include href="xml/drv.xml"/>
     <xi:include href="xml/dev.xml"/>
     <xi:include href="xml/print_data.xml"/>
-    <!-- FIXME https://bugs.freedesktop.org/show_bug.cgi?id=106550 -->
-    <xi:include href="xml/dscv_print.xml"/>
     <xi:include href="xml/img.xml"/>
   </part>
 
diff --git a/doc/libfprint-sections.txt b/doc/libfprint-sections.txt
index 556ea72..cc9b3ae 100644
--- a/doc/libfprint-sections.txt
+++ b/doc/libfprint-sections.txt
@@ -4,7 +4,6 @@
 <FILE>events</FILE>
 <TITLE>Initialisation and events handling</TITLE>
 LIBFPRINT_DEPRECATED
-fp_set_debug
 fp_init
 fp_exit
 fp_pollfd
@@ -28,9 +27,6 @@ fp_dscv_dev_get_driver
 fp_dscv_dev_get_devtype
 fp_dscv_dev_get_driver_id
 fp_dscv_dev_supports_print_data
-fp_dscv_dev_supports_dscv_print
-fp_dscv_dev_for_print_data
-fp_dscv_dev_for_dscv_print
 </SECTION>
 
 <SECTION>
@@ -59,7 +55,6 @@ fp_dev_get_devtype
 fp_dev_supports_print_data
 fp_dev_supports_imaging
 fp_dev_supports_identification
-fp_dev_supports_dscv_print
 fp_dev_get_img_width
 fp_dev_get_img_height
 
@@ -102,27 +97,11 @@ fp_finger
 fp_print_data
 fp_print_data_get_data
 fp_print_data_from_data
-fp_print_data_save
-fp_print_data_load
-fp_print_data_delete
-fp_print_data_from_dscv_print
 fp_print_data_free
 fp_print_data_get_driver_id
 fp_print_data_get_devtype
 </SECTION>
 
-<SECTION>
-<INCLUDE>fprint.h</INCLUDE>
-<FILE>dscv_print</FILE>
-fp_dscv_print
-fp_discover_prints
-fp_dscv_prints_free
-fp_dscv_print_get_driver_id
-fp_dscv_print_get_devtype
-fp_dscv_print_get_finger
-fp_dscv_print_delete
-</SECTION>
-
 <SECTION>
 <INCLUDE>fprint.h</INCLUDE>
 <FILE>img</FILE>
diff --git a/libfprint/fp_internal.h b/libfprint/fp_internal.h
index 5c89e18..7861032 100644
--- a/libfprint/fp_internal.h
+++ b/libfprint/fp_internal.h
@@ -162,14 +162,6 @@ struct fp_dscv_dev {
 	uint32_t devtype;
 };
 
-/* fp_dscv_print structure definition */
-struct fp_dscv_print {
-	uint16_t driver_id;
-	uint32_t devtype;
-	enum fp_finger finger;
-	char *path;
-};
-
 /* fp_minutia structure definition */
 struct fp_minutia {
 	int x;
@@ -206,7 +198,6 @@ struct fp_driver **fprint_get_drivers (void);
 enum fp_print_data_type fpi_driver_get_data_type(struct fp_driver *drv);
 
 /* Defined in fpi-data.c */
-void fpi_data_exit(void);
 gboolean fpi_print_data_compatible(uint16_t driver_id1, uint32_t devtype1,
 	enum fp_print_data_type type1, uint16_t driver_id2, uint32_t devtype2,
 	enum fp_print_data_type type2);
diff --git a/libfprint/fpi-core.c b/libfprint/fpi-core.c
index 6009c82..ee158bd 100644
--- a/libfprint/fpi-core.c
+++ b/libfprint/fpi-core.c
@@ -416,88 +416,6 @@ API_EXPORTED int fp_dscv_dev_supports_print_data(struct fp_dscv_dev *dev,
 		print->type);
 }
 
-/**
- * fp_dscv_dev_supports_dscv_print:
- * @dev: the discovered device
- * @print: the discovered print for compatibility checking
- *
- * Determines if a specific #fp_dscv_print discovered print appears to be
- * compatible with a discovered device.
- *
- * Returns: 1 if the print is compatible with the device, 0 otherwise
- *
- * Deprecated: Do not use.
- */
-API_EXPORTED int fp_dscv_dev_supports_dscv_print(struct fp_dscv_dev *dev,
-	struct fp_dscv_print *print)
-{
-	g_return_val_if_fail(dev, 0);
-	g_return_val_if_fail(print, 0);
-
-	return fpi_print_data_compatible(dev->drv->id, dev->devtype, 0,
-		print->driver_id, print->devtype, 0);
-}
-
-/**
- * fp_dscv_dev_for_print_data:
- * @devs: a list of discovered devices
- * @print: the print under inspection
- *
- * Searches a list of discovered devices for a device that appears to be
- * compatible with a #fp_print_data stored print.
- *
- * Returns: the first discovered device that appears to support the print, or
- * %NULL if no apparently compatible devices could be found
- *
- * Deprecated: Do not use.
- */
-API_EXPORTED struct fp_dscv_dev *fp_dscv_dev_for_print_data(struct fp_dscv_dev **devs,
-	struct fp_print_data *print)
-{
-	struct fp_dscv_dev *ddev;
-	int i;
-
-	g_return_val_if_fail(devs, NULL);
-	g_return_val_if_fail(print, NULL);
-
-	for (i = 0; (ddev = devs[i]); i++)
-		if (fp_dscv_dev_supports_print_data(ddev, print))
-			return ddev;
-	return NULL;
-}
-
-/**
- * fp_dscv_dev_for_dscv_print:
- * @devs: a list of discovered devices
- * @print: the print under inspection
- *
- * Searches a list of discovered devices for a device that appears to be
- * compatible with a #fp_dscv_print discovered print.
- *
- * Returns: the first discovered device that appears to support the print, or
- * %NULL if no apparently compatible devices could be found
- *
- * Deprecated: Do not use.
- */
-API_EXPORTED struct fp_dscv_dev *fp_dscv_dev_for_dscv_print(struct fp_dscv_dev **devs,
-	struct fp_dscv_print *print)
-{
-	struct fp_dscv_dev *ddev;
-	int i;
-
-	g_return_val_if_fail(devs, NULL);
-	g_return_val_if_fail(print, NULL);
-
-	for (i = 0; (ddev = devs[i]); i++) {
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-		if (fp_dscv_dev_supports_dscv_print(ddev, print))
-			return ddev;
-#pragma GCC diagnostic pop
-	}
-	return NULL;
-}
-
 /**
  * fp_dev_get_driver:
  * @dev: the struct #fp_dev device
@@ -564,28 +482,6 @@ API_EXPORTED int fp_dev_supports_print_data(struct fp_dev *dev,
 		data->type);
 }
 
-/**
- * fp_dev_supports_dscv_print:
- * @dev: the struct #fp_dev device
- * @print: the discovered print
- *
- * Determines if a #fp_dscv_print discovered print appears to be compatible
- * with a certain device.
- *
- * Returns: 1 if the print is compatible with the device, 0 if not
- *
- * Deprecated: Do not use.
- */
-API_EXPORTED int fp_dev_supports_dscv_print(struct fp_dev *dev,
-	struct fp_dscv_print *print)
-{
-	g_return_val_if_fail(dev, 0);
-	g_return_val_if_fail(print, 0);
-
-	return fpi_print_data_compatible(dev->drv->id, dev->devtype,
-		0, print->driver_id, print->devtype, 0);
-}
-
 /**
  * fp_driver_get_name:
  * @drv: the driver
@@ -826,7 +722,6 @@ API_EXPORTED void fp_exit(void)
 		opened_devices = NULL;
 	}
 
-	fpi_data_exit();
 	fpi_poll_exit();
 	g_slist_free(registered_drivers);
 	registered_drivers = NULL;
diff --git a/libfprint/fpi-data.c b/libfprint/fpi-data.c
index c19142a..2a33064 100644
--- a/libfprint/fpi-data.c
+++ b/libfprint/fpi-data.c
@@ -61,10 +61,6 @@ struct fpi_print_data_item_fp2 {
  * to convert print data into byte strings, and to reconstruct stored prints
  * from such data at a later point. You are welcome to store these byte strings
  * in any fashion that suits you.
- *
- * The provided API to store data on disk is deprecated and should not be
- * used anymore. This API stored the prints in the current user's home
- * directory.
  */
 
 /*
@@ -77,51 +73,9 @@ struct fpi_print_data_item_fp2 {
  * See #fp_print_data for the public API counterpart.
  */
 
-static char *base_store = NULL;
-
-static void storage_setup(void)
-{
-	const char *homedir;
-
-	homedir = g_getenv("HOME");
-	if (!homedir)
-		homedir = g_get_home_dir();
-	if (!homedir)
-		return;
-
-	base_store = g_build_filename(homedir, ".fprint/prints", NULL);
-	g_mkdir_with_parents(base_store, DIR_PERMS);
-	/* FIXME handle failure */
-}
-
-void fpi_data_exit(void)
-{
-	g_free(base_store);
-}
-
 #define FP_FINGER_IS_VALID(finger) \
 	((finger) >= LEFT_THUMB && (finger) <= RIGHT_LITTLE)
 
-/* for debug messages only */
-static const char *finger_num_to_str(enum fp_finger finger)
-{
-	const char *names[] = {
-		[LEFT_THUMB] = "left thumb",
-		[LEFT_INDEX] = "left index",
-		[LEFT_MIDDLE] = "left middle",
-		[LEFT_RING] = "left ring",
-		[LEFT_LITTLE] = "left little",
-		[RIGHT_THUMB] = "right thumb",
-		[RIGHT_INDEX] = "right index",
-		[RIGHT_MIDDLE] = "right middle",
-		[RIGHT_RING] = "right ring",
-		[RIGHT_LITTLE] = "right little",
-	};
-	if (!FP_FINGER_IS_VALID(finger))
-		return "UNKNOWN";
-	return names[finger];
-}
-
 static struct fp_print_data *print_data_new(uint16_t driver_id,
 	uint32_t devtype, enum fp_print_data_type type)
 {
@@ -321,105 +275,6 @@ API_EXPORTED struct fp_print_data *fp_print_data_from_data(unsigned char *buf,
 	return NULL;
 }
 
-static char *get_path_to_storedir(uint16_t driver_id, uint32_t devtype)
-{
-	char idstr[5];
-	char devtypestr[9];
-
-	g_snprintf(idstr, sizeof(idstr), "%04x", driver_id);
-	g_snprintf(devtypestr, sizeof(devtypestr), "%08x", devtype);
-
-	return g_build_filename(base_store, idstr, devtypestr, NULL);
-}
-
-static char *__get_path_to_print(uint16_t driver_id, uint32_t devtype,
-	enum fp_finger finger)
-{
-	char *dirpath;
-	char *path;
-	char fingername[2];
-
-	g_snprintf(fingername, 2, "%x", finger);
-
-	dirpath = get_path_to_storedir(driver_id, devtype);
-	path = g_build_filename(dirpath, fingername, NULL);
-	g_free(dirpath);
-	return path;
-}
-
-static char *get_path_to_print(struct fp_dev *dev, enum fp_finger finger)
-{
-	return __get_path_to_print(dev->drv->id, dev->devtype, finger);
-}
-
-/**
- * fp_print_data_save:
- * @data: the stored print to save to disk
- * @finger: the finger that this print corresponds to
- *
- * Saves a stored print to disk, assigned to a specific finger. Even though
- * you are limited to storing only the 10 human fingers, this is a
- * per-device-type limit. For example, you can store the users right index
- * finger from a DigitalPersona scanner, and you can also save the right index
- * finger from a UPEK scanner. When you later come to load the print, the right
- * one will be automatically selected.
- *
- * This function will unconditionally overwrite a fingerprint previously
- * saved for the same finger and device type. The print is saved in a hidden
- * directory beneath the current user's home directory.
- *
- * Returns: 0 on success, non-zero on error.
- *
- * Deprecated: Data storage should be handled outside of libfprint.
- * See <link linkend="libfprint-Stored-prints.description">stored prints description</link>
- * for more information.
- */
-API_EXPORTED int fp_print_data_save(struct fp_print_data *data,
-	enum fp_finger finger)
-{
-	GError *err = NULL;
-	char *path;
-	char *dirpath;
-	unsigned char *buf;
-	size_t len;
-	int r;
-
-	if (!base_store)
-		storage_setup();
-
-	fp_dbg("save %s print from driver %04x", finger_num_to_str(finger),
-		data->driver_id);
-	len = fp_print_data_get_data(data, &buf);
-	if (!len)
-		return -ENOMEM;
-
-	path = __get_path_to_print(data->driver_id, data->devtype, finger);
-	dirpath = g_path_get_dirname(path);
-	r = g_mkdir_with_parents(dirpath, DIR_PERMS);
-	if (r < 0) {
-		fp_err("couldn't create storage directory");
-		free(buf);
-		g_free(path);
-		g_free(dirpath);
-		return r;
-	}
-
-	fp_dbg("saving to %s", path);
-	g_file_set_contents(path, buf, len, &err);
-	free(buf);
-	g_free(dirpath);
-	g_free(path);
-	if (err) {
-		r = err->code;
-		fp_err("save failed: %s", err->message);
-		g_error_free(err);
-		/* FIXME interpret error codes */
-		return r;
-	}
-
-	return 0;
-}
-
 gboolean fpi_print_data_compatible(uint16_t driver_id1, uint32_t devtype1,
 	enum fp_print_data_type type1, uint16_t driver_id2, uint32_t devtype2,
 	enum fp_print_data_type type2)
@@ -442,132 +297,6 @@ gboolean fpi_print_data_compatible(uint16_t driver_id1, uint32_t devtype1,
 	return TRUE;
 }
 
-static int load_from_file(char *path, struct fp_print_data **data)
-{
-	gsize length;
-	gchar *contents;
-	GError *err = NULL;
-	struct fp_print_data *fdata;
-
-	fp_dbg("from %s", path);
-	g_file_get_contents(path, &contents, &length, &err);
-	if (err) {
-		int r = err->code;
-		fp_err("%s load failed: %s", path, err->message);
-		g_error_free(err);
-		/* FIXME interpret more error codes */
-		if (r == G_FILE_ERROR_NOENT)
-			return -ENOENT;
-		else
-			return r;
-	}
-
-	fdata = fp_print_data_from_data(contents, length);
-	g_free(contents);
-	if (!fdata)
-		return -EIO;
-	*data = fdata;
-	return 0;
-}
-
-/**
- * fp_print_data_load:
- * @dev: the device you are loading the print for
- * @finger: the finger of the file you are loading
- * @data: output location to put the corresponding stored print. Must be
- * freed with fp_print_data_free() after use.
-
- * Loads a previously stored print from disk. The print must have been saved
- * earlier using the fp_print_data_save() function.
- *
- * A return code of -ENOENT indicates that the fingerprint requested could not
- * be found. Other error codes (both positive and negative) are possible for
- * obscure error conditions (e.g. corruption).
- *
- * Returns: 0 on success, non-zero on error
- *
- * Deprecated: Data storage should be handled outside of libfprint.
- * See <link linkend="libfprint-Stored-prints.description">stored prints description</link>
- * for more information.
- */
-API_EXPORTED int fp_print_data_load(struct fp_dev *dev,
-	enum fp_finger finger, struct fp_print_data **data)
-{
-	gchar *path;
-	struct fp_print_data *fdata = NULL;
-	int r;
-
-	if (!base_store)
-		storage_setup();
-
-	path = get_path_to_print(dev, finger);
-	r = load_from_file(path, &fdata);
-	g_free(path);
-	if (r)
-		return r;
-
-	if (!fp_dev_supports_print_data(dev, fdata)) {
-		fp_err("print data is not compatible!");
-		fp_print_data_free(fdata);
-		return -EINVAL;
-	}
-
-	*data = fdata;
-	return 0;
-}
-
-/**
- * fp_print_data_delete:
- * @dev: the device that the print belongs to
- * @finger: the finger of the file you are deleting
-
- * Removes a stored print from disk previously saved with fp_print_data_save().
- *
- * Returns: 0 on success, negative on error
- *
- * Deprecated: Data storage should be handled outside of libfprint.
- * See <link linkend="libfprint-Stored-prints.description">stored prints description</link>
- * for more information.
- */
-API_EXPORTED int fp_print_data_delete(struct fp_dev *dev,
-	enum fp_finger finger)
-{
-	int r;
-	gchar *path = get_path_to_print(dev, finger);
-
-	fp_dbg("remove finger %d at %s", finger, path);
-	r = g_unlink(path);
-	g_free(path);
-	if (r < 0)
-		fp_dbg("unlink failed with error %d", r);
-
-	/* FIXME: cleanup empty directory */
-	return r;
-}
-
-/**
- * fp_print_data_from_dscv_print:
- * @print: the discovered print
- * @data: output location to point to the corresponding stored print. Must
- * be freed with fp_print_data_free() after use.
-
- * Attempts to load a stored print based on a #fp_dscv_print
- * discovered print record.
- *
- * A return code of -ENOENT indicates that the file referred to by the
- * discovered print could not be found. Other error codes (both positive and
- * negative) are possible for obscure error conditions (e.g. corruption).
- *
- * Returns: 0 on success, non-zero on error.
- *
- * Deprecated: Do not use.
- */
-API_EXPORTED int fp_print_data_from_dscv_print(struct fp_dscv_print *print,
-	struct fp_print_data **data)
-{
-	return load_from_file(print->path, data);
-}
-
 /**
  * fp_print_data_free:
  * @data: the stored print to destroy. If NULL, function simply returns.
@@ -609,292 +338,3 @@ API_EXPORTED uint32_t fp_print_data_get_devtype(struct fp_print_data *data)
 {
 	return data->devtype;
 }
-
-/**
- * SECTION:dscv_print
- * @title: Print discovery (deprecated)
- * @short_description: Print discovery functions
- *
- * The [stored print](libfprint-Stored-prints.html) documentation detailed a simple API
- * for storing per-device prints for a single user, namely
- * fp_print_data_save(). It also detailed a load function,
- * fp_print_data_load(), but usage of this function is limited to scenarios
- * where you know which device you would like to use, and you know which
- * finger you are looking to verify.
- *
- * In other cases, it would be more useful to be able to enumerate all
- * previously saved prints, potentially even before device discovery. These
- * functions are designed to offer this functionality to you.
- *
- * Discovered prints are stored in a #fp_dscv_print structure, and you
- * can use functions documented below to access some information about these
- * prints. You can determine if a discovered print appears to be compatible
- * with a device using functions such as fp_dscv_dev_supports_dscv_print() and
- * fp_dev_supports_dscv_print().
- *
- * When you are ready to use the print, you can load it into memory in the form
- * of a stored print by using the fp_print_data_from_dscv_print() function.
- *
- * You may have noticed the use of the word "appears" in the above paragraphs.
- * libfprint performs print discovery simply by examining the file and
- * directory structure of libfprint's private data store. It does not examine
- * the actual prints themselves. Just because a print has been discovered
- * and appears to be compatible with a certain device does not necessarily mean
- * that it is usable; when you come to load or use it, under unusual
- * circumstances it may turn out that the print is corrupt or not for the
- * device that it appeared to be. Also, it is possible that the print may have
- * been deleted by the time you come to load it.
- *
- * Note that this portion of the library is deprecated. All that it offers is
- * already implementable using publicly available functions, and its usage is
- * unnecessarily restrictive in terms of how it stores data.
- */
-
-static GSList *scan_dev_store_dir(char *devpath, uint16_t driver_id,
-	uint32_t devtype, GSList *list)
-{
-	GError *err = NULL;
-	const gchar *ent;
-	struct fp_dscv_print *print;
-
-	GDir *dir = g_dir_open(devpath, 0, &err);
-	if (!dir) {
-		fp_err("opendir %s failed: %s", devpath, err->message);
-		g_error_free(err);
-		return list;
-	}
-
-	while ((ent = g_dir_read_name(dir))) {
-		/* ent is an 1 hex character fp_finger code */
-		guint64 val;
-		enum fp_finger finger;
-		gchar *endptr;
-
-		if (*ent == 0 || strlen(ent) != 1)
-			continue;
-
-		val = g_ascii_strtoull(ent, &endptr, 16);
-		if (endptr == ent || !FP_FINGER_IS_VALID(val)) {
-			fp_dbg("skipping print file %s", ent);
-			continue;
-		}
-
-		finger = (enum fp_finger) val;
-		print = g_malloc(sizeof(*print));
-		print->driver_id = driver_id;
-		print->devtype = devtype;
-		print->path = g_build_filename(devpath, ent, NULL);
-		print->finger = finger;
-		list = g_slist_prepend(list, print);
-	}
-
-	g_dir_close(dir);
-	return list;
-}
-
-static GSList *scan_driver_store_dir(char *drvpath, uint16_t driver_id,
-	GSList *list)
-{
-	GError *err = NULL;
-	const gchar *ent;
-
-	GDir *dir = g_dir_open(drvpath, 0, &err);
-	if (!dir) {
-		fp_err("opendir %s failed: %s", drvpath, err->message);
-		g_error_free(err);
-		return list;
-	}
-
-	while ((ent = g_dir_read_name(dir))) {
-		/* ent is an 8 hex character devtype */
-		guint64 val;
-		uint32_t devtype;
-		gchar *endptr;
-		gchar *path;
-
-		if (*ent == 0 || strlen(ent) != 8)
-			continue;
-
-		val = g_ascii_strtoull(ent, &endptr, 16);
-		if (endptr == ent) {
-			fp_dbg("skipping devtype %s", ent);
-			continue;
-		}
-
-		devtype = (uint32_t) val;
-		path = g_build_filename(drvpath, ent, NULL);
-		list = scan_dev_store_dir(path, driver_id, devtype, list);
-		g_free(path);
-	}
-
-	g_dir_close(dir);
-	return list;
-}
-
-/**
- * fp_discover_prints:
- *
- * Scans the users home directory and returns a list of prints that were
- * previously saved using fp_print_data_save().
- *
- * Returns: a %NULL-terminated list of discovered prints, must be freed with
- * fp_dscv_prints_free() after use.
- *
- * Deprecated: Do not use.
- */
-API_EXPORTED struct fp_dscv_print **fp_discover_prints(void)
-{
-	GDir *dir;
-	const gchar *ent;
-	GError *err = NULL;
-	GSList *tmplist = NULL;
-	GSList *elem;
-	GPtrArray *array;
-
-	if (!base_store)
-		storage_setup();
-
-	dir = g_dir_open(base_store, 0, &err);
-	if (!dir) {
-		fp_err("opendir %s failed: %s", base_store, err->message);
-		g_error_free(err);
-		return NULL;
-	}
-
-	while ((ent = g_dir_read_name(dir))) {
-		/* ent is a 4 hex digit driver_id */
-		gchar *endptr;
-		gchar *path;
-		guint64 val;
-		uint16_t driver_id;
-
-		if (*ent == 0 || strlen(ent) != 4)
-			continue;
-
-		val = g_ascii_strtoull(ent, &endptr, 16);
-		if (endptr == ent) {
-			fp_dbg("skipping drv id %s", ent);
-			continue;
-		}
-
-		driver_id = (uint16_t) val;
-		path = g_build_filename(base_store, ent, NULL);
-		tmplist = scan_driver_store_dir(path, driver_id, tmplist);
-		g_free(path);
-	}
-
-	g_dir_close(dir);
-
-	if (tmplist == NULL)
-		return NULL;
-
-	array = g_ptr_array_new();
-	for (elem = tmplist; elem != NULL; elem = elem->next)
-		g_ptr_array_add(array, elem->data);
-	g_ptr_array_add(array, NULL);
-
-	g_slist_free(tmplist);
-	return (struct fp_dscv_print **) g_ptr_array_free(array, FALSE);
-}
-
-/**
- * fp_dscv_prints_free:
- * @prints: the list of discovered prints. If NULL, function simply
- * returns.
- *
- * Frees a list of discovered prints. This function also frees the discovered
- * prints themselves, so make sure you do not use any discovered prints
- * after calling this function.
- *
- * Deprecated: Do not use.
- */
-API_EXPORTED void fp_dscv_prints_free(struct fp_dscv_print **prints)
-{
-	int i;
-	struct fp_dscv_print *print;
-
-	if (!prints)
-		return;
-
-	for (i = 0; (print = prints[i]); i++) {
-		if (print)
-			g_free(print->path);
-		g_free(print);
-	}
-	g_free(prints);
-}
-
-/**
- * fp_dscv_print_get_driver_id:
- * @print: the discovered print
- *
- * Gets the [driver ID](advanced-topics.html#driver_id) for a discovered print. The driver ID
- * indicates which driver the print originally came from. The print is only
- * usable with a device controlled by that driver.
- *
- * Returns: the driver ID of the driver compatible with the print
- *
- * Deprecated: Do not use.
- */
-API_EXPORTED uint16_t fp_dscv_print_get_driver_id(struct fp_dscv_print *print)
-{
-	return print->driver_id;
-}
-
-/**
- * fp_dscv_print_get_devtype:
- * @print: the discovered print
- *
- * Gets the [devtype](advanced-topics.html#device-types) for a discovered print. The devtype
- * represents which type of device under the parent driver is compatible
- * with the print.
- *
- * Returns: the devtype of the device range compatible with the print
- *
- * Deprecated: Do not use.
- */
-API_EXPORTED uint32_t fp_dscv_print_get_devtype(struct fp_dscv_print *print)
-{
-	return print->devtype;
-}
-
-/**
- * fp_dscv_print_get_finger:
- * @print: discovered print
- *
- * Gets the finger code for a discovered print.
- *
- * Returns: a finger code from #fp_finger
- *
- * Deprecated: Do not use.
- */
-API_EXPORTED enum fp_finger fp_dscv_print_get_finger(struct fp_dscv_print *print)
-{
-	return print->finger;
-}
-
-/**
- * fp_dscv_print_delete:
- * @print: the discovered print to remove from disk
- *
- * Removes a discovered print from disk. After successful return of this
- * function, functions such as fp_dscv_print_get_finger() will continue to
- * operate as before, however calling fp_print_data_from_dscv_print() will
- * fail for obvious reasons.
- *
- * Returns: 0 on success, negative on error
- *
- * Deprecated: Do not use.
- */
-API_EXPORTED int fp_dscv_print_delete(struct fp_dscv_print *print)
-{
-	int r;
-	fp_dbg("remove at %s", print->path);
-	r = g_unlink(print->path);
-	if (r < 0)
-		fp_dbg("unlink failed with error %d", r);
-
-	/* FIXME: cleanup empty directory */
-	return r;
-}
-
diff --git a/libfprint/fprint.h b/libfprint/fprint.h
index 4b68e4a..c7e81b4 100644
--- a/libfprint/fprint.h
+++ b/libfprint/fprint.h
@@ -46,14 +46,6 @@ extern "C" {
  */
 struct fp_dscv_dev;
 
-/**
- * fp_dscv_print:
- *
- * #fp_dscv_print is an opaque structure type.  You must access it using the
- * functions in this section.
- */
-struct fp_dscv_print;
-
 /**
  * fp_dev:
  *
@@ -147,20 +139,6 @@ uint16_t fp_dscv_dev_get_driver_id(struct fp_dscv_dev *dev);
 uint32_t fp_dscv_dev_get_devtype(struct fp_dscv_dev *dev);
 int fp_dscv_dev_supports_print_data(struct fp_dscv_dev *dev,
 	struct fp_print_data *print);
-int fp_dscv_dev_supports_dscv_print(struct fp_dscv_dev *dev,
-	struct fp_dscv_print *print) LIBFPRINT_DEPRECATED;
-struct fp_dscv_dev *fp_dscv_dev_for_print_data(struct fp_dscv_dev **devs,
-	struct fp_print_data *print) LIBFPRINT_DEPRECATED;
-struct fp_dscv_dev *fp_dscv_dev_for_dscv_print(struct fp_dscv_dev **devs,
-	struct fp_dscv_print *print) LIBFPRINT_DEPRECATED;
-
-/* Print discovery */
-struct fp_dscv_print **fp_discover_prints(void) LIBFPRINT_DEPRECATED;
-void fp_dscv_prints_free(struct fp_dscv_print **prints) LIBFPRINT_DEPRECATED;
-uint16_t fp_dscv_print_get_driver_id(struct fp_dscv_print *print) LIBFPRINT_DEPRECATED;
-uint32_t fp_dscv_print_get_devtype(struct fp_dscv_print *print) LIBFPRINT_DEPRECATED;
-enum fp_finger fp_dscv_print_get_finger(struct fp_dscv_print *print) LIBFPRINT_DEPRECATED;
-int fp_dscv_print_delete(struct fp_dscv_print *print) LIBFPRINT_DEPRECATED;
 
 /* Device handling */
 struct fp_dev *fp_dev_open(struct fp_dscv_dev *ddev);
@@ -169,7 +147,6 @@ struct fp_driver *fp_dev_get_driver(struct fp_dev *dev);
 int fp_dev_get_nr_enroll_stages(struct fp_dev *dev);
 uint32_t fp_dev_get_devtype(struct fp_dev *dev);
 int fp_dev_supports_print_data(struct fp_dev *dev, struct fp_print_data *data);
-int fp_dev_supports_dscv_print(struct fp_dev *dev, struct fp_dscv_print *print) LIBFPRINT_DEPRECATED;
 
 /**
  * fp_capture_result:
@@ -274,14 +251,6 @@ int fp_identify_finger(struct fp_dev *dev,
 	struct fp_print_data **print_gallery, size_t *match_offset);
 
 /* Data handling */
-int fp_print_data_load(struct fp_dev *dev, enum fp_finger finger,
-	struct fp_print_data **data) LIBFPRINT_DEPRECATED;
-int fp_print_data_from_dscv_print(struct fp_dscv_print *print,
-	struct fp_print_data **data) LIBFPRINT_DEPRECATED;
-int fp_print_data_save(struct fp_print_data *data, enum fp_finger finger)
-	LIBFPRINT_DEPRECATED;
-int fp_print_data_delete(struct fp_dev *dev, enum fp_finger finger)
-	LIBFPRINT_DEPRECATED;
 void fp_print_data_free(struct fp_print_data *data);
 size_t fp_print_data_get_data(struct fp_print_data *data, unsigned char **ret);
 struct fp_print_data *fp_print_data_from_data(unsigned char *buf,
@@ -354,7 +323,6 @@ void fp_set_pollfd_notifiers(fp_pollfd_added_cb added_cb,
 /* Library */
 int fp_init(void);
 void fp_exit(void);
-void fp_set_debug(int level) LIBFPRINT_DEPRECATED;
 
 /* Asynchronous I/O */