diff --git a/Makefile b/Makefile
index 6f524a0..2118f08 100644
--- a/Makefile
+++ b/Makefile
@@ -347,7 +347,7 @@ CXXFLAGS_FOR_BUILD :=
 LDFLAGS_FOR_BUILD  :=
 
 else ifeq ($(UNAME),Darwin)
-ifeq ($(shell sw_vers -productName),macOS)
+ifeq ($(shell echo 1),1)
 ifneq ($(MEMO_QUIET),1)
 $(warning Building on MacOS)
 endif # ($(MEMO_QUIET),1)
@@ -428,26 +428,7 @@ BUILD_STRAP    := $(BUILD_ROOT)/build_strap/$(MEMO_TARGET)/$(MEMO_CFVER)
 # Extra scripts for the buildsystem
 BUILD_TOOLS    := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))/build_tools
 
-
-ifeq ($(DEBUG),1)
-OPTIMIZATION_FLAGS := -g -O0
-else ifeq ($(MEMO_TARGET),bridgeos-arm64)
-OPTIMIZATION_FLAGS := -Oz
-else
-OPTIMIZATION_FLAGS := -Os
-ifeq ($(UNAME),Darwin)
-OPTIMIZATION_FLAGS += -flto=thin
-else ifeq ($(MEMO_FORCE_LTO),1)
-OPTIMIZATION_FLAGS += -flto=thin
-# This flag will prevent ld64 from deleting the object file needed for dsymutil to work.
-# I'm not setting this on macOS because I am unsure if it is needed.
-# See: clang(1)
-OPTIMIZATION_FLAGS += -Wl,-object_path_lto,/tmp/lto.o
-endif
-endif
-ifdef ($(MEMO_ALT_LTO_LIB))
-OPTIMIZATION_FLAGS += -lto_library $(MEMO_ALT_LTO_LIB)
-endif
+OPTIMIZATION_FLAGS := -fembed-bitcode=off -fno-lto -Os
 
 CFLAGS              := $(OPTIMIZATION_FLAGS) -arch $(MEMO_ARCH) -isysroot $(TARGET_SYSROOT) $(PLATFORM_VERSION_MIN) -isystem $(BUILD_BASE)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include -isystem $(BUILD_BASE)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)$(MEMO_ALT_PREFIX)/include -F$(BUILD_BASE)$(MEMO_PREFIX)/System/Library/Frameworks -F$(BUILD_BASE)$(MEMO_PREFIX)/Library/Frameworks
 CXXFLAGS            := $(CFLAGS)
@@ -594,7 +575,7 @@ EXTRACT_TAR = -if [ ! -d $(BUILD_WORK)/$(3) ] || [ "$(4)" = "1" ]; then \
 		mkdir -p $(3); \
 		chmod -R 0755 $(2); \
 		cp -a $(2)/. $(3); \
-		rm -rf $(2); \
+		rm -r $(2); \
 	fi
 
 DO_PATCH    = cd $(BUILD_PATCH)/$(1); \
@@ -718,17 +699,17 @@ endif
 
 TAR  := tar # TODO: remove
 
-ifneq ($(shell PATH=$(PATH) tar --version | grep -q GNU && echo 1),1)
+ifneq ($(shell tar --version | grep -q GNU && echo 1),1)
 $(error Install GNU tar)
 endif
 
 SED  := sed # TODO: remove
 
-ifneq ($(shell PATH=$(PATH) sed --version | grep -q GNU && echo 1),1)
+ifneq ($(shell sed --version | grep -q GNU && echo 1),1)
 $(error Install GNU sed)
 endif
 
-ifneq ($(shell PATH=$(PATH) grep --version | grep -q GNU && echo 1),1)
+ifneq ($(shell grep --version | grep -q GNU && echo 1),1)
 $(error Install GNU grep)
 endif
 
@@ -778,49 +759,49 @@ ifneq ($(call HAS_COMMAND,m4),1)
 $(error Install m4)
 endif
 
-ifneq ($(shell PATH=$(PATH) groff --version | grep -q 'version 1.2' && echo 1),1)
+ifneq ($(shell groff --version | grep -q 'version 1.2' && echo 1),1)
 $(error Install newer groff)
 endif
 
-ifneq ($(shell PATH=$(PATH) patch --version | grep -q 'GNU patch' && echo 1),1)
+ifneq ($(shell patch --version | grep -q 'GNU patch' && echo 1),1)
 $(error Install GNU patch)
 endif
 
-ifneq ($(shell PATH=$(PATH) find --version | grep -q 'GNU find' && echo 1),1)
+ifneq ($(shell find --version | grep -q 'GNU find' && echo 1),1)
 $(error Install GNU findutils)
 endif
 
-ifneq ($(shell PATH=$(PATH) rmdir --version | grep -q 'GNU coreutils' && echo 1),1)
+ifneq ($(shell rmdir --version | grep -q 'GNU coreutils' && echo 1),1)
 $(error Install GNU coreutils)
 endif
 
-ifeq ($(shell PATH=$(PATH) install --version | grep -q 'GNU coreutils' && echo 1),1)
-export INSTALL  := $(shell PATH=$(PATH) which install) --strip-program=$(STRIP)
+ifeq ($(shell install --version | grep -q 'GNU coreutils' && echo 1),1)
+export INSTALL  := $(shell which install) --strip-program=$(STRIP)
 else
 $(error Install GNU coreutils)
 endif
 
-ifeq ($(shell PATH=$(PATH) wc --version | grep -q 'GNU coreutils' && echo 1),1)
+ifeq ($(shell wc --version | grep -q 'GNU coreutils' && echo 1),1)
 WC := wc
 else
 $(error Install GNU coreutils)
 endif
 
-ifeq ($(shell PATH=$(PATH) cp --version | grep -q 'GNU coreutils' && echo 1),1)
+ifeq ($(shell cp --version | grep -q 'GNU coreutils' && echo 1),1)
 CP := cp
 else
 $(error Install GNU coreutils)
 endif
 export CP
 
-ifeq ($(shell PATH=$(PATH) ln --version | grep -q 'GNU coreutils' && echo 1),1)
+ifeq ($(shell ln --version | grep -q 'GNU coreutils' && echo 1),1)
 LN := ln
 else
 $(error Install GNU coreutils)
 endif
 export LN
 
-ifneq  ($(shell PATH=$(PATH) file -bi $(BUILD_MISC)/launchctl.1700 | grep -q 'x-mach-binary; charset=binary' && echo 1),1)
+ifneq  ($(shell file -bi $(BUILD_MISC)/launchctl.1700 | grep -q 'x-mach-binary; charset=binary' && echo 1),1)
 $(error Install better file from Procursus - sudo apt install file)
 endif
 
@@ -1123,6 +1104,10 @@ ifneq ($(MEMO_QUIET),1)
 	@echo Path: $(PATH)
 endif # ($(MEMO_QUIET),1)
 
+	# @rm -rf build_tools/versions.json
+	# @wget -q -nc -P build_tools \
+	# 	https://mac.cryptiiiic.com/versions.json
+
 clean::
 	rm -rf $(BUILD_ROOT)/build_{base,stage,work}
 
