diff --git a/common/userpref.c b/common/userpref.c
index ddd380a..11e28ba 100644
--- a/common/userpref.c
+++ b/common/userpref.c
@@ -338,7 +338,7 @@
 	}
 
 	*pair_record = NULL;
-	plist_from_memory(record_data, record_size, pair_record);
+	plist_from_memory(record_data, record_size, pair_record, NULL);
 	free(record_data);
 
 	if (!*pair_record) {
diff --git a/configure.ac b/configure.ac
index 503051f..8ba094a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,7 +26,7 @@
 
 dnl Minimum package versions
 LIBUSBMUXD_VERSION=2.0.2
-LIBPLIST_VERSION=2.2.0
+LIBPLIST_VERSION=2.3.0
 LIMD_GLUE_VERSION=1.0.0
 
 AC_SUBST(LIBUSBMUXD_VERSION)
diff --git a/src/lockdown-cu.c b/src/lockdown-cu.c
index 61a1c03..d8d7f42 100644
--- a/src/lockdown-cu.c
+++ b/src/lockdown-cu.c
@@ -1032,7 +1032,7 @@
 	plist_free(dict);
 	dict = NULL;
 
-	plist_from_memory((const char*)decrypted, decrypted_len, &dict);
+	plist_from_memory((const char*)decrypted, decrypted_len, &dict, NULL);
 	if (!dict) {
 		ret = LOCKDOWN_E_PLIST_ERROR;
 		debug_info("Failed to parse PLIST from decrypted payload:");
diff --git a/tools/idevicebackup.c b/tools/idevicebackup.c
index 2856fda..1684666 100644
--- a/tools/idevicebackup.c
+++ b/tools/idevicebackup.c
@@ -57,6 +57,7 @@
 #include <libimobiledevice/notification_proxy.h>
 #include <libimobiledevice/afc.h>
 #include <libimobiledevice-glue/utils.h>
+#include <plist/plist.h>
 
 #define MOBILEBACKUP_SERVICE_NAME "com.apple.mobilebackup"
 #define NP_SERVICE_NAME "com.apple.mobile.notification_proxy"
@@ -317,7 +318,7 @@
 	if (stat(file_path, &st) == 0)
 		remove(file_path);
 
-	plist_write_to_filename(status_plist, file_path, PLIST_FORMAT_XML);
+	plist_write_to_file(status_plist, file_path, PLIST_FORMAT_XML, 0);
 
 	plist_free(status_plist);
 	status_plist = NULL;
@@ -331,7 +332,7 @@
 	plist_t status_plist = NULL;
 	char *file_path = mobilebackup_build_path(path, "Status", ".plist");
 
-	plist_read_from_filename(&status_plist, file_path);
+	plist_read_from_file(file_path, &status_plist, NULL);
 	free(file_path);
 	if (!status_plist) {
 		printf("Could not read Status.plist!\n");
@@ -454,7 +455,7 @@
 	}
 
 	infopath = mobilebackup_build_path(backup_directory, hash, ".mdinfo");
-	plist_read_from_filename(&mdinfo, infopath);
+	plist_read_from_file(infopath, &mdinfo, NULL);
 	free(infopath);
 	if (!mdinfo) {
 		printf("\r\n");
@@ -882,7 +883,7 @@
 		/* verify existing Info.plist */
 		if (stat(info_path, &st) == 0) {
 			printf("Reading Info.plist from backup.\n");
-			plist_read_from_filename(&info_plist, info_path);
+			plist_read_from_file(info_path, &info_plist, NULL);
 
 			if (!info_plist) {
 				printf("Could not read Info.plist\n");
@@ -893,7 +894,7 @@
 					/* update the last backup time within Info.plist */
 					mobilebackup_info_update_last_backup_date(info_plist);
 					remove(info_path);
-					plist_write_to_filename(info_plist, info_path, PLIST_FORMAT_XML);
+					plist_write_to_file(info_plist, info_path, PLIST_FORMAT_XML, 0);
 				} else {
 					printf("Aborting backup. Backup is not compatible with the current device.\n");
 					cmd = CMD_LEAVE;
@@ -959,7 +960,7 @@
 			/* read the last Manifest.plist */
 			if (!is_full_backup) {
 				printf("Reading existing Manifest.\n");
-				plist_read_from_filename(&manifest_plist, manifest_path);
+				plist_read_from_file(manifest_path, &manifest_plist, NULL);
 				if (!manifest_plist) {
 					printf("Could not read Manifest.plist, switching to full backup mode.\n");
 					is_full_backup = 1;
@@ -977,7 +978,7 @@
 				remove(info_path);
 				printf("Creating Info.plist for new backup.\n");
 				info_plist = mobilebackup_factory_info_plist_new(udid);
-				plist_write_to_filename(info_plist, info_path, PLIST_FORMAT_XML);
+				plist_write_to_file(info_plist, info_path, PLIST_FORMAT_XML, 0);
 			}
 			free(info_path);
 
@@ -1116,7 +1117,7 @@
 							remove(filename_mdinfo);
 
 						node = plist_dict_get_item(node_tmp, "BackupFileInfo");
-						plist_write_to_filename(node, filename_mdinfo, PLIST_FORMAT_BINARY);
+						plist_write_to_file(node, filename_mdinfo, PLIST_FORMAT_BINARY, 0);
 
 						free(filename_mdinfo);
 					}
@@ -1228,7 +1229,7 @@
 					if (manifest_plist) {
 						remove(manifest_path);
 						printf("Storing Manifest.plist...\n");
-						plist_write_to_filename(manifest_plist, manifest_path, PLIST_FORMAT_XML);
+						plist_write_to_file(manifest_plist, manifest_path, PLIST_FORMAT_XML, 0);
 					}
 
 					backup_ok = 1;
@@ -1259,7 +1260,7 @@
 			}
 			/* now make sure backup integrity is ok! verify all files */
 			printf("Reading existing Manifest.\n");
-			plist_read_from_filename(&manifest_plist, manifest_path);
+			plist_read_from_file(manifest_path, &manifest_plist, NULL);
 			if (!manifest_plist) {
 				printf("Could not read Manifest.plist. Aborting.\n");
 				break;
@@ -1386,7 +1387,7 @@
 					while (node) {
 						/* TODO: read mddata/mdinfo files and send to device using DLSendFile */
 						file_info_path = mobilebackup_build_path(backup_directory, hash, ".mdinfo");
-						plist_read_from_filename(&file_info, file_info_path);
+						plist_read_from_file(file_info_path, &file_info, NULL);
 
 						/* get encryption state */
 						tmp_node = plist_dict_get_item(file_info, "IsEncrypted");
diff --git a/tools/idevicebackup2.c b/tools/idevicebackup2.c
index 82dc90d..c73b269 100644
--- a/tools/idevicebackup2.c
+++ b/tools/idevicebackup2.c
@@ -47,6 +47,7 @@
 #include <libimobiledevice/sbservices.h>
 #include <libimobiledevice/diagnostics_relay.h>
 #include <libimobiledevice-glue/utils.h>
+#include <plist/plist.h>
 
 #include <endianness.h>
 
@@ -606,7 +607,7 @@
 	plist_t status_plist = NULL;
 	char *file_path = string_build_path(path, udid, "Status.plist", NULL);
 
-	plist_read_from_filename(&status_plist, file_path);
+	plist_read_from_file(file_path, &status_plist, NULL);
 	free(file_path);
 	if (!status_plist) {
 		printf("Could not read Status.plist!\n");
@@ -1780,7 +1781,7 @@
 				free(info_path);
 			}
 			plist_t manifest_plist = NULL;
-			plist_read_from_filename(&manifest_plist, manifest_path);
+			plist_read_from_file(manifest_path, &manifest_plist, NULL);
 			if (!manifest_plist) {
 				idevice_free(device);
 				free(info_path);
@@ -1936,7 +1937,7 @@
 		/* verify existing Info.plist */
 		if (info_path && (stat(info_path, &st) == 0) && cmd != CMD_CLOUD) {
 			PRINT_VERBOSE(1, "Reading Info.plist from backup.\n");
-			plist_read_from_filename(&info_plist, info_path);
+			plist_read_from_file(info_path, &info_plist, NULL);
 
 			if (!info_plist) {
 				printf("Could not read Info.plist\n");
@@ -2030,7 +2031,7 @@
 				cmd = CMD_LEAVE;
 			}
 			remove_file(info_path);
-			plist_write_to_filename(info_plist, info_path, PLIST_FORMAT_XML);
+			plist_write_to_file(info_plist, info_path, PLIST_FORMAT_XML, 0);
 			free(info_path);
 
 			plist_free(info_plist);
diff --git a/tools/idevicecrashreport.c b/tools/idevicecrashreport.c
index d0d2147..484212e 100644
--- a/tools/idevicecrashreport.c
+++ b/tools/idevicecrashreport.c
@@ -81,7 +81,7 @@
 	strcpy(p, ".crash");
 
 	/* read plist crash report */
-	if (plist_read_from_filename(&report, filename)) {
+	if (plist_read_from_file(filename, &report, NULL)) {
 		plist_t description_node = plist_dict_get_item(report, "description");
 		if (description_node && plist_get_node_type(description_node) == PLIST_STRING) {
 			plist_get_string_val(description_node, &raw);
diff --git a/tools/ideviceimagemounter.c b/tools/ideviceimagemounter.c
index 4ea38a9..f551b6c 100644
--- a/tools/ideviceimagemounter.c
+++ b/tools/ideviceimagemounter.c
@@ -46,7 +46,7 @@
 #include <libimobiledevice/notification_proxy.h>
 #include <libimobiledevice/mobile_image_mounter.h>
 #include <asprintf.h>
-#include <libimobiledevice-glue/utils.h>
+#include <plist/plist.h>
 
 static int list_mode = 0;
 static int use_network = 0;
@@ -143,15 +143,6 @@
 	}
 }
 
-static void print_xml(plist_t node)
-{
-	char *xml = NULL;
-	uint32_t len = 0;
-	plist_to_xml(node, &xml, &len);
-	if (xml)
-		puts(xml);
-}
-
 static ssize_t mim_upload_cb(void* buf, size_t size, void* userdata)
 {
 	return fread(buf, 1, size, (FILE*)userdata);
@@ -297,11 +288,7 @@
 		err = mobile_image_mounter_lookup_image(mim, imagetype, &result);
 		if (err == MOBILE_IMAGE_MOUNTER_E_SUCCESS) {
 			res = 0;
-			if (xml_mode) {
-				print_xml(result);
-			} else {
-				plist_print_to_stream(result, stdout);
-			}
+			plist_write_to_stream(result, stdout, (xml_mode) ? PLIST_FORMAT_XML : PLIST_FORMAT_LIMD, 0);
 		} else {
 			printf("Error: lookup_image returned %d\n", err);
 		}
@@ -429,20 +416,12 @@
 							res = 0;
 						} else {
 							printf("unexpected status value:\n");
-							if (xml_mode) {
-								print_xml(result);
-							} else {
-								plist_print_to_stream(result, stdout);
-							}
+							plist_write_to_stream(result, stdout, (xml_mode) ? PLIST_FORMAT_XML : PLIST_FORMAT_LIMD, 0);
 						}
 						free(status);
 					} else {
 						printf("unexpected result:\n");
-						if (xml_mode) {
-							print_xml(result);
-						} else {
-							plist_print_to_stream(result, stdout);
-						}
+						plist_write_to_stream(result, stdout, (xml_mode) ? PLIST_FORMAT_XML : PLIST_FORMAT_LIMD, 0);
 					}
 				}
 				node = plist_dict_get_item(result, "Error");
@@ -454,19 +433,11 @@
 						free(error);
 					} else {
 						printf("unexpected result:\n");
-						if (xml_mode) {
-							print_xml(result);
-						} else {
-							plist_print_to_stream(result, stdout);
-						}
+						plist_write_to_stream(result, stdout, (xml_mode) ? PLIST_FORMAT_XML : PLIST_FORMAT_LIMD, 0);
 					}
 
 				} else {
-					if (xml_mode) {
-						print_xml(result);
-					} else {
-						plist_print_to_stream(result, stdout);
-					}
+					plist_write_to_stream(result, stdout, (xml_mode) ? PLIST_FORMAT_XML : PLIST_FORMAT_LIMD, 0);
 				}
 			}
 		} else {
diff --git a/tools/ideviceinfo.c b/tools/ideviceinfo.c
index fc0527d..fd45763 100644
--- a/tools/ideviceinfo.c
+++ b/tools/ideviceinfo.c
@@ -37,7 +37,7 @@
 
 #include <libimobiledevice/libimobiledevice.h>
 #include <libimobiledevice/lockdown.h>
-#include <libimobiledevice-glue/utils.h>
+#include <plist/plist.h>
 
 #define FORMAT_KEY_VALUE 1
 #define FORMAT_XML 2
@@ -241,11 +241,11 @@
 				free(xml_doc);
 				break;
 			case FORMAT_KEY_VALUE:
-				plist_print_to_stream(node, stdout);
+				plist_write_to_stream(node, stdout, PLIST_FORMAT_LIMD, 0);
 				break;
 			default:
 				if (key != NULL)
-					plist_print_to_stream(node, stdout);
+					plist_write_to_stream(node, stdout, PLIST_FORMAT_LIMD, 0);
 			break;
 			}
 			plist_free(node);
diff --git a/tools/idevicepair.c b/tools/idevicepair.c
index dda02ec..94d3f04 100644
--- a/tools/idevicepair.c
+++ b/tools/idevicepair.c
@@ -41,7 +41,6 @@
 #endif
 
 #include "common/userpref.h"
-#include <libimobiledevice-glue/utils.h>
 
 #include <libimobiledevice/libimobiledevice.h>
 #include <libimobiledevice/lockdown.h>
@@ -104,7 +103,7 @@
 		printf("\n");
 	} else if (cb_type == LOCKDOWN_CU_PAIRING_DEVICE_INFO) {
 		printf("Device info:\n");
-		plist_print_to_stream_with_indentation((plist_t)data_ptr, stdout, 2);
+		plist_write_to_stream((plist_t)data_ptr, stdout, PLIST_FORMAT_LIMD, PLIST_OPT_INDENT | PLIST_OPT_INDENT_BY(2));
 	} else if (cb_type == LOCKDOWN_CU_PAIRING_ERROR) {
 		printf("ERROR: %s\n", (data_ptr) ? (char*)data_ptr : "(unknown)");
 	}
@@ -257,7 +256,7 @@
 				goto leave;
 			}
 			if (*optarg == '@') {
-				plist_read_from_filename(&host_info_plist, optarg+1);
+				plist_read_from_file(optarg+1, &host_info_plist, NULL);
 				if (!host_info_plist) {
 					fprintf(stderr, "ERROR: Could not read from file '%s'\n", optarg+1);
 					result = EXIT_FAILURE;
diff --git a/tools/ideviceprovision.c b/tools/ideviceprovision.c
index 7cd4f3f..4080a28 100644
--- a/tools/ideviceprovision.c
+++ b/tools/ideviceprovision.c
@@ -45,7 +45,7 @@
 #include <libimobiledevice/libimobiledevice.h>
 #include <libimobiledevice/lockdown.h>
 #include <libimobiledevice/misagent.h>
-#include <libimobiledevice-glue/utils.h>
+#include <plist/plist.h>
 
 static void print_usage(int argc, char **argv, int is_error)
 {
@@ -436,7 +436,7 @@
 				}
 			} else {
 				if (pl && (plist_get_node_type(pl) == PLIST_DICT)) {
-					plist_print_to_stream(pl, stdout);
+					plist_write_to_stream(pl, stdout, PLIST_FORMAT_LIMD, 0);
 				} else {
 					fprintf(stderr, "ERROR: unexpected node type in profile plist (not PLIST_DICT)\n");
 					res = -1;