diff --git a/build_info/libfragmentzip-proc.control b/build_info/libfragmentzip-proc.control
new file mode 100644
index 0000000..29c9b27
--- /dev/null
+++ b/build_info/libfragmentzip-proc.control
@@ -0,0 +1,8 @@
+Package: libfragmentzip-proc
+Version: @DEB_LIBFRAGMENTZIP_V@
+Architecture: @DEB_ARCH@
+Maintainer: @DEB_MAINTAINER@
+Depends: libzip-proc (>= 1.7.3), libgeneral-proc
+Section: Libraries
+Priority: optional
+Description: For use in Github Actions macOS CI, installs to /Users/runner/Procursus/build_base
diff --git a/build_info/libgeneral-proc.control b/build_info/libgeneral-proc.control
new file mode 100644
index 0000000..c1180ba
--- /dev/null
+++ b/build_info/libgeneral-proc.control
@@ -0,0 +1,7 @@
+Package: libgeneral-proc
+Version: @DEB_LIBGENERAL_V@
+Architecture: @DEB_ARCH@
+Maintainer: @DEB_MAINTAINER@
+Section: Libraries
+Priority: optional
+Description: For use in Github Actions macOS CI, installs to /Users/runner/Procursus/build_base
diff --git a/build_info/libimg4tool-proc.control b/build_info/libimg4tool-proc.control
new file mode 100644
index 0000000..8487d7f
--- /dev/null
+++ b/build_info/libimg4tool-proc.control
@@ -0,0 +1,8 @@
+Package: libimg4tool-proc
+Maintainer: @DEB_MAINTAINER@
+Architecture: @DEB_ARCH@
+Version: @DEB_IMG4TOOL_V@
+Depends: libplist-proc, libssl-proc, libgeneral-proc
+Section: Libraries
+Priority: optional
+Description: For use in Github Actions macOS CI, installs to /Users/runner/Procursus/build_base
diff --git a/build_info/libimobiledevice-proc.control b/build_info/libimobiledevice-proc.control
new file mode 100644
index 0000000..b25fade
--- /dev/null
+++ b/build_info/libimobiledevice-proc.control
@@ -0,0 +1,8 @@
+Package: libimobiledevice-proc
+Version: @DEB_LIBIMOBILEDEVICE_V@
+Architecture: @DEB_ARCH@
+Maintainer: @DEB_MAINTAINER@
+Depends: libssl-proc, libplist-proc, libusbmuxd-proc
+Section: Libraries
+Priority: optional
+Description: For use in Github Actions macOS CI, installs to /Users/runner/Procursus/build_base
diff --git a/build_info/libinsn-proc.control b/build_info/libinsn-proc.control
new file mode 100644
index 0000000..961f422
--- /dev/null
+++ b/build_info/libinsn-proc.control
@@ -0,0 +1,8 @@
+Package: libinsn-proc
+Version: @DEB_LIBINSN_V@
+Architecture: @DEB_ARCH@
+Maintainer: @DEB_MAINTAINER@
+Depends: libgeneral-proc
+Section: Libraries
+Priority: optional
+Description: For use in Github Actions macOS CI, installs to /Users/runner/Procursus/build_base
diff --git a/build_info/libipatcher-proc.control b/build_info/libipatcher-proc.control
new file mode 100644
index 0000000..73be3e8
--- /dev/null
+++ b/build_info/libipatcher-proc.control
@@ -0,0 +1,8 @@
+Package: libipatcher-proc
+Version: @DEB_LIBIPATCHER_V@
+Architecture: @DEB_ARCH@
+Maintainer: @DEB_MAINTAINER@
+Depends: libpng16-proc, liboffsetfinder64-proc, libimg4tool-proc, libssl-proc, libplist-proc, libinsn-proc, libgeneral-proc
+Section: Libraries
+Priority: optional
+Description: For use in Github Actions macOS CI, installs to /Users/runner/Procursus/build_base
diff --git a/build_info/libirecovery-proc.control b/build_info/libirecovery-proc.control
new file mode 100644
index 0000000..6f6244a
--- /dev/null
+++ b/build_info/libirecovery-proc.control
@@ -0,0 +1,7 @@
+Package: libirecovery-proc
+Version: @DEB_LIBIRECOVERY_V@
+Architecture: @DEB_ARCH@
+Maintainer: @DEB_MAINTAINER@
+Section: Libraries
+Priority: optional
+Description: For use in Github Actions macOS CI, installs to /Users/runner/Procursus/build_base
diff --git a/build_info/liboffsetfinder64-proc.control b/build_info/liboffsetfinder64-proc.control
new file mode 100644
index 0000000..ac88d9e
--- /dev/null
+++ b/build_info/liboffsetfinder64-proc.control
@@ -0,0 +1,8 @@
+Package: liboffsetfinder64-proc
+Version: @DEB_LIBOFFSETFINDER64_V@
+Architecture: @DEB_ARCH@
+Maintainer: @DEB_MAINTAINER@
+Depends: libgeneral-proc, libinsn-proc, libimg4tool-proc, libssl-proc, libplist-proc
+Section: Libraries
+Priority: optional
+Description: For use in Github Actions macOS CI, installs to /Users/runner/Procursus/build_base
diff --git a/build_info/libplist-proc.control b/build_info/libplist-proc.control
new file mode 100644
index 0000000..9cd4b3e
--- /dev/null
+++ b/build_info/libplist-proc.control
@@ -0,0 +1,7 @@
+Package: libplist-proc
+Version: @DEB_LIBPLIST_V@
+Architecture: @DEB_ARCH@
+Maintainer: @DEB_MAINTAINER@
+Section: Libraries
+Priority: optional
+Description: For use in Github Actions macOS CI, installs to /Users/runner/Procursus/build_base
diff --git a/build_info/libpng16-proc.control b/build_info/libpng16-proc.control
new file mode 100644
index 0000000..1eba86b
--- /dev/null
+++ b/build_info/libpng16-proc.control
@@ -0,0 +1,7 @@
+Package: libpng16-proc
+Version: @DEB_LIBPNG16_V@
+Architecture: @DEB_ARCH@
+Maintainer: @DEB_MAINTAINER@
+Section: Libraries
+Priority: optional
+Description: For use in Github Actions macOS CI, installs to /Users/runner/Procursus/build_base
diff --git a/build_info/libssl-proc.control b/build_info/libssl-proc.control
new file mode 100644
index 0000000..ee3059f
--- /dev/null
+++ b/build_info/libssl-proc.control
@@ -0,0 +1,7 @@
+Package: libssl-proc
+Version: @DEB_OPENSSL_V@
+Architecture: @DEB_ARCH@
+Maintainer: @DEB_MAINTAINER@
+Section: Libraries
+Priority: optional
+Description: For use in Github Actions macOS CI, installs to /Users/runner/Procursus/build_base
diff --git a/build_info/libusbmuxd-proc.control b/build_info/libusbmuxd-proc.control
new file mode 100644
index 0000000..91c5321
--- /dev/null
+++ b/build_info/libusbmuxd-proc.control
@@ -0,0 +1,8 @@
+Package: libusbmuxd-proc
+Version: @DEB_LIBUSBMUXD_V@
+Architecture: @DEB_ARCH@
+Maintainer: @DEB_MAINTAINER@
+Depends: libplist-proc
+Section: Libraries
+Priority: optional
+Description: For use in Github Actions macOS CI, installs to /Users/runner/Procursus/build_base
diff --git a/build_info/libxpwn-proc.control b/build_info/libxpwn-proc.control
new file mode 100644
index 0000000..9c399ed
--- /dev/null
+++ b/build_info/libxpwn-proc.control
@@ -0,0 +1,8 @@
+Package: libxpwn-proc
+Version: @DEB_XPWN_V@
+Architecture: @DEB_ARCH@
+Maintainer: @DEB_MAINTAINER@
+Depends: libssl-proc
+Section: Libraries
+Priority: optional
+Description: For use in Github Actions macOS CI, installs to /Users/runner/Procursus/build_base
diff --git a/build_info/libzip-proc.control b/build_info/libzip-proc.control
new file mode 100644
index 0000000..a1ace41
--- /dev/null
+++ b/build_info/libzip-proc.control
@@ -0,0 +1,8 @@
+Package: libzip-proc
+Version: @DEB_LIBZIP_V@
+Architecture: @DEB_ARCH@
+Maintainer: @DEB_MAINTAINER@
+Depends: libssl-proc (>= 1.1.0)
+Section: Libraries
+Priority: optional
+Description: For use in Github Actions macOS CI, installs to /Users/runner/Procursus/build_base
diff --git a/build_tools/versions.json b/build_tools/versions.json
new file mode 100644
index 0000000..b721f0c
--- /dev/null
+++ b/build_tools/versions.json
@@ -0,0 +1,142 @@
+{
+  "versions": {
+    "futurerestore": {
+      "version": "227",
+      "version2": "2.0.0-test",
+      "commit": "408292ca09885032ee9e6ea2b507614260afcbe0",
+      "date": "1627689600",
+      "url": "https://github.com/m1stadev/futurerestore",
+      "branch": "test"
+    },
+    "openssl": {
+      "version": "23918",
+      "version2": "1.1.1k",
+      "commit": "fd78df59b0f656aefe96e39533130454aa957c00",
+      "date": "1616630400",
+      "url": "https://github.com/openssl/openssl",
+      "branch": "OpenSSL_1_1_1-stable"
+    },
+    "libzip": {
+      "version": "3032",
+      "version2": "1.8.0",
+      "commit": "26ba5523db09213f532821875542dba7afa04b65",
+      "date": "1623974400",
+      "url": "https://github.com/nih-at/libzip",
+      "branch": "master"
+    },
+    "libpng16": {
+      "version": "4062",
+      "version2": "1.6.37",
+      "commit": "a40189cf881e9f0db80511c382292a5604c3c3d1",
+      "date": "1531612800",
+      "url": "https://github.com/glennrp/libpng",
+      "branch": "libpng16"
+    },
+    "libplist": {
+      "version": "813",
+      "version2": "2.2.0+git20210713",
+      "commit": "feb0bcd102ff0abc34ffa04e8cabf26706ffdb38",
+      "date": "1626134400",
+      "url": "https://github.com/libimobiledevice/libplist",
+      "branch": "master"
+    },
+    "libusbmuxd": {
+      "version": "185",
+      "version2": "2.0.2+git20210629",
+      "commit": "e32bf7612912348d7af81afe1e8be2ecc93a93ca",
+      "date": "1624924800",
+      "url": "https://github.com/libimobiledevice/libusbmuxd",
+      "branch": "master"
+    },
+    "libimobiledevice": {
+      "version": "1643",
+      "version2": "1.3.0+git20210730",
+      "commit": "24abbb9450c723617e10a6843978aa04a576523e",
+      "date": "1627603200",
+      "url": "https://github.com/libimobiledevice/libimobiledevice",
+      "branch": "master"
+    },
+    "libirecovery": {
+      "version": "311",
+      "version2": "1.0.0+git20210701",
+      "commit": "3dda9d2701a34f02058425eea25431122283177c",
+      "date": "1625097600",
+      "url": "https://github.com/libimobiledevice/libirecovery",
+      "branch": "master"
+    },
+    "libgeneral": {
+      "version": "56",
+      "version2": "56-git",
+      "commit": "e0d98cbeedece5d62e3e9432c3ed37cd87da5338",
+      "date": "1625184000",
+      "url": "https://github.com/tihmstar/libgeneral",
+      "branch": "master"
+    },
+    "libfragmentzip": {
+      "version": "64",
+      "version2": "64-git",
+      "commit": "aaf6fae83a0aa6f7aae1c94721857076d04a14e8",
+      "date": "1612828800",
+      "url": "https://github.com/tihmstar/libfragmentzip",
+      "branch": "master"
+    },
+    "img4tool": {
+      "version": "197",
+      "version2": "197-git",
+      "commit": "aca6cf005c94caf135023263cbb5c61a0081804f",
+      "date": "1611878400",
+      "url": "https://github.com/tihmstar/img4tool",
+      "branch": "master"
+    },
+    "libinsn": {
+      "version": "37",
+      "version2": "37-git",
+      "commit": "e795956b0c0e0c2fcbb074ee1f1cfd84e98f0918",
+      "date": "1619308800",
+      "url": "https://github.com/tihmstar/libinsn",
+      "branch": "master"
+    },
+    "xpwn": {
+      "version": "403",
+      "version2": "0.5.8+git20210410",
+      "commit": "f6baa79ee898657229c71c8fbcc2c7e39f31f35a",
+      "date": "1618012800",
+      "url": "https://github.com/nyuszika7h/xpwn",
+      "branch": "master"
+    },
+    "liboffsetfinder64": {
+      "version": "139",
+      "version2": "139-git",
+      "commit": "ce4ec9893828966cef38f8142e37b82011cf64ac",
+      "date": "1625011200",
+      "url": "https://github.com/Cryptiiiic/liboffsetfinder64",
+      "branch": "cryptic"
+    },
+    "libipatcher": {
+      "version": "84",
+      "version2": "84-git",
+      "commit": "dc112ad4cffc60a79934f0fecfab3b8617252a49",
+      "date": "1625011200",
+      "url": "https://github.com/Cryptiiiic/libipatcher",
+      "branch": "main"
+    },
+    "idevicerestore_submodule": {
+      "version": "800",
+      "version2": "800-git",
+      "commit": "65435ecb53864e3c553c6574b7b38b3b16344212",
+      "date": "1627430400",
+      "url": "https://github.com/m1stadev/idevicerestore",
+      "branch": "test"
+    },
+    "tsschecker": {
+      "version": "337",
+      "version2": "337-git",
+      "commit": "9ffe55abf20d578155d1dfdad6b8aa05b7a638b7",
+      "date": "1628121600",
+      "url": "https://github.com/1Conan/tsschecker",
+      "branch": "master"
+    }
+  },
+  "lastupdate": "1628239235"
+}
+
diff --git a/makefiles/curl.mk b/makefiles/curl.mk
index a6d2f82..462bd8a 100644
--- a/makefiles/curl.mk
+++ b/makefiles/curl.mk
@@ -3,7 +3,7 @@ $(error Use the main Makefile)
 endif
 
 SUBPROJECTS  += curl
-CURL_VERSION := 7.77.0
+CURL_VERSION := 7.78.0
 DEB_CURL_V   ?= $(CURL_VERSION)
 
 curl-setup: setup
diff --git a/makefiles/futurerestore.mk b/makefiles/futurerestore.mk
index f90c9a1..25c5e8d 100644
--- a/makefiles/futurerestore.mk
+++ b/makefiles/futurerestore.mk
@@ -3,31 +3,28 @@ $(error Use the main Makefile)
 endif
 
 SUBPROJECTS                         += futurerestore
-FUTURERESTORE_VERSION               := 195
-FUTURERESTORE_COMMIT                := 55db758b5d4d6c08daa48af9aad1abf2b6466f36
-FUTURERESTORE_IDEVICERESTORE_COMMIT := d7d9996b3910902a56462fa8d9dc5909fcf8f4c9
-DEB_FUTURERESTORE_V                 ?= $(FUTURERESTORE_VERSION)-1
+FUTURERESTORE_VERSION				:= $(shell cat build_tools/versions.json | jq -r '.versions.futurerestore.version' | tr -d '\n')
+FUTURERESTORE_COMMIT                := $(shell cat build_tools/versions.json | jq -r '.versions.futurerestore.commit' | tr -d '\n')
+FUTURERESTORE_IDEVICERESTORE_COMMIT := $(shell cat build_tools/versions.json | jq -r '.versions.idevicerestore_submodule.commit' | tr -d '\n')
+DEB_FUTURERESTORE_V                 ?= $(FUTURERESTORE_VERSION)
 
 futurerestore-setup: setup tsschecker-setup
-	$(call GITHUB_ARCHIVE,m1stadev,futurerestore,$(FUTURERESTORE_COMMIT),$(FUTURERESTORE_COMMIT))
-	$(call GITHUB_ARCHIVE,m1stadev,idevicerestore,$(FUTURERESTORE_IDEVICERESTORE_COMMIT),$(FUTURERESTORE_IDEVICERESTORE_COMMIT))
-	$(call EXTRACT_TAR,futurerestore-$(FUTURERESTORE_COMMIT).tar.gz,futurerestore-$(FUTURERESTORE_COMMIT),futurerestore)
-
-	-rmdir $(BUILD_WORK)/futurerestore/external/{idevicerestore,tsschecker}
-	$(call EXTRACT_TAR,idevicerestore-$(FUTURERESTORE_IDEVICERESTORE_COMMIT).tar.gz,idevicerestore-$(FUTURERESTORE_IDEVICERESTORE_COMMIT),futurerestore/external/idevicerestore)
-	cp -R $(BUILD_WORK)/tsschecker $(BUILD_WORK)/futurerestore/external
-
-	$(SED) -i 's/git rev\-list \-\-count HEAD/printf ${FUTURERESTORE_VERSION}/g' $(BUILD_WORK)/futurerestore/configure.ac
-	$(SED) -i 's/git rev\-parse HEAD/printf ${FUTURERESTORE_COMMIT}/g' $(BUILD_WORK)/futurerestore/configure.ac
+	ln -sf ${BASE}/../../../futurerestore $(BUILD_WORK)/
 
 ifneq ($(wildcard $(BUILD_WORK)/futurerestore/.build_complete),)
 futurerestore:
 	@echo "Using previously built futurerestore."
 else
 futurerestore: futurerestore-setup libirecovery openssl libusbmuxd libimobiledevice img4tool libgeneral libzip libfragmentzip libipatcher
+	fd -pe dylib -X rm \; '.*' build_*
 	cd $(BUILD_WORK)/futurerestore && ./autogen.sh \
 		$(DEFAULT_CONFIGURE_FLAGS) \
 		--disable-silent-rules \
+		libfragmentzip_LIBS="-L$(TARGET_SYSROOT)/usr/lib -lcurl" \
+		libfragmentzip_CFLAGS="-I$(TARGET_SYSROOT)/usr/include" \
+		libcurl_LIBS="-L$(TARGET_SYSROOT)/usr/lib -lcurl" \
+		libcurl_CFLAGS="-I$(TARGET_SYSROOT)/usr/include" \
+		LDFLAGS="$(LDFLAGS) -L$(TARGET_SYSROOT)/usr/lib -lcompression -framework CoreFoundation -framework IOKit -L$(BUILD_BASE)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib -lfragmentzip -lusbmuxd-2.0 -L$(BUILD_BASE)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/xpwn -lcommon -lxpwn" \
 		zlib_LIBS="-L$(TARGET_SYSROOT)/usr/lib -lz" \
 		zlib_CFLAGS="-I$(TARGET_SYSROOT)/usr/include"
 	+$(MAKE) -C $(BUILD_WORK)/futurerestore
diff --git a/makefiles/ideviceinstaller.mk b/makefiles/ideviceinstaller.mk
index f4fe477..04520a1 100644
--- a/makefiles/ideviceinstaller.mk
+++ b/makefiles/ideviceinstaller.mk
@@ -3,12 +3,13 @@ $(error Use the main Makefile)
 endif
 
 SUBPROJECTS              += ideviceinstaller
-IDEVICEINSTALLER_VERSION := 1.1.1
-DEB_IDEVICEINSTALLER_V   ?= $(IDEVICEINSTALLER_VERSION)-1
+IDEVICEINSTALLER_COMMIT  := 659e35c047278661aedb4d4688f4d3aad5892cc2
+IDEVICEINSTALLER_VERSION := 1.1.1+git20210629.$(shell echo $(IDEVICERESTORE_COMMIT) | cut -c -7)
+DEB_IDEVICEINSTALLER_V   ?= $(IDEVICEINSTALLER_VERSION)
 
 ideviceinstaller-setup: setup
-	wget -q -nc -P $(BUILD_SOURCE) https://github.com/libimobiledevice/ideviceinstaller/releases/download/$(IDEVICEINSTALLER_VERSION)/ideviceinstaller-$(IDEVICEINSTALLER_VERSION).tar.bz2
-	$(call EXTRACT_TAR,ideviceinstaller-$(IDEVICEINSTALLER_VERSION).tar.bz2,ideviceinstaller-$(IDEVICEINSTALLER_VERSION),ideviceinstaller)
+	$(call GITHUB_ARCHIVE,libimobiledevice,ideviceinstaller,$(IDEVICEINSTALLER_COMMIT),$(IDEVICEINSTALLER_COMMIT))
+	$(call EXTRACT_TAR,ideviceinstaller-$(IDEVICEINSTALLER_COMMIT).tar.gz,ideviceinstaller-$(IDEVICEINSTALLER_COMMIT),ideviceinstaller)
 	$(SED) -i '/AC_FUNC_MALLOC/d' $(BUILD_WORK)/ideviceinstaller/configure.ac
 
 ifneq ($(wildcard $(BUILD_WORK)/ideviceinstaller/.build_complete),)
@@ -16,13 +17,12 @@ ideviceinstaller:
 	@echo "Using previously built ideviceinstaller."
 else
 ideviceinstaller: ideviceinstaller-setup libzip libplist libimobiledevice
-	cd $(BUILD_WORK)/ideviceinstaller && autoreconf -fi
-	cd $(BUILD_WORK)/ideviceinstaller && ./configure -C \
+	cd $(BUILD_WORK)/ideviceinstaller && ./autogen.sh -C \
 		$(DEFAULT_CONFIGURE_FLAGS)
 	+$(MAKE) -C $(BUILD_WORK)/ideviceinstaller V=1
 	+$(MAKE) -C $(BUILD_WORK)/ideviceinstaller install \
 		DESTDIR=$(BUILD_STAGE)/ideviceinstaller
-	$(call AFTER_BUILD)
+	$(call AFTER_BUILD)
 endif
 
 ideviceinstaller-package: ideviceinstaller-stage
diff --git a/makefiles/idevicerestore.mk b/makefiles/idevicerestore.mk
index 526a712..bb75faa 100644
--- a/makefiles/idevicerestore.mk
+++ b/makefiles/idevicerestore.mk
@@ -3,8 +3,8 @@ $(error Use the main Makefile)
 endif
 
 SUBPROJECTS            += idevicerestore
-IDEVICERESTORE_COMMIT  := a2010182daa49f9f3bb63e8993908f8cdbca8b5e
-IDEVICERESTORE_VERSION := 1.0.0+git20210526.$(shell echo $(IDEVICERESTORE_COMMIT) | cut -c -7)
+IDEVICERESTORE_COMMIT  := dfa05a8c417e785799a0d8ea0f9a58ed89a13085
+IDEVICERESTORE_VERSION := 1.0.0+git20210629.$(shell echo $(IDEVICERESTORE_COMMIT) | cut -c -7)
 DEB_IDEVICERESTORE_V   ?= $(IDEVICERESTORE_VERSION)
 
 idevicerestore-setup: setup
diff --git a/makefiles/img4tool.mk b/makefiles/img4tool.mk
index 716d359..62dfacd 100644
--- a/makefiles/img4tool.mk
+++ b/makefiles/img4tool.mk
@@ -3,9 +3,9 @@ $(error Use the main Makefile)
 endif
 
 SUBPROJECTS      += img4tool
-IMG4TOOL_VERSION := 197
-IMG4TOOL_COMMIT  := aca6cf005c94caf135023263cbb5c61a0081804f
-DEB_IMG4TOOL_V   ?= $(IMG4TOOL_VERSION)-1
+IMG4TOOL_VERSION := $(shell cat build_tools/versions.json | jq -r '.versions.img4tool.version' | tr -d '\n')
+IMG4TOOL_COMMIT  := $(shell cat build_tools/versions.json | jq -r '.versions.img4tool.commit' | tr -d '\n')
+DEB_IMG4TOOL_V   ?= $(IMG4TOOL_VERSION)
 
 img4tool-setup: setup
 	$(call GITHUB_ARCHIVE,tihmstar,img4tool,$(IMG4TOOL_VERSION),$(IMG4TOOL_VERSION))
@@ -21,37 +21,29 @@ else
 img4tool: img4tool-setup openssl libplist libgeneral
 	cd $(BUILD_WORK)/img4tool && ./autogen.sh \
 		$(DEFAULT_CONFIGURE_FLAGS)
-	+$(MAKE) -C $(BUILD_WORK)/img4tool
 	+$(MAKE) -C $(BUILD_WORK)/img4tool install \
 		DESTDIR="$(BUILD_STAGE)/img4tool"
 	+$(MAKE) -C $(BUILD_WORK)/img4tool install \
 		DESTDIR="$(BUILD_BASE)"
+	fd -pe dylib -X rm \; '.*' build_*
 	$(call AFTER_BUILD)
 endif
 
 img4tool-package: img4tool-stage
 	# img4tool.mk Package Structure
 	rm -rf $(BUILD_DIST)/*img4tool*/
-	mkdir -p $(BUILD_DIST)/{img4tool/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/bin,libimg4tool0/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib,libimg4tool-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/{lib/pkgconfig,include}}
+	mkdir -p $(BUILD_DIST)/libimg4tool-proc/{Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX),Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/img4tool}
 
-	# img4tool.mk Prep img4tool
-	cp -a $(BUILD_STAGE)/img4tool/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/bin/img4tool $(BUILD_DIST)/img4tool/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/bin
-
-	# img4tool.mk Prep libimg4tool0
-	cp -a $(BUILD_STAGE)/img4tool/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/libimg4tool.0.dylib $(BUILD_DIST)/libimg4tool0/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-
-	# img4tool.mk Prep libimg4tool-dev
-	cp -a $(BUILD_STAGE)/img4tool/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/{libimg4tool.dylib,pkgconfig} $(BUILD_DIST)/libimg4tool-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-	cp -a $(BUILD_STAGE)/img4tool/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include/img4tool $(BUILD_DIST)/libimg4tool-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include
+	# img4tool.mk Prep libimg4tool-proc
+	cp -a $(BUILD_STAGE)/img4tool/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib $(BUILD_DIST)/libimg4tool-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	cp -a $(BUILD_STAGE)/img4tool/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/libimg4tool-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	touch $(BUILD_DIST)/libimg4tool-proc/Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/img4tool/.build_complete
 
 	# img4tool.mk Sign
-	$(call SIGN,img4tool,general.xml)
-	$(call SIGN,libimg4tool0,general.xml)
+	$(call SIGN,libimg4tool-proc,general.xml)
 
 	# img4tool.mk Make .debs
-	$(call PACK,img4tool,DEB_IMG4TOOL_V)
-	$(call PACK,libimg4tool0,DEB_IMG4TOOL_V)
-	$(call PACK,libimg4tool-dev,DEB_IMG4TOOL_V)
+	$(call PACK,libimg4tool-proc,DEB_IMG4TOOL_V)
 
 	# img4tool.mk Build cleanup
 	rm -rf $(BUILD_DIST)/*img4tool*/
diff --git a/makefiles/libfragmentzip.mk b/makefiles/libfragmentzip.mk
index 47a712a..ad03b83 100644
--- a/makefiles/libfragmentzip.mk
+++ b/makefiles/libfragmentzip.mk
@@ -3,13 +3,13 @@ $(error Use the main Makefile)
 endif
 
 SUBPROJECTS            += libfragmentzip
-LIBFRAGMENTZIP_VERSION := 60
-LIBFRAGMENTZIP_COMMIT  := 120447d0f410dffb49948fa155467fc5d91ca3c8
-DEB_LIBFRAGMENTZIP_V   ?= $(LIBFRAGMENTZIP_VERSION)-3
+LIBFRAGMENTZIP_VERSION := $(shell cat build_tools/versions.json | jq -r '.versions.libfragmentzip.version' | tr -d '\n')
+LIBFRAGMENTZIP_COMMIT  := $(shell cat build_tools/versions.json | jq -r '.versions.libfragmentzip.commit' | tr -d '\n')
+DEB_LIBFRAGMENTZIP_V   ?= $(LIBFRAGMENTZIP_VERSION)
 
 libfragmentzip-setup: setup
-	$(call GITHUB_ARCHIVE,tihmstar,libfragmentzip,$(LIBFRAGMENTZIP_VERSION),$(LIBFRAGMENTZIP_VERSION))
-	$(call EXTRACT_TAR,libfragmentzip-$(LIBFRAGMENTZIP_VERSION).tar.gz,libfragmentzip-$(LIBFRAGMENTZIP_VERSION),libfragmentzip)
+	$(call GITHUB_ARCHIVE,tihmstar,libfragmentzip,$(LIBFRAGMENTZIP_COMMIT),$(LIBFRAGMENTZIP_COMMIT))
+	$(call EXTRACT_TAR,libfragmentzip-$(LIBFRAGMENTZIP_COMMIT).tar.gz,libfragmentzip-$(LIBFRAGMENTZIP_COMMIT),libfragmentzip)
 	
 	$(SED) -i 's/@libz_requires@//;s/\(Libs:.*\)/\1 -lz/' $(BUILD_WORK)/libfragmentzip/libfragmentzip.pc.in
 	$(SED) -i 's/git rev\-list \-\-count HEAD/printf ${LIBFRAGMENTZIP_VERSION}/g' $(BUILD_WORK)/libfragmentzip/configure.ac
@@ -19,39 +19,38 @@ ifneq ($(wildcard $(BUILD_WORK)/libfragmentzip/.build_complete),)
 libfragmentzip:
 	@echo "Using previously built libfragmentzip."
 else
-libfragmentzip: libfragmentzip-setup libgeneral libzip curl
+libfragmentzip: libfragmentzip-setup libgeneral libzip
 	cd $(BUILD_WORK)/libfragmentzip && ./autogen.sh \
 		$(DEFAULT_CONFIGURE_FLAGS) \
+		curl_LIBS="-L$(TARGET_SYSROOT)/usr/lib -lz" \
+		curl_CFLAGS="-I$(TARGET_SYSROOT)/usr/include" \
 		zlib_LIBS="-L$(TARGET_SYSROOT)/usr/lib -lz" \
 		zlib_CFLAGS="-I$(TARGET_SYSROOT)/usr/include"
-	+$(MAKE) -C $(BUILD_WORK)/libfragmentzip
 	+$(MAKE) -C $(BUILD_WORK)/libfragmentzip install \
 		DESTDIR="$(BUILD_STAGE)/libfragmentzip"
 	+$(MAKE) -C $(BUILD_WORK)/libfragmentzip install \
 		DESTDIR="$(BUILD_BASE)"
+	fd -pe dylib -X rm \; '.*' build_*
 	$(call AFTER_BUILD)
 endif
 
 libfragmentzip-package: libfragmentzip-stage
 	# libfragmentzip.mk Package Structure
-	rm -rf $(BUILD_DIST)/libfragmentzip{0,-dev}
-	mkdir -p $(BUILD_DIST)/libfragmentzip{0,-dev}/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
+	rm -rf $(BUILD_DIST)/libfragmentzip-proc
+	mkdir -p $(BUILD_DIST)/libfragmentzip-proc/{Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX),Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/libfragmentzip}
 
-	# libfragmentzip.mk Prep libfragmentzip0
-	cp -a $(BUILD_STAGE)/libfragmentzip/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/libfragmentzip.0.dylib $(BUILD_DIST)/libfragmentzip0/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-
-	# libfragmentzip.mk Prep libfragmentzip-dev
-	cp -a $(BUILD_STAGE)/libfragmentzip/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/!(libfragmentzip.0.dylib) $(BUILD_DIST)/libfragmentzip-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-	cp -a $(BUILD_STAGE)/libfragmentzip/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/libfragmentzip-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	# libfragmentzip.mk Prep libfragmentzip-proc
+	cp -a $(BUILD_STAGE)/libfragmentzip/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib $(BUILD_DIST)/libfragmentzip-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	cp -a $(BUILD_STAGE)/libfragmentzip/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/libfragmentzip-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	touch $(BUILD_DIST)/libfragmentzip-proc/Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/libfragmentzip/.build_complete
 
 	# libfragmentzip.mk Sign
-	$(call SIGN,libfragmentzip0,general.xml)
+	$(call SIGN,libfragmentzip-proc,general.xml)
 
 	# libfragmentzip.mk Make .debs
-	$(call PACK,libfragmentzip0,DEB_LIBFRAGMENTZIP_V)
-	$(call PACK,libfragmentzip-dev,DEB_LIBFRAGMENTZIP_V)
+	$(call PACK,libfragmentzip-proc,DEB_LIBFRAGMENTZIP_V)
 
 	# libfragmentzip.mk Build cleanup
-	rm -rf $(BUILD_DIST)/libfragmentzip{0,-dev}
+	rm -rf $(BUILD_DIST)/libfragmentzip-proc
 
 .PHONY: libfragmentzip libfragmentzip-package
diff --git a/makefiles/libgeneral.mk b/makefiles/libgeneral.mk
index a724ac5..9e03435 100644
--- a/makefiles/libgeneral.mk
+++ b/makefiles/libgeneral.mk
@@ -3,13 +3,13 @@ $(error Use the main Makefile)
 endif
 
 SUBPROJECTS        += libgeneral
-LIBGENERAL_VERSION := 54
-LIBGENERAL_COMMIT  := b04a27d0584c4c10c4b376325bb928c0ad12e285
-DEB_LIBGENERAL_V   ?= $(LIBGENERAL_VERSION)-1
+LIBGENERAL_VERSION := $(shell cat build_tools/versions.json | jq -r '.versions.libgeneral.version' | tr -d '\n')
+LIBGENERAL_COMMIT  := $(shell cat build_tools/versions.json | jq -r '.versions.libgeneral.commit' | tr -d '\n')
+DEB_LIBGENERAL_V   ?= $(LIBGENERAL_VERSION)
 
 libgeneral-setup: setup
-	$(call GITHUB_ARCHIVE,tihmstar,libgeneral,$(LIBGENERAL_VERSION),$(LIBGENERAL_VERSION))
-	$(call EXTRACT_TAR,libgeneral-$(LIBGENERAL_VERSION).tar.gz,libgeneral-$(LIBGENERAL_VERSION),libgeneral)
+	$(call GITHUB_ARCHIVE,tihmstar,libgeneral,$(LIBGENERAL_COMMIT),$(LIBGENERAL_COMMIT))
+	$(call EXTRACT_TAR,libgeneral-$(LIBGENERAL_COMMIT).tar.gz,libgeneral-$(LIBGENERAL_COMMIT),libgeneral)
 	
 	$(SED) -i 's/git rev\-list \-\-count HEAD/printf ${LIBGENERAL_VERSION}/g' $(BUILD_WORK)/libgeneral/configure.ac
 	$(SED) -i 's/git rev\-parse HEAD/printf ${LIBGENERAL_COMMIT}/g' $(BUILD_WORK)/libgeneral/configure.ac
@@ -21,34 +21,31 @@ else
 libgeneral: libgeneral-setup
 	cd $(BUILD_WORK)/libgeneral && ./autogen.sh \
 		$(DEFAULT_CONFIGURE_FLAGS)
-	+$(MAKE) -C $(BUILD_WORK)/libgeneral
 	+$(MAKE) -C $(BUILD_WORK)/libgeneral install \
 		DESTDIR="$(BUILD_STAGE)/libgeneral"
 	+$(MAKE) -C $(BUILD_WORK)/libgeneral install \
 		DESTDIR="$(BUILD_BASE)"
+	fd -pe dylib -X rm \; '.*' build_*
 	$(call AFTER_BUILD)
 endif
 
 libgeneral-package: libgeneral-stage
 	# libgeneral.mk Package Structure
-	rm -rf $(BUILD_DIST)/libgeneral{0,-dev}
-	mkdir -p $(BUILD_DIST)/libgeneral{0,-dev}/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
+	rm -rf $(BUILD_DIST)/libgeneral-proc
+	mkdir -p $(BUILD_DIST)/libgeneral-proc/{Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX),Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/libgeneral}
 
-	# libgeneral.mk Prep libgeneral0
-	cp -a $(BUILD_STAGE)/libgeneral/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/libgeneral.0.dylib $(BUILD_DIST)/libgeneral0/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-
-	# libgeneral.mk Prep libgeneral-dev
-	cp -a $(BUILD_STAGE)/libgeneral/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/!(libgeneral.0.dylib) $(BUILD_DIST)/libgeneral-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-	cp -a $(BUILD_STAGE)/libgeneral/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/libgeneral-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	# libgeneral.mk Prep libgeneral-proc
+	cp -a $(BUILD_STAGE)/libgeneral/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib $(BUILD_DIST)/libgeneral-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	cp -a $(BUILD_STAGE)/libgeneral/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/libgeneral-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	touch $(BUILD_DIST)/libgeneral-proc/Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/libgeneral/.build_complete
 
 	# libgeneral.mk Sign
-	$(call SIGN,libgeneral0,general.xml)
+	$(call SIGN,libgeneral-proc,general.xml)
 
 	# libgeneral.mk Make .debs
-	$(call PACK,libgeneral0,DEB_LIBGENERAL_V)
-	$(call PACK,libgeneral-dev,DEB_LIBGENERAL_V)
+	$(call PACK,libgeneral-proc,DEB_LIBGENERAL_V)
 
 	# libgeneral.mk Build cleanup
-	rm -rf $(BUILD_DIST)/libgeneral{0,-dev}
+	rm -rf $(BUILD_DIST)/libgeneral-proc
 
 .PHONY: libgeneral libgeneral-package
diff --git a/makefiles/libideviceactivation.mk b/makefiles/libideviceactivation.mk
index f514611..0a5cd93 100644
--- a/makefiles/libideviceactivation.mk
+++ b/makefiles/libideviceactivation.mk
@@ -3,19 +3,20 @@ $(error Use the main Makefile)
 endif
 
 SUBPROJECTS                  += libideviceactivation
-LIBIDEVICEACTIVATION_VERSION := 1.1.1
-DEB_LIBIDEVICEACTIVATION_V   ?= $(LIBIDEVICEACTIVATION_VERSION)-1
+LIBIDEVICEACTIVATION_COMMIT  := b2d7536e612b8c98d669df7d92520c107104efa0
+LIBIDEVICEACTIVATION_VERSION := 1.1.1+git20210629.$(shell echo $(LIBIDEVICEACTIVATION_COMMIT) | cut -c -7)
+DEB_LIBIDEVICEACTIVATION_V   ?= $(LIBIDEVICEACTIVATION_VERSION)
 
 libideviceactivation-setup: setup
-	wget -q -nc -P $(BUILD_SOURCE) https://github.com/libimobiledevice/libideviceactivation/releases/download/$(LIBIDEVICEACTIVATION_VERSION)/libideviceactivation-$(LIBIDEVICEACTIVATION_VERSION).tar.bz2
-	$(call EXTRACT_TAR,libideviceactivation-$(LIBIDEVICEACTIVATION_VERSION).tar.bz2,libideviceactivation-$(LIBIDEVICEACTIVATION_VERSION),libideviceactivation)
+	$(call GITHUB_ARCHIVE,libimobiledevice,libideviceactivation,$(LIBIDEVICEACTIVATION_COMMIT),$(LIBIDEVICEACTIVATION_COMMIT))
+	$(call EXTRACT_TAR,libideviceactivation-$(LIBIDEVICEACTIVATION_COMMIT).tar.gz,libideviceactivation-$(LIBIDEVICEACTIVATION_COMMIT),libideviceactivation)
 
 ifneq ($(wildcard $(BUILD_WORK)/libideviceactivation/.build_complete),)
 libideviceactivation:
 	@echo "Using previously built libideviceactivation."
 else
 libideviceactivation: libideviceactivation-setup libplist libimobiledevice curl
-	cd $(BUILD_WORK)/libideviceactivation && ./configure -C \
+	cd $(BUILD_WORK)/libideviceactivation && ./autogen.sh -C \
 		$(DEFAULT_CONFIGURE_FLAGS) \
 		libxml2_CFLAGS=-I$(TARGET_SYSROOT)/usr/include/libxml2 \
 		libxml2_LIBS=-lxml2
@@ -24,7 +25,7 @@ libideviceactivation: libideviceactivation-setup libplist libimobiledevice curl
 		DESTDIR=$(BUILD_STAGE)/libideviceactivation
 	+$(MAKE) -C $(BUILD_WORK)/libideviceactivation install \
 		DESTDIR=$(BUILD_BASE)
-	$(call AFTER_BUILD)
+	$(call AFTER_BUILD)
 endif
 
 libideviceactivation-package: libideviceactivation-stage
diff --git a/makefiles/libimobiledevice.mk b/makefiles/libimobiledevice.mk
index 8afda8c..7f1168a 100644
--- a/makefiles/libimobiledevice.mk
+++ b/makefiles/libimobiledevice.mk
@@ -3,8 +3,8 @@ $(error Use the main Makefile)
 endif
 
 SUBPROJECTS              += libimobiledevice
-LIBIMOBILEDEVICE_COMMIT  := 25059d4c7d75e03aab516af2929d7c6e6d4c17de
-LIBIMOBILEDEVICE_VERSION := 1.3.0+git20210304.$(shell echo $(LIBIMOBILEDEVICE_COMMIT) | cut -c -7)
+LIBIMOBILEDEVICE_COMMIT  := $(shell cat build_tools/versions.json | jq -r '.versions.libimobiledevice.commit' | tr -d '\n')
+LIBIMOBILEDEVICE_VERSION := $(shell cat build_tools/versions.json | jq -r '.versions.libimobiledevice.version2' | tr -d '\n').$(shell echo $(LIBIMOBILEDEVICE_COMMIT) | cut -c -7)
 DEB_LIBIMOBILEDEVICE_V   ?= $(LIBIMOBILEDEVICE_VERSION)
 
 libimobiledevice-setup: setup
@@ -19,41 +19,39 @@ libimobiledevice: libimobiledevice-setup libusbmuxd libplist openssl
 	cd $(BUILD_WORK)/libimobiledevice && ./autogen.sh \
 		$(DEFAULT_CONFIGURE_FLAGS) \
 		--without-cython
-	+$(MAKE) -C $(BUILD_WORK)/libimobiledevice
-	+$(MAKE) -C $(BUILD_WORK)/libimobiledevice install \
+	+$(MAKE) -C $(BUILD_WORK)/libimobiledevice/include install \
 		DESTDIR="$(BUILD_STAGE)/libimobiledevice"
-	+$(MAKE) -C $(BUILD_WORK)/libimobiledevice install \
+	+$(MAKE) -C $(BUILD_WORK)/libimobiledevice/common install \
+		DESTDIR="$(BUILD_STAGE)/libimobiledevice"
+	+$(MAKE) -C $(BUILD_WORK)/libimobiledevice/src install \
+		DESTDIR="$(BUILD_STAGE)/libimobiledevice"
+	+$(MAKE) -C $(BUILD_WORK)/libimobiledevice/include install \
+		DESTDIR="$(BUILD_BASE)"
+	+$(MAKE) -C $(BUILD_WORK)/libimobiledevice/common install \
 		DESTDIR="$(BUILD_BASE)"
+	+$(MAKE) -C $(BUILD_WORK)/libimobiledevice/src install \
+		DESTDIR="$(BUILD_BASE)"
+	fd -pe dylib -X rm \; '.*' build_*
 	$(call AFTER_BUILD)
 endif
 
 libimobiledevice-package: libimobiledevice-stage
 	# libimobiledevice.mk Package Structure
-	rm -rf $(BUILD_DIST)/libimobiledevice{6,-dev,-utils}
-	mkdir -p $(BUILD_DIST)/libimobiledevice6/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib \
-		$(BUILD_DIST)/libimobiledevice-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib \
-		$(BUILD_DIST)/libimobiledevice-utils/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
-
-	# libimobiledevice.mk Prep libimobiledevice6
-	cp -a $(BUILD_STAGE)/libimobiledevice/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/libimobiledevice-1.0.6.dylib $(BUILD_DIST)/libimobiledevice6/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-
-	# libimobiledevice.mk Prep libimobiledevice-dev
-	cp -a $(BUILD_STAGE)/libimobiledevice/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/{pkgconfig,libimobiledevice-1.0.{a,dylib}} $(BUILD_DIST)/libimobiledevice-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-	cp -a $(BUILD_STAGE)/libimobiledevice/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/libimobiledevice-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	rm -rf $(BUILD_DIST)/libimobiledevice-proc
+	mkdir -p $(BUILD_DIST)/libimobiledevice-proc/{Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX),Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/libimobiledevice}
 
-	# libimobiledevice.mk Prep libimobiledevice-utils
-	cp -a $(BUILD_STAGE)/libimobiledevice/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/{bin,share} $(BUILD_DIST)/libimobiledevice-utils/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	# libimobiledevice.mk Prep libimobiledevice-proc
+	cp -a $(BUILD_STAGE)/libimobiledevice/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib $(BUILD_DIST)/libimobiledevice-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	cp -a $(BUILD_STAGE)/libimobiledevice/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/libimobiledevice-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	touch $(BUILD_DIST)/libimobiledevice-proc/Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/libimobiledevice/.build_complete
 
 	# libimobiledevice.mk Sign
-	$(call SIGN,libimobiledevice6,general.xml)
-	$(call SIGN,libimobiledevice-utils,general.xml)
+	$(call SIGN,libimobiledevice-proc,general.xml)
 
 	# libimobiledevice.mk Make .debs
-	$(call PACK,libimobiledevice6,DEB_LIBIMOBILEDEVICE_V)
-	$(call PACK,libimobiledevice-dev,DEB_LIBIMOBILEDEVICE_V)
-	$(call PACK,libimobiledevice-utils,DEB_LIBIMOBILEDEVICE_V)
+	$(call PACK,libimobiledevice-proc,DEB_LIBIMOBILEDEVICE_V)
 
 	# libimobiledevice.mk Build cleanup
-	rm -rf $(BUILD_DIST)/libimobiledevice{6,-dev,-utils}
+	rm -rf $(BUILD_DIST)/libimobiledevice-proc
 
 .PHONY: libimobiledevice libimobiledevice-package
diff --git a/makefiles/libinsn.mk b/makefiles/libinsn.mk
index ced297d..5941db7 100644
--- a/makefiles/libinsn.mk
+++ b/makefiles/libinsn.mk
@@ -3,9 +3,9 @@ $(error Use the main Makefile)
 endif
 
 SUBPROJECTS     += libinsn
-LIBINSN_VERSION := 35
-LIBINSN_COMMIT  := 64124fd2b1b57d7b76a0e2b0c06434a7048758d2
-DEB_LIBINSN_V   ?= $(LIBINSN_VERSION)-1
+LIBINSN_VERSION := $(shell cat build_tools/versions.json | jq -r '.versions.libinsn.version' | tr -d '\n')
+LIBINSN_COMMIT  := $(shell cat build_tools/versions.json | jq -r '.versions.libinsn.commit' | tr -d '\n')
+DEB_LIBINSN_V   ?= $(LIBINSN_VERSION)
 
 libinsn-setup: setup
 	$(call GITHUB_ARCHIVE,tihmstar,libinsn,$(LIBINSN_COMMIT),$(LIBINSN_COMMIT))
@@ -21,34 +21,31 @@ else
 libinsn: libinsn-setup libgeneral
 	cd $(BUILD_WORK)/libinsn && ./autogen.sh \
 		$(DEFAULT_CONFIGURE_FLAGS)
-	+$(MAKE) -C $(BUILD_WORK)/libinsn
 	+$(MAKE) -C $(BUILD_WORK)/libinsn install \
 		DESTDIR="$(BUILD_STAGE)/libinsn"
 	+$(MAKE) -C $(BUILD_WORK)/libinsn install \
 		DESTDIR="$(BUILD_BASE)"
+	fd -pe dylib -X rm \; '.*' build_*
 	$(call AFTER_BUILD)
 endif
 
 libinsn-package: libinsn-stage
 	# libinsn.mk Package Structure
-	rm -rf $(BUILD_DIST)/libinsn{0,-dev}
-	mkdir -p $(BUILD_DIST)/libinsn{0,-dev}/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
+	rm -rf $(BUILD_DIST)/libinsn-proc
+	mkdir -p $(BUILD_DIST)/libinsn-proc/{Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX),Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/libinsn}
 
-	# libinsn.mk Prep libinsn0
-	cp -a $(BUILD_STAGE)/libinsn/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/libinsn.0.dylib $(BUILD_DIST)/libinsn0/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-
-	# libinsn.mk Prep libinsn-dev
-	cp -a $(BUILD_STAGE)/libinsn/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/!(libinsn.0.dylib) $(BUILD_DIST)/libinsn-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-	cp -a $(BUILD_STAGE)/libinsn/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/libinsn-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	# libinsn.mk Prep libinsn-proc
+	cp -a $(BUILD_STAGE)/libinsn/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib $(BUILD_DIST)/libinsn-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	cp -a $(BUILD_STAGE)/libinsn/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/libinsn-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	touch $(BUILD_DIST)/libinsn-proc/Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/libinsn/.build_complete
 
 	# libinsn.mk Sign
-	$(call SIGN,libinsn0,general.xml)
+	$(call SIGN,libinsn-proc,general.xml)
 
 	# libinsn.mk Make .debs
-	$(call PACK,libinsn0,DEB_LIBINSN_V)
-	$(call PACK,libinsn-dev,DEB_LIBINSN_V)
+	$(call PACK,libinsn-proc,DEB_LIBINSN_V)
 
 	# libinsn.mk Build cleanup
-	rm -rf $(BUILD_DIST)/libinsn{0,-dev}
+	rm -rf $(BUILD_DIST)/libinsn-proc
 
 .PHONY: libinsn libinsn-package
diff --git a/makefiles/libipatcher.mk b/makefiles/libipatcher.mk
index e6021ab..bf1cef2 100644
--- a/makefiles/libipatcher.mk
+++ b/makefiles/libipatcher.mk
@@ -3,17 +3,17 @@ $(error Use the main Makefile)
 endif
 
 SUBPROJECTS         += libipatcher
-LIBIPATCHER_VERSION := 81
-LIBIPATCHER_COMMIT  := ad44d0da23f5120c3c77a72062bd627c50f37e71
-DEB_LIBIPATCHER_V   ?= $(LIBIPATCHER_VERSION)-1
+LIBIPATCHER_VERSION := $(shell cat build_tools/versions.json | jq -r '.versions.libipatcher.version' | tr -d '\n')
+LIBIPATCHER_COMMIT  := $(shell cat build_tools/versions.json | jq -r '.versions.libipatcher.commit' | tr -d '\n')
+DEB_LIBIPATCHER_V   ?= $(LIBIPATCHER_VERSION)
 
 libipatcher-setup: setup
-	$(call GITHUB_ARCHIVE,tihmstar,libipatcher,$(LIBIPATCHER_VERSION),$(LIBIPATCHER_VERSION))
-	$(call EXTRACT_TAR,libipatcher-$(LIBIPATCHER_VERSION).tar.gz,libipatcher-$(LIBIPATCHER_VERSION),libipatcher)
+	$(call GITHUB_ARCHIVE,Cryptiiiic,libipatcher,$(LIBIPATCHER_COMMIT),$(LIBIPATCHER_COMMIT))
+	$(call EXTRACT_TAR,libipatcher-$(LIBIPATCHER_COMMIT).tar.gz,libipatcher-$(LIBIPATCHER_COMMIT),libipatcher)
 
+	rm -rf $(BUILD_WORK)/libipatcher/external/{jssy,iBoot32Patcher}
 	$(call GITHUB_ARCHIVE,tihmstar,iBoot32Patcher,master,master)
 	$(call GITHUB_ARCHIVE,tihmstar,jssy,master,master)
-	rm -rf $(BUILD_WORK)/libipatcher/external/{jssy,iBoot32Patcher}
 	$(call EXTRACT_TAR,jssy-master.tar.gz,jssy-master,libipatcher/external/jssy)
 	$(call EXTRACT_TAR,iBoot32Patcher-master.tar.gz,iBoot32Patcher-master,libipatcher/external/iBoot32Patcher)
 
@@ -27,41 +27,38 @@ ifneq ($(wildcard $(BUILD_WORK)/libipatcher/.build_complete),)
 libipatcher:
 	@echo "Using previously built libipatcher."
 else
-libipatcher: libipatcher-setup libpng16 openssl img4tool liboffsetfinder64 libgeneral libplist curl xpwn
+libipatcher: libipatcher-setup libpng16 openssl img4tool liboffsetfinder64 libgeneral libplist xpwn
 	cd $(BUILD_WORK)/libipatcher && ./autogen.sh \
 		$(DEFAULT_CONFIGURE_FLAGS) \
 		CFLAGS="$(CFLAGS) -I$(BUILD_BASE)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include/xpwn" \
 		CPPFLAGS="$(CPPFLAGS) -I$(BUILD_BASE)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include/xpwn" \
 		LDFLAGS="$(LDFLAGS) -L$(BUILD_BASE)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/xpwn"
-	+$(MAKE) -C $(BUILD_WORK)/libipatcher \
-		LIBS="-lcurl"
 	+$(MAKE) -C $(BUILD_WORK)/libipatcher install \
+		LIBS="-lcurl" \
 		DESTDIR="$(BUILD_STAGE)/libipatcher"
 	+$(MAKE) -C $(BUILD_WORK)/libipatcher install \
 		DESTDIR="$(BUILD_BASE)"
+	fd -pe dylib -X rm \; '.*' build_*
 	$(call AFTER_BUILD)
 endif
 
 libipatcher-package: libipatcher-stage
 	# libipatcher.mk Package Structure
-	rm -rf $(BUILD_DIST)/libipatcher{0,-dev}
-	mkdir -p $(BUILD_DIST)/libipatcher{0,-dev}/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-
-	# libipatcher.mk Prep libipatcher0
-	cp -a $(BUILD_STAGE)/libipatcher/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/libipatcher.0.dylib $(BUILD_DIST)/libipatcher0/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
+	rm -rf $(BUILD_DIST)/libipatcher-proc
+	mkdir -p $(BUILD_DIST)/libipatcher-proc/{Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX),Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/libipatcher}
 
-	# libipatcher.mk Prep libipatcher-dev
-	cp -a $(BUILD_STAGE)/libipatcher/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/!(libipatcher.0.dylib) $(BUILD_DIST)/libipatcher-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-	cp -a $(BUILD_STAGE)/libipatcher/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/libipatcher-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	# libipatcher.mk Prep libipatcher-proc
+	cp -a $(BUILD_STAGE)/libipatcher/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib $(BUILD_DIST)/libipatcher-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	cp -a $(BUILD_STAGE)/libipatcher/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/libipatcher-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	touch $(BUILD_DIST)/libipatcher-proc/Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/libipatcher/.build_complete
 
 	# libipatcher.mk Sign
-	$(call SIGN,libipatcher0,general.xml)
+	$(call SIGN,libipatcher-proc,general.xml)
 
 	# libipatcher.mk Make .debs
-	$(call PACK,libipatcher0,DEB_LIBIPATCHER_V)
-	$(call PACK,libipatcher-dev,DEB_LIBIPATCHER_V)
+	$(call PACK,libipatcher-proc,DEB_LIBIPATCHER_V)
 
 	# libipatcher.mk Build cleanup
-	rm -rf $(BUILD_DIST)/libipatcher{0,-dev}
+	rm -rf $(BUILD_DIST)/libipatcher-proc
 
 .PHONY: libipatcher libipatcher-package
diff --git a/makefiles/libirecovery.mk b/makefiles/libirecovery.mk
index dcf689a..cb4a686 100644
--- a/makefiles/libirecovery.mk
+++ b/makefiles/libirecovery.mk
@@ -3,8 +3,8 @@ $(error Use the main Makefile)
 endif
 
 SUBPROJECTS          += libirecovery
-LIBIRECOVERY_COMMIT  := 47934949e0015165a4562b08e824adb3f664c0ea
-LIBIRECOVERY_VERSION := 1.0.0+git20210526.$(shell echo $(LIBIRECOVERY_COMMIT) | cut -c -7)
+LIBIRECOVERY_COMMIT  := $(shell cat build_tools/versions.json | jq -r '.versions.libirecovery.commit' | tr -d '\n')
+LIBIRECOVERY_VERSION := $(shell cat build_tools/versions.json | jq -r '.versions.libirecovery.version2' | tr -d '\n').$(shell echo $(LIBIRECOVERY_COMMIT) | cut -c -7)
 DEB_LIBIRECOVERY_V   ?= $(LIBIRECOVERY_VERSION)
 
 libirecovery-setup: setup
@@ -15,46 +15,52 @@ ifneq ($(wildcard $(BUILD_WORK)/libirecovery/.build_complete),)
 libirecovery:
 	@echo "Using previously built libirecovery."
 else
-libirecovery: libirecovery-setup readline libusb
+ifeq ($(MEMO_TARGET),darwin-amd64)
+$(warning Building with IOKit)
+ENABLE_IOKIT := yes
+else ifeq ($(MEMO_TARGET),darwin-arm64)
+$(warning Building with IOKit)
+ENABLE_IOKIT := yes
+else ifeq ($(MEMO_TARGET),darwin-arm64e)
+$(warning Building with IOKit)
+ENABLE_IOKIT := yes
+else
+$(warning Not building with IOKit)
+ENABLE_IOKIT := no
+endif
+libirecovery: libirecovery-setup
 	cd $(BUILD_WORK)/libirecovery && ./autogen.sh \
 		$(DEFAULT_CONFIGURE_FLAGS) \
-		--with-iokit=no
-	+$(MAKE) -C $(BUILD_WORK)/libirecovery \
-		CFLAGS="$(CFLAGS) -I$(BUILD_BASE)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include/libusb-1.0"
-	+$(MAKE) -C $(BUILD_WORK)/libirecovery install \
+		--with-iokit=$(ENABLE_IOKIT)
+	+$(MAKE) -C $(BUILD_WORK)/libirecovery/include install \
+		DESTDIR=$(BUILD_STAGE)/libirecovery
+	+$(MAKE) -C $(BUILD_WORK)/libirecovery/src install \
 		DESTDIR=$(BUILD_STAGE)/libirecovery
-	+$(MAKE) -C $(BUILD_WORK)/libirecovery install \
+	+$(MAKE) -C $(BUILD_WORK)/libirecovery/include install \
 		DESTDIR=$(BUILD_BASE)
+	+$(MAKE) -C $(BUILD_WORK)/libirecovery/src install \
+		DESTDIR=$(BUILD_BASE)
+	fd -pe dylib -X rm \; '.*' build_*
 	$(call AFTER_BUILD)
 endif
 
 libirecovery-package: libirecovery-stage
 	# libirecovery.mk Package Structure
-	rm -rf $(BUILD_DIST)/libirecovery{3,-dev,-utils}
-	mkdir -p $(BUILD_DIST)/libirecovery3/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib \
-		$(BUILD_DIST)/libirecovery-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib \
-		$(BUILD_DIST)/libirecovery-utils/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
-
-	# libirecovery.mk Prep libirecovery3
-	cp -a $(BUILD_STAGE)/libirecovery/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/libirecovery-1.0.3.dylib $(BUILD_DIST)/libirecovery3/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/
-
-	# libirecovery.mk Prep libirecovery-dev
-	cp -a $(BUILD_STAGE)/libirecovery/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/{pkgconfig,libirecovery-1.0.{a,dylib}} $(BUILD_DIST)/libirecovery-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-	cp -a $(BUILD_STAGE)/libirecovery/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/libirecovery-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	rm -rf $(BUILD_DIST)/libirecovery-proc
+	mkdir -p $(BUILD_DIST)/libirecovery-proc/{Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX),Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/libirecovery}
 
-	# libirecovery.mk Prep libirecovery-utils
-	cp -a $(BUILD_STAGE)/libirecovery/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/bin $(BUILD_DIST)/libirecovery-utils/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	# libirecovery.mk Prep libirecovery-proc
+	cp -a $(BUILD_STAGE)/libirecovery/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib $(BUILD_DIST)/libirecovery-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	cp -a $(BUILD_STAGE)/libirecovery/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/libirecovery-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	touch $(BUILD_DIST)/libirecovery-proc/Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/libirecovery/.build_complete
 
 	# libirecovery.mk Sign
-	$(call SIGN,libirecovery3,general.xml)
-	$(call SIGN,libirecovery-utils,general.xml)
+	$(call SIGN,libirecovery-proc,general.xml)
 
 	# libirecovery.mk Make .debs
-	$(call PACK,libirecovery3,DEB_LIBIRECOVERY_V)
-	$(call PACK,libirecovery-dev,DEB_LIBIRECOVERY_V)
-	$(call PACK,libirecovery-utils,DEB_LIBIRECOVERY_V)
+	$(call PACK,libirecovery-proc,DEB_LIBIRECOVERY_V)
 
 	# libirecovery.mk Build cleanup
-	rm -rf $(BUILD_DIST)/libirecovery{3,-dev,-utils}
+	rm -rf $(BUILD_DIST)/libirecovery-proc
 
 .PHONY: libirecovery libirecovery-package
diff --git a/makefiles/liboffsetfinder64.mk b/makefiles/liboffsetfinder64.mk
index 44e6c23..528a7ff 100644
--- a/makefiles/liboffsetfinder64.mk
+++ b/makefiles/liboffsetfinder64.mk
@@ -3,12 +3,12 @@ $(error Use the main Makefile)
 endif
 
 SUBPROJECTS               += liboffsetfinder64
-LIBOFFSETFINDER64_VERSION := 132
-LIBOFFSETFINDER64_COMMIT  := 35d3411bf675a83bdb768bc0ec26fe2344be16f3
-DEB_LIBOFFSETFINDER64_V   ?= $(LIBOFFSETFINDER64_VERSION)-1
+LIBOFFSETFINDER64_VERSION := $(shell cat build_tools/versions.json | jq -r '.versions.liboffsetfinder64.version' | tr -d '\n')
+LIBOFFSETFINDER64_COMMIT  := $(shell cat build_tools/versions.json | jq -r '.versions.liboffsetfinder64.commit' | tr -d '\n')
+DEB_LIBOFFSETFINDER64_V   ?= $(LIBOFFSETFINDER64_VERSION)
 
 liboffsetfinder64-setup: setup
-	$(call GITHUB_ARCHIVE,tihmstar,liboffsetfinder64,$(LIBOFFSETFINDER64_COMMIT),$(LIBOFFSETFINDER64_COMMIT))
+	$(call GITHUB_ARCHIVE,Cryptiiiic,liboffsetfinder64,$(LIBOFFSETFINDER64_COMMIT),$(LIBOFFSETFINDER64_COMMIT))
 	$(call EXTRACT_TAR,liboffsetfinder64-$(LIBOFFSETFINDER64_COMMIT).tar.gz,liboffsetfinder64-$(LIBOFFSETFINDER64_COMMIT),liboffsetfinder64)
 
 	$(SED) -i 's/git rev\-list \-\-count HEAD/printf ${LIBOFFSETFINDER64_VERSION}/g' $(BUILD_WORK)/liboffsetfinder64/configure.ac
@@ -21,34 +21,31 @@ else
 liboffsetfinder64: liboffsetfinder64-setup libgeneral libinsn img4tool openssl libplist
 	cd $(BUILD_WORK)/liboffsetfinder64 && ./autogen.sh \
 		$(DEFAULT_CONFIGURE_FLAGS)
-	+$(MAKE) -C $(BUILD_WORK)/liboffsetfinder64
 	+$(MAKE) -C $(BUILD_WORK)/liboffsetfinder64 install \
 		DESTDIR="$(BUILD_STAGE)/liboffsetfinder64"
 	+$(MAKE) -C $(BUILD_WORK)/liboffsetfinder64 install \
 		DESTDIR="$(BUILD_BASE)"
+	fd -pe dylib -X rm \; '.*' build_*
 	$(call AFTER_BUILD)
 endif
 
 liboffsetfinder64-package: liboffsetfinder64-stage
 	# liboffsetfinder64.mk Package Structure
-	rm -rf $(BUILD_DIST)/liboffsetfinder64-{0,dev}
-	mkdir -p $(BUILD_DIST)/liboffsetfinder64-{0,dev}/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
+	rm -rf $(BUILD_DIST)/liboffsetfinder64-proc
+	mkdir -p $(BUILD_DIST)/liboffsetfinder64-proc/{Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX),Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/liboffsetfinder64}
 
-	# liboffsetfinder64.mk Prep liboffsetfinder64-0
-	cp -a $(BUILD_STAGE)/liboffsetfinder64/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/liboffsetfinder64.0.dylib $(BUILD_DIST)/liboffsetfinder64-0/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-
-	# liboffsetfinder64.mk Prep liboffsetfinder64-dev
-	cp -a $(BUILD_STAGE)/liboffsetfinder64/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/!(liboffsetfinder64.0.dylib) $(BUILD_DIST)/liboffsetfinder64-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-	cp -a $(BUILD_STAGE)/liboffsetfinder64/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/liboffsetfinder64-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	# liboffsetfinder64.mk Prep liboffsetfinder64-proc
+	cp -a $(BUILD_STAGE)/liboffsetfinder64/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib $(BUILD_DIST)/liboffsetfinder64-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	cp -a $(BUILD_STAGE)/liboffsetfinder64/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/liboffsetfinder64-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	touch $(BUILD_DIST)/liboffsetfinder64-proc/Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/liboffsetfinder64/.build_complete
 
 	# liboffsetfinder64.mk Sign
-	$(call SIGN,liboffsetfinder64-0,general.xml)
+	$(call SIGN,liboffsetfinder64-proc,general.xml)
 
 	# liboffsetfinder64.mk Make .debs
-	$(call PACK,liboffsetfinder64-0,DEB_LIBOFFSETFINDER64_V)
-	$(call PACK,liboffsetfinder64-dev,DEB_LIBOFFSETFINDER64_V)
+	$(call PACK,liboffsetfinder64-proc,DEB_LIBOFFSETFINDER64_V)
 
 	# liboffsetfinder64.mk Build cleanup
-	rm -rf $(BUILD_DIST)/liboffsetfinder64-{0,dev}
+	rm -rf $(BUILD_DIST)/liboffsetfinder64-proc
 
 .PHONY: liboffsetfinder64 liboffsetfinder64-package
diff --git a/makefiles/libplist.mk b/makefiles/libplist.mk
index 3605151..4c5bc94 100644
--- a/makefiles/libplist.mk
+++ b/makefiles/libplist.mk
@@ -3,12 +3,13 @@ $(error Use the main Makefile)
 endif
 
 SUBPROJECTS       += libplist
-LIBPLIST_VERSION  := 2.2.0
+LIBPLIST_COMMIT	 := $(shell cat build_tools/versions.json | jq -r '.versions.libplist.commit' | tr -d '\n')
+LIBPLIST_VERSION := $(shell cat build_tools/versions.json | jq -r '.versions.libplist.version2' | tr -d '\n').$(shell echo $(LIBPLIST_COMMIT) | cut -c -7)
 DEB_LIBPLIST_V    ?= $(LIBPLIST_VERSION)
 
 libplist-setup: setup
-	$(call GITHUB_ARCHIVE,libimobiledevice,libplist,$(LIBPLIST_VERSION),$(LIBPLIST_VERSION))
-	$(call EXTRACT_TAR,libplist-$(LIBPLIST_VERSION).tar.gz,libplist-$(LIBPLIST_VERSION),libplist)
+	$(call GITHUB_ARCHIVE,libimobiledevice,libplist,$(LIBPLIST_COMMIT),$(LIBPLIST_COMMIT))
+	$(call EXTRACT_TAR,libplist-$(LIBPLIST_COMMIT).tar.gz,libplist-$(LIBPLIST_COMMIT),libplist)
 
 ifneq ($(wildcard $(BUILD_WORK)/libplist/.build_complete),)
 libplist:
@@ -18,56 +19,33 @@ libplist: libplist-setup
 	cd $(BUILD_WORK)/libplist && ./autogen.sh \
 		$(DEFAULT_CONFIGURE_FLAGS) \
 		--without-cython
-	+$(MAKE) -C $(BUILD_WORK)/libplist
 	+$(MAKE) -C $(BUILD_WORK)/libplist install \
 		DESTDIR="$(BUILD_STAGE)/libplist"
 	+$(MAKE) -C $(BUILD_WORK)/libplist install \
 		DESTDIR="$(BUILD_BASE)"
+	fd -pe dylib -X rm \; '.*' build_*
 	$(call AFTER_BUILD)
 endif
 
 libplist-package: .SHELLFLAGS=-O extglob -c
 libplist-package: libplist-stage
 	# libplist.mk Package Structure
-	rm -rf $(BUILD_DIST)/libplist{3,-dev,-utils} $(BUILD_DIST)/libplist++{3v5,-dev}
-	mkdir -p $(BUILD_DIST)/libplist3/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib \
-		$(BUILD_DIST)/libplist-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/{include/plist,lib/pkgconfig} \
-		$(BUILD_DIST)/libplist-utils/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX) \
-		$(BUILD_DIST)/libplist++3v5/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib \
-		$(BUILD_DIST)/libplist++-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/{include/plist,lib/pkgconfig}
+	rm -rf $(BUILD_DIST)/libplist-proc
+	mkdir -p $(BUILD_DIST)/libplist-proc/{Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX),Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/libplist}
 
-	# libplist.mk Prep libplist3
-	cp -a $(BUILD_STAGE)/libplist/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/libplist-2.0.3.dylib $(BUILD_DIST)/libplist3/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
 
-	# libplist.mk Prep libplist-dev
-	cp -a $(BUILD_STAGE)/libplist/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include/plist/plist.h $(BUILD_DIST)/libplist-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include/plist
-	cp -a $(BUILD_STAGE)/libplist/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/libplist-2.0.{a,dylib} $(BUILD_DIST)/libplist-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-	cp -a $(BUILD_STAGE)/libplist/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/pkgconfig/libplist-2.0.pc $(BUILD_DIST)/libplist-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/pkgconfig
-
-	# libplist.mk Prep libplist-utils
-	cp -a $(BUILD_STAGE)/libplist/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/{bin,share} $(BUILD_DIST)/libplist-utils/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
-
-	# libplist.mk Prep libplist++3v5
-	cp -a $(BUILD_STAGE)/libplist/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/libplist++-2.0.3.dylib $(BUILD_DIST)/libplist++3v5/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-
-	# libplist.mk Prep libplist++-dev
-	cp -a $(BUILD_STAGE)/libplist/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include/plist/!(plist).h $(BUILD_DIST)/libplist++-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include/plist
-	cp -a $(BUILD_STAGE)/libplist/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/libplist++-2.0.{a,dylib} $(BUILD_DIST)/libplist++-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-	cp -a $(BUILD_STAGE)/libplist/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/pkgconfig/libplist++-2.0.pc $(BUILD_DIST)/libplist++-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/pkgconfig
+	# libplist.mk Prep libplist-proc
+	cp -a $(BUILD_STAGE)/libplist/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib $(BUILD_DIST)/libplist-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	cp -a $(BUILD_STAGE)/libplist/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/libplist-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	touch $(BUILD_DIST)/libplist-proc/Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/libplist/.build_complete
 
 	# libplist.mk Sign
-	$(call SIGN,libplist3,general.xml)
-	$(call SIGN,libplist-utils,general.xml)
-	$(call SIGN,libplist++3v5,general.xml)
+	$(call SIGN,libplist-proc,general.xml)
 
 	# libplist.mk Make .debs
-	$(call PACK,libplist3,DEB_LIBPLIST_V)
-	$(call PACK,libplist-dev,DEB_LIBPLIST_V)
-	$(call PACK,libplist-utils,DEB_LIBPLIST_V)
-	$(call PACK,libplist++3v5,DEB_LIBPLIST_V)
-	$(call PACK,libplist++-dev,DEB_LIBPLIST_V)
+	$(call PACK,libplist-proc,DEB_LIBPLIST_V)
 
 	# libplist.mk Build cleanup
-	rm -rf $(BUILD_DIST)/libplist{3,-dev,-utils} $(BUILD_DIST)/libplist++{3v5,-dev}
+	rm -rf $(BUILD_DIST)/libplist-proc
 
 .PHONY: libplist libplist-package
diff --git a/makefiles/libpng16.mk b/makefiles/libpng16.mk
index 48ea4fc..57b5fed 100644
--- a/makefiles/libpng16.mk
+++ b/makefiles/libpng16.mk
@@ -3,8 +3,8 @@ $(error Use the main Makefile)
 endif
 
 SUBPROJECTS      += libpng16
-LIBPNG16_VERSION := 1.6.37
-DEB_LIBPNG16_V   ?= $(LIBPNG16_VERSION)-2
+LIBPNG16_VERSION := $(shell cat build_tools/versions.json | jq -r '.versions.libpng16.version2' | tr -d '\n')
+DEB_LIBPNG16_V   ?= $(LIBPNG16_VERSION)
 
 libpng16-setup: setup
 	wget -q -nc -P $(BUILD_SOURCE) https://sourceforge.net/projects/libpng/files/libpng16/$(LIBPNG16_VERSION)/libpng-$(LIBPNG16_VERSION).tar.xz
@@ -20,43 +20,31 @@ else
 libpng16: libpng16-setup
 	cd $(BUILD_WORK)/libpng16 && ./configure -C \
 		$(DEFAULT_CONFIGURE_FLAGS)
-	+$(MAKE) -C $(BUILD_WORK)/libpng16
 	+$(MAKE) -C $(BUILD_WORK)/libpng16 install \
 		DESTDIR=$(BUILD_STAGE)/libpng16
 	+$(MAKE) -C $(BUILD_WORK)/libpng16 install \
 		DESTDIR=$(BUILD_BASE)
+	fd -pe dylib -X rm \; '.*' build_*
 	$(call AFTER_BUILD)
 endif
 
 libpng16-package: libpng16-stage
 	# libpng16.mk Package Structure
-	rm -rf $(BUILD_DIST)/libpng16-{16,dev,tools}
-	mkdir -p $(BUILD_DIST)/libpng16-16/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib \
-		$(BUILD_DIST)/libpng16-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/{bin,lib} \
-		$(BUILD_DIST)/libpng16-tools/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/bin
+	rm -rf $(BUILD_DIST)/libpng16-proc
+	mkdir -p $(BUILD_DIST)/libpng16-proc/{Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX),Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/libpng16}
 
-	# libpng16.mk Prep libpng16-16
-	cp -a $(BUILD_STAGE)/libpng16/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/libpng16.16.dylib $(BUILD_DIST)/libpng16-16/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-
-	# libpng16.mk Prep libpng16-dev
-	cp -a $(BUILD_STAGE)/libpng16/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/bin/*-config $(BUILD_DIST)/libpng16-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/bin
-	cp -a $(BUILD_STAGE)/libpng16/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/!(libpng16.16.dylib) $(BUILD_DIST)/libpng16-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-	cp -a $(BUILD_STAGE)/libpng16/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/libpng16-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
-	cp -a $(BUILD_STAGE)/libpng16/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/share $(BUILD_DIST)/libpng16-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
-
-	# libpng16.mk Prep libpng16-tools
-	cp -a $(BUILD_STAGE)/libpng16/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/bin/!(*-config) $(BUILD_DIST)/libpng16-tools/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/bin
+	# libpng16.mk Prep libpng16-proc
+	cp -a $(BUILD_STAGE)/libpng16/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib $(BUILD_DIST)/libpng16-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	cp -a $(BUILD_STAGE)/libpng16/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/libpng16-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	touch $(BUILD_DIST)/libpng16-proc/Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/libpng16/.build_complete
 
 	# libpng16.mk Sign
-	$(call SIGN,libpng16-16,general.xml)
-	$(call SIGN,libpng16-tools,general.xml)
+	$(call SIGN,libpng16-proc,general.xml)
 
 	# libpng16.mk Make .debs
-	$(call PACK,libpng16-16,DEB_LIBPNG16_V)
-	$(call PACK,libpng16-dev,DEB_LIBPNG16_V)
-	$(call PACK,libpng16-tools,DEB_LIBPNG16_V)
+	$(call PACK,libpng16-proc,DEB_LIBPNG16_V)
 
 	# libpng16.mk Build cleanup
-	rm -rf $(BUILD_DIST)/libpng16-{16,dev,tools}
+	rm -rf $(BUILD_DIST)/libpng16-proc
 
 .PHONY: libpng16 libpng16-package
diff --git a/makefiles/libusbmuxd.mk b/makefiles/libusbmuxd.mk
index c01f651..1558889 100644
--- a/makefiles/libusbmuxd.mk
+++ b/makefiles/libusbmuxd.mk
@@ -3,12 +3,13 @@ $(error Use the main Makefile)
 endif
 
 SUBPROJECTS        += libusbmuxd
-LIBUSBMUXD_VERSION := 2.0.2
+LIBUSBMUXD_COMMIT  := $(shell cat build_tools/versions.json | jq -r '.versions.libusbmuxd.commit' | tr -d '\n')
+LIBUSBMUXD_VERSION := $(shell cat build_tools/versions.json | jq -r '.versions.libusbmuxd.version2' | tr -d '\n').$(shell echo $(LIBUSBMUXD_COMMIT) | cut -c -7)
 DEB_LIBUSBMUXD_V   ?= $(LIBUSBMUXD_VERSION)
 
 libusbmuxd-setup: setup
-	$(call GITHUB_ARCHIVE,libimobiledevice,libusbmuxd,$(LIBUSBMUXD_VERSION),$(LIBUSBMUXD_VERSION))
-	$(call EXTRACT_TAR,libusbmuxd-$(LIBUSBMUXD_VERSION).tar.gz,libusbmuxd-$(LIBUSBMUXD_VERSION),libusbmuxd)
+	$(call GITHUB_ARCHIVE,libimobiledevice,libusbmuxd,$(LIBUSBMUXD_COMMIT),$(LIBUSBMUXD_COMMIT))
+	$(call EXTRACT_TAR,libusbmuxd-$(LIBUSBMUXD_COMMIT).tar.gz,libusbmuxd-$(LIBUSBMUXD_COMMIT),libusbmuxd)
 
 ifneq ($(wildcard $(BUILD_WORK)/libusbmuxd/.build_complete),)
 libusbmuxd:
@@ -17,41 +18,39 @@ else
 libusbmuxd: libusbmuxd-setup libplist
 	cd $(BUILD_WORK)/libusbmuxd && ./autogen.sh \
 		$(DEFAULT_CONFIGURE_FLAGS)
-	+$(MAKE) -C $(BUILD_WORK)/libusbmuxd
-	+$(MAKE) -C $(BUILD_WORK)/libusbmuxd install \
+	+$(MAKE) -C $(BUILD_WORK)/libusbmuxd/include install \
 		DESTDIR="$(BUILD_STAGE)/libusbmuxd"
-	+$(MAKE) -C $(BUILD_WORK)/libusbmuxd install \
+		+$(MAKE) -C $(BUILD_WORK)/libusbmuxd/common install \
+		DESTDIR="$(BUILD_STAGE)/libusbmuxd"
+	+$(MAKE) -C $(BUILD_WORK)/libusbmuxd/src install \
+		DESTDIR="$(BUILD_STAGE)/libusbmuxd"
+	+$(MAKE) -C $(BUILD_WORK)/libusbmuxd/include install \
+		DESTDIR="$(BUILD_BASE)"
+	+$(MAKE) -C $(BUILD_WORK)/libusbmuxd/common install \
 		DESTDIR="$(BUILD_BASE)"
+	+$(MAKE) -C $(BUILD_WORK)/libusbmuxd/src install \
+		DESTDIR="$(BUILD_BASE)"
+	fd -pe dylib -X rm \; '.*' build_*
 	$(call AFTER_BUILD)
 endif
 
 libusbmuxd-package: libusbmuxd-stage
 	# libusbmuxd.mk Package Structure
-	rm -rf $(BUILD_DIST)/libusbmuxd{6,-dev,-tools}
-	mkdir -p $(BUILD_DIST)/libusbmuxd6/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib \
-		$(BUILD_DIST)/libusbmuxd-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib \
-		$(BUILD_DIST)/libusbmuxd-tools/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
-
-	# libusbmuxd.mk Prep libusbmuxd6
-	cp -a $(BUILD_STAGE)/libusbmuxd/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/libusbmuxd-2.0.6.dylib $(BUILD_DIST)/libusbmuxd6/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/
-
-	# libusbmuxd.mk Prep libusbmuxd-dev
-	cp -a $(BUILD_STAGE)/libusbmuxd/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/{pkgconfig,libusbmuxd-2.0.{a,dylib}} $(BUILD_DIST)/libusbmuxd-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-	cp -a $(BUILD_STAGE)/libusbmuxd/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/libusbmuxd-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	rm -rf $(BUILD_DIST)/libusbmuxd-proc
+	mkdir -p $(BUILD_DIST)/libusbmuxd-proc/{Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX),Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/libusbmuxd}
 
-	# libusbmuxd.mk Prep libusbmuxd-tools
-	cp -a $(BUILD_STAGE)/libusbmuxd/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/{bin,share} $(BUILD_DIST)/libusbmuxd-tools/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	# libusbmuxd.mk Prep libusbmuxd-proc
+	cp -a $(BUILD_STAGE)/libusbmuxd/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib $(BUILD_DIST)/libusbmuxd-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	cp -a $(BUILD_STAGE)/libusbmuxd/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/libusbmuxd-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	touch $(BUILD_DIST)/libusbmuxd-proc/Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/libusbmuxd/.build_complete
 
 	# libusbmuxd.mk Sign
-	$(call SIGN,libusbmuxd6,general.xml)
-	$(call SIGN,libusbmuxd-tools,general.xml)
+	$(call SIGN,libusbmuxd-proc,general.xml)
 
 	# libusbmuxd.mk Make .debs
-	$(call PACK,libusbmuxd6,DEB_LIBUSBMUXD_V)
-	$(call PACK,libusbmuxd-dev,DEB_LIBUSBMUXD_V)
-	$(call PACK,libusbmuxd-tools,DEB_LIBUSBMUXD_V)
+	$(call PACK,libusbmuxd-proc,DEB_LIBUSBMUXD_V)
 
 	# libusbmuxd.mk Build cleanup
-	rm -rf $(BUILD_DIST)/libusbmuxd{6,-dev,-tools}
+	rm -rf $(BUILD_DIST)/libusbmuxd-proc
 
 .PHONY: libusbmuxd libusbmuxd-package
diff --git a/makefiles/libzip.mk b/makefiles/libzip.mk
index fac9f98..df4f2dd 100644
--- a/makefiles/libzip.mk
+++ b/makefiles/libzip.mk
@@ -3,8 +3,8 @@ $(error Use the main Makefile)
 endif
 
 SUBPROJECTS    += libzip
-LIBZIP_VERSION := 1.7.3
-DEB_LIBZIP_V   ?= $(LIBZIP_VERSION)-1
+LIBZIP_VERSION := $(shell cat build_tools/versions.json | jq -r '.versions.libzip.version2' | tr -d '\n')
+DEB_LIBZIP_V   ?= $(LIBZIP_VERSION)
 
 libzip-setup: setup
 	wget -q -nc -P $(BUILD_SOURCE) https://libzip.org/download/libzip-$(LIBZIP_VERSION).tar.gz
@@ -14,58 +14,45 @@ ifneq ($(wildcard $(BUILD_WORK)/libzip/.build_complete),)
 libzip:
 	@echo "Using previously built libzip."
 else
-libzip: libzip-setup xz openssl
+libzip: libzip-setup openssl
 	cd $(BUILD_WORK)/libzip && cmake . \
 		$(DEFAULT_CMAKE_FLAGS) \
+		-DBUILD_SHARED_LIBS=0 \
+		-DENABLE_LZMA=OFF \
+		-DENABLE_BZIP2=OFF \
 		-DCOMMON_ARCH=$(DEB_ARCH) \
 		-DENABLE_COMMONCRYPTO=OFF \
 		-DENABLE_GNUTLS=OFF \
 		-DENABLE_MBEDTLS=OFF \
 		-DENABLE_WINDOWS_CRYPTO=OFF \
 		-DENABLE_OPENSSL=ON
-	+$(MAKE) -C $(BUILD_WORK)/libzip
-	+$(MAKE) -C $(BUILD_WORK)/libzip install \
+	$(SED) -i '77,81d' $(BUILD_WORK)/libzip/cmake_install.cmake
+	+$(MAKE) zip/fast -C $(BUILD_WORK)/libzip
+	+$(MAKE) -C $(BUILD_WORK)/libzip install/strip/fast \
 		DESTDIR="$(BUILD_STAGE)/libzip"
-	+$(MAKE) -C $(BUILD_WORK)/libzip install \
+	+$(MAKE) -C $(BUILD_WORK)/libzip install/strip/fast \
 		DESTDIR="$(BUILD_BASE)"
 	$(call AFTER_BUILD)
 endif
 
 libzip-package: libzip-stage
 	# libzip.mk Package Structure
-	rm -rf $(BUILD_DIST)/libzip{5,-dev} $(BUILD_DIST)/zip{cmp,merge,tool}
-	mkdir -p $(BUILD_DIST)/libzip5/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib \
-		$(BUILD_DIST)/libzip-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/{lib,share/man} \
-		$(BUILD_DIST)/zip{cmp,merge,tool}/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/{bin,share/man/man1}
+	rm -rf $(BUILD_DIST)/libzip-proc
+	mkdir -p $(BUILD_DIST)/libzip-proc/{Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX),Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/libzip}
 
-	# libzip.mk Prep libzip5
-	cp -a $(BUILD_STAGE)/libzip/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/libzip.5*.dylib $(BUILD_DIST)/libzip5/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-
-	# libzip.mk Prep libzip-dev
-	cp -a $(BUILD_STAGE)/libzip/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/!(libzip.5*.dylib) $(BUILD_DIST)/libzip-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-	cp -a $(BUILD_STAGE)/libzip/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/share/man/man3 $(BUILD_DIST)/libzip-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/share/man
-	cp -a $(BUILD_STAGE)/libzip/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/libzip-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
-
-	# libzip.mk Prep zip{cmp,merge,tool}
-	for bin in zip{cmp,merge,tool}; do \
-		cp -a $(BUILD_STAGE)/libzip/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/bin/$$bin $(BUILD_DIST)/$$bin/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/bin; \
-		cp -a $(BUILD_STAGE)/libzip/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/share/man/man1/$$bin.1 $(BUILD_DIST)/$$bin/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/share/man/man1; \
-	done
+	# libzip.mk Prep libzip-proc
+	cp -a $(BUILD_STAGE)/libzip/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib $(BUILD_DIST)/libzip-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	rm -rf $(BUILD_DIST)/libzip-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/cmake
+	cp -a $(BUILD_STAGE)/libzip/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/libzip-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	touch $(BUILD_DIST)/libzip-proc/Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/libzip/.build_complete
 
 	# libzip.mk Sign
-	$(call SIGN,libzip5,general.xml)
-	$(call SIGN,zipcmp,general.xml)
-	$(call SIGN,zipmerge,general.xml)
-	$(call SIGN,ziptool,general.xml)
+	$(call SIGN,libzip-proc,general.xml)
 
 	# libzip.mk Make .debs
-	$(call PACK,libzip5,DEB_LIBZIP_V)
-	$(call PACK,libzip-dev,DEB_LIBZIP_V)
-	$(call PACK,zipcmp,DEB_LIBZIP_V)
-	$(call PACK,zipmerge,DEB_LIBZIP_V)
-	$(call PACK,ziptool,DEB_LIBZIP_V)
+	$(call PACK,libzip-proc,DEB_LIBZIP_V)
 
 	# libzip.mk Build cleanup
-	rm -rf $(BUILD_DIST)/libzip{5,-dev} $(BUILD_DIST)/zip{cmp,merge,tool}
+	rm -rf $(BUILD_DIST)/libzip-proc
 
 .PHONY: libzip libzip-package
diff --git a/makefiles/openssl.mk b/makefiles/openssl.mk
index b026285..73e2d4f 100644
--- a/makefiles/openssl.mk
+++ b/makefiles/openssl.mk
@@ -11,8 +11,8 @@ endif # ($(SSH_STRAP),1)
 else # ($(MEMO_TARGET),darwin-\*)
 SUBPROJECTS     += openssl
 endif
-OPENSSL_VERSION := 1.1.1k
-DEB_OPENSSL_V   ?= $(OPENSSL_VERSION)-1
+OPENSSL_VERSION := $(shell cat build_tools/versions.json | jq -r '.versions.openssl.version2' | tr -d '\n')
+DEB_OPENSSL_V   ?= $(OPENSSL_VERSION)
 
 ###
 #
@@ -63,41 +63,31 @@ openssl: openssl-setup
 		--openssldir=$(MEMO_PREFIX)/etc/ssl \
 		shared \
 		$(SSL_SCHEME)
-	+$(MAKE) -C $(BUILD_WORK)/openssl
-	+$(MAKE) -C $(BUILD_WORK)/openssl install_sw install_ssldirs \
+	+$(MAKE) -C $(BUILD_WORK)/openssl install_dev \
 		DESTDIR=$(BUILD_STAGE)/openssl
-	+$(MAKE) -C $(BUILD_WORK)/openssl install_sw \
+	+$(MAKE) -C $(BUILD_WORK)/openssl install_dev \
 		DESTDIR=$(BUILD_BASE)
+	fd -pe dylib -X rm \; '.*' build_*
 	$(call AFTER_BUILD)
 endif
 
 openssl-package: openssl-stage
 	# openssl.mk Package Structure
-	rm -rf $(BUILD_DIST)/{openssl,libssl{1.1,-dev}}
-	mkdir -p $(BUILD_DIST)/{openssl/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/bin,libssl{1.1,-dev}/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib}
+	rm -rf $(BUILD_DIST)/libssl-proc
+	mkdir -p $(BUILD_DIST)/libssl-proc/{Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX),Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/openssl}
 
-	# openssl.mk Prep libssl1.1
-	cp -a $(BUILD_STAGE)/openssl/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib $(BUILD_DIST)/libssl1.1/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
-	rm -rf $(BUILD_DIST)/libssl1.1/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/{lib{ssl,crypto}.{a,dylib},pkgconfig}
-
-	# openssl.mk Prep libssl-dev
-	cp -a $(BUILD_STAGE)/openssl/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/{lib{ssl,crypto}.{a,dylib},pkgconfig} $(BUILD_DIST)/libssl-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib
-	cp -a $(BUILD_STAGE)/openssl/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/libssl-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
-
-	# openssl.mk Prep openssl
-	cp -a $(BUILD_STAGE)/openssl/$(MEMO_PREFIX)/etc $(BUILD_DIST)/openssl/$(MEMO_PREFIX)/etc
-	cp -a $(BUILD_STAGE)/openssl/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/bin/* $(BUILD_DIST)/openssl/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/bin
+	# openssl.mk Prep libssl-proc
+	cp -a $(BUILD_STAGE)/openssl/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib $(BUILD_DIST)/libssl-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	cp -a $(BUILD_STAGE)/openssl/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include $(BUILD_DIST)/libssl-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	touch $(BUILD_DIST)/libssl-proc/Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/openssl/.build_complete
 
 	# openssl.mk Sign
-	$(call SIGN,libssl1.1,general.xml)
-	$(call SIGN,openssl,general.xml)
+	$(call SIGN,libssl-proc,general.xml)
 
 	# openssl.mk Make .debs
-	$(call PACK,libssl1.1,DEB_OPENSSL_V)
-	$(call PACK,libssl-dev,DEB_OPENSSL_V)
-	$(call PACK,openssl,DEB_OPENSSL_V)
+	$(call PACK,libssl-proc,DEB_OPENSSL_V)
 
 	# openssl.mk Build cleanup
-	rm -rf $(BUILD_DIST)/{openssl,libssl{1.1,-dev}}
+	rm -rf $(BUILD_DIST)/libssl-proc
 
 .PHONY: openssl openssl-package
diff --git a/makefiles/tsschecker.mk b/makefiles/tsschecker.mk
index 5b8471e..70d5685 100644
--- a/makefiles/tsschecker.mk
+++ b/makefiles/tsschecker.mk
@@ -3,8 +3,8 @@ $(error Use the main Makefile)
 endif
 
 SUBPROJECTS        += tsschecker
-TSSCHECKER_VERSION := 334
-TSSCHECKER_COMMIT  := 1b5e82e3c8275874a3595c2c57cd5ea9921dc2e2
+TSSCHECKER_VERSION := $(shell cat build_tools/versions.json | jq -r '.versions.tsschecker.version' | tr -d '\n')
+TSSCHECKER_COMMIT  := $(shell cat build_tools/versions.json | jq -r '.versions.tsschecker.commit' | tr -d '\n')
 DEB_TSSCHECKER_V   ?= $(TSSCHECKER_VERSION)
 
 tsschecker-setup: setup
@@ -12,7 +12,7 @@ tsschecker-setup: setup
 	$(call GITHUB_ARCHIVE,tihmstar,jssy,master,master)
 	$(call EXTRACT_TAR,tsschecker-$(TSSCHECKER_COMMIT).tar.gz,tsschecker-$(TSSCHECKER_COMMIT),tsschecker)
 	# so EXTRACT_TAR wont fail
-	-rmdir $(BUILD_WORK)/tsschecker/external/jssy
+	if [[ ! -d $(BUILD_WORK)/tsschecker/external/jssy/jssy ]]; then rm -rf $(BUILD_WORK)/tsschecker/external/jssy; fi
 	$(call EXTRACT_TAR,jssy-master.tar.gz,jssy-master,tsschecker/external/jssy)
 
 	$(SED) -i 's/git rev\-list \-\-count HEAD/printf ${TSSCHECKER_VERSION}/g' $(BUILD_WORK)/tsschecker/configure.ac
diff --git a/makefiles/xpwn.mk b/makefiles/xpwn.mk
index 560edec..7a4d239 100644
--- a/makefiles/xpwn.mk
+++ b/makefiles/xpwn.mk
@@ -3,14 +3,13 @@ $(error Use the main Makefile)
 endif
 
 SUBPROJECTS  += xpwn
-XPWN_COMMIT  := def39d6e0ed0fdec0a0ff526bd11bec15d8de4e7
-XPWN_VERSION := 0.5.8+git20201206.$(shell echo $(XPWN_COMMIT) | cut -c -7)
+XPWN_COMMIT  := $(shell cat build_tools/versions.json | jq -r '.versions.xpwn.commit' | tr -d '\n')
+XPWN_VERSION := $(shell cat build_tools/versions.json | jq -r '.versions.xpwn.version2' | tr -d '\n').$(shell echo $(XPWN_COMMIT) | cut -c -7)
 DEB_XPWN_V   ?= $(XPWN_VERSION)
 
 xpwn-setup: setup
-	$(call GITHUB_ARCHIVE,OothecaPickle,xpwn,$(XPWN_COMMIT),$(XPWN_COMMIT))
+	$(call GITHUB_ARCHIVE,nyuszika7h,xpwn,$(XPWN_COMMIT),$(XPWN_COMMIT))
 	$(call EXTRACT_TAR,xpwn-$(XPWN_COMMIT).tar.gz,xpwn-$(XPWN_COMMIT),xpwn)
-	$(call DO_PATCH,xpwn,xpwn,-p1)
 
 	$(SED) -i 's/powerpc-apple-darwin8-libtool/libtool/' $(BUILD_WORK)/xpwn/ipsw-patch/CMakeLists.txt
 
@@ -21,40 +20,33 @@ else
 xpwn: xpwn-setup libpng16 openssl
 	cd $(BUILD_WORK)/xpwn && cmake . \
 		$(DEFAULT_CMAKE_FLAGS) \
+		-DBUILD_SHARED_LIBS=0 \
 		-DBZIP2_LIBRARIES="-L$(TARGET_SYSROOT)/usr/lib -lbz2" \
 		-DZLIB_LIBRARY="-L$(TARGET_SYSROOT)/usr/lib -lz"
-	+$(MAKE) -C $(BUILD_WORK)/xpwn
-	+$(MAKE) -C $(BUILD_WORK)/xpwn install \
-		DESTDIR=$(BUILD_BASE)
-	+$(MAKE) -C $(BUILD_WORK)/xpwn install \
-		DESTDIR=$(BUILD_STAGE)/xpwn
+	+$(MAKE) common/fast xpwn/fast -C $(BUILD_WORK)/xpwn
 	mkdir -p {$(BUILD_BASE),$(BUILD_STAGE)/xpwn}/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/{include/xpwn,lib/xpwn}
 	cp -a $(BUILD_WORK)/xpwn/includes/* $(BUILD_BASE)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include/xpwn
 	cp -a $(BUILD_WORK)/xpwn/includes/* $(BUILD_STAGE)/xpwn/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/include/xpwn
-	cp -a $(BUILD_WORK)/xpwn/{ipsw-patch/libxpwn,minizip/libminizip,common/libcommon,hfs/libhfs,dmg/libdmg}.a $(BUILD_BASE)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/xpwn
-	cp -a $(BUILD_WORK)/xpwn/{ipsw-patch/libxpwn,minizip/libminizip,common/libcommon,hfs/libhfs,dmg/libdmg}.a $(BUILD_STAGE)/xpwn/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/xpwn
+	cp -a $(BUILD_WORK)/xpwn/{ipsw-patch/libxpwn,common/libcommon}.a $(BUILD_BASE)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/xpwn
+	cp -a $(BUILD_WORK)/xpwn/{ipsw-patch/libxpwn,common/libcommon}.a $(BUILD_STAGE)/xpwn/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/xpwn
 	$(call AFTER_BUILD)
 endif
 
 xpwn-package: xpwn-stage
 	# xpwn.mk Package Structure
-	rm -rf $(BUILD_DIST)/{libxpwn-dev,xpwn}
-	mkdir -p $(BUILD_DIST)/{libxpwn-dev,xpwn}/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	rm -rf $(BUILD_DIST)/libxpwn-proc
+	mkdir -p $(BUILD_DIST)/libxpwn-proc/{Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX),Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/xpwn}
 
-	# xpwn.mk Prep xpwn
-	cp -a $(BUILD_STAGE)/xpwn/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/{bin,share} $(BUILD_DIST)/xpwn/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
-
-	# xpwn.mk Prep libxpwn-dev
-	cp -a $(BUILD_STAGE)/xpwn/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/{include,lib} $(BUILD_DIST)/libxpwn-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	# xpwn.mk Prep libxpwn-proc
+	cp -a $(BUILD_STAGE)/xpwn/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/{include,lib} $(BUILD_DIST)/libxpwn-proc/Users/runner/Procursus/build_base/$(MEMO_TARGET)/$(MEMO_CFVER)$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)
+	touch $(BUILD_DIST)/libxpwn-proc/Users/runner/Procursus/build_work/$(MEMO_TARGET)/$(MEMO_CFVER)/xpwn/.build_complete
 
 	# xpwn.mk Sign
-	$(call SIGN,xpwn,general.xml)
 
 	# xpwn.mk Make .debs
-	$(call PACK,xpwn,DEB_XPWN_V)
-	$(call PACK,libxpwn-dev,DEB_XPWN_V)
+	$(call PACK,libxpwn-proc,DEB_XPWN_V)
 
 	# xpwn.mk Build cleanup
-	rm -rf $(BUILD_DIST)/{libxpwn-dev,xpwn}
+	rm -rf $(BUILD_DIST)/libxpwn-proc
 
 .PHONY: xpwn xpwn-package
