diff --git a/Puc/v4/Factory.php b/Puc/v4/Factory.php
index ac21a55..e910f31 100644
--- a/Puc/v4/Factory.php
+++ b/Puc/v4/Factory.php
@@ -1,6 +1,6 @@
 <?php
 if ( !class_exists('Puc_v4_Factory', false) ):
 
-	class Puc_v4_Factory extends Puc_v4p11_Factory { }
+	class Puc_v4_Factory extends Puc_v4p12_Factory { }
 
 endif;
diff --git a/Puc/v4p12/Autoloader.php b/Puc/v4p12/Autoloader.php
index 24aa745..f715519 100644
--- a/Puc/v4p12/Autoloader.php
+++ b/Puc/v4p12/Autoloader.php
@@ -1,8 +1,8 @@
 <?php
 
-if ( !class_exists('Puc_v4p11_Autoloader', false) ):
+if ( !class_exists('Puc_v4p12_Autoloader', false) ):
 
-	class Puc_v4p11_Autoloader {
+	class Puc_v4p12_Autoloader {
 		private $prefix = '';
 		private $rootDir = '';
 		private $libraryDir = '';
diff --git a/Puc/v4p12/DebugBar/Extension.php b/Puc/v4p12/DebugBar/Extension.php
index a39dac0..2f2e202 100644
--- a/Puc/v4p12/DebugBar/Extension.php
+++ b/Puc/v4p12/DebugBar/Extension.php
@@ -1,12 +1,12 @@
 <?php
-if ( !class_exists('Puc_v4p11_DebugBar_Extension', false) ):
+if ( !class_exists('Puc_v4p12_DebugBar_Extension', false) ):
 
-	class Puc_v4p11_DebugBar_Extension {
+	class Puc_v4p12_DebugBar_Extension {
 		const RESPONSE_BODY_LENGTH_LIMIT = 4000;
 
-		/** @var Puc_v4p11_UpdateChecker */
+		/** @var Puc_v4p12_UpdateChecker */
 		protected $updateChecker;
-		protected $panelClass = 'Puc_v4p11_DebugBar_Panel';
+		protected $panelClass = 'Puc_v4p12_DebugBar_Panel';
 
 		public function __construct($updateChecker, $panelClass = null) {
 			$this->updateChecker = $updateChecker;
@@ -163,11 +163,11 @@ private function getLibraryUrl($filePath) {
 			$absolutePath = realpath(dirname(__FILE__) . '/../../../' . ltrim($filePath, '/'));
 
 			//Where is the library located inside the WordPress directory structure?
-			$absolutePath = Puc_v4p11_Factory::normalizePath($absolutePath);
+			$absolutePath = Puc_v4p12_Factory::normalizePath($absolutePath);
 
-			$pluginDir = Puc_v4p11_Factory::normalizePath(WP_PLUGIN_DIR);
-			$muPluginDir = Puc_v4p11_Factory::normalizePath(WPMU_PLUGIN_DIR);
-			$themeDir = Puc_v4p11_Factory::normalizePath(get_theme_root());
+			$pluginDir = Puc_v4p12_Factory::normalizePath(WP_PLUGIN_DIR);
+			$muPluginDir = Puc_v4p12_Factory::normalizePath(WPMU_PLUGIN_DIR);
+			$themeDir = Puc_v4p12_Factory::normalizePath(get_theme_root());
 
 			if ( (strpos($absolutePath, $pluginDir) === 0) || (strpos($absolutePath, $muPluginDir) === 0) ) {
 				//It's part of a plugin.
diff --git a/Puc/v4p12/DebugBar/Panel.php b/Puc/v4p12/DebugBar/Panel.php
index 666cdf4..7c2b4a6 100644
--- a/Puc/v4p12/DebugBar/Panel.php
+++ b/Puc/v4p12/DebugBar/Panel.php
@@ -1,9 +1,9 @@
 <?php
 
-if ( !class_exists('Puc_v4p11_DebugBar_Panel', false) && class_exists('Debug_Bar_Panel', false) ):
+if ( !class_exists('Puc_v4p12_DebugBar_Panel', false) && class_exists('Debug_Bar_Panel', false) ):
 
-	class Puc_v4p11_DebugBar_Panel extends Debug_Bar_Panel {
-		/** @var Puc_v4p11_UpdateChecker */
+	class Puc_v4p12_DebugBar_Panel extends Debug_Bar_Panel {
+		/** @var Puc_v4p12_UpdateChecker */
 		protected $updateChecker;
 
 		private $responseBox = '<div class="puc-ajax-response" style="display: none;"></div>';
diff --git a/Puc/v4p12/DebugBar/PluginExtension.php b/Puc/v4p12/DebugBar/PluginExtension.php
index edc4a2f..6538afb 100644
--- a/Puc/v4p12/DebugBar/PluginExtension.php
+++ b/Puc/v4p12/DebugBar/PluginExtension.php
@@ -1,12 +1,12 @@
 <?php
-if ( !class_exists('Puc_v4p11_DebugBar_PluginExtension', false) ):
+if ( !class_exists('Puc_v4p12_DebugBar_PluginExtension', false) ):
 
-	class Puc_v4p11_DebugBar_PluginExtension extends Puc_v4p11_DebugBar_Extension {
-		/** @var Puc_v4p11_Plugin_UpdateChecker */
+	class Puc_v4p12_DebugBar_PluginExtension extends Puc_v4p12_DebugBar_Extension {
+		/** @var Puc_v4p12_Plugin_UpdateChecker */
 		protected $updateChecker;
 
 		public function __construct($updateChecker) {
-			parent::__construct($updateChecker, 'Puc_v4p11_DebugBar_PluginPanel');
+			parent::__construct($updateChecker, 'Puc_v4p12_DebugBar_PluginPanel');
 
 			add_action('wp_ajax_puc_v4_debug_request_info', array($this, 'ajaxRequestInfo'));
 		}
diff --git a/Puc/v4p12/DebugBar/PluginPanel.php b/Puc/v4p12/DebugBar/PluginPanel.php
index fa98600..871d65e 100644
--- a/Puc/v4p12/DebugBar/PluginPanel.php
+++ b/Puc/v4p12/DebugBar/PluginPanel.php
@@ -1,10 +1,10 @@
 <?php
 
-if ( !class_exists('Puc_v4p11_DebugBar_PluginPanel', false) ):
+if ( !class_exists('Puc_v4p12_DebugBar_PluginPanel', false) ):
 
-	class Puc_v4p11_DebugBar_PluginPanel extends Puc_v4p11_DebugBar_Panel {
+	class Puc_v4p12_DebugBar_PluginPanel extends Puc_v4p12_DebugBar_Panel {
 		/**
-		 * @var Puc_v4p11_Plugin_UpdateChecker
+		 * @var Puc_v4p12_Plugin_UpdateChecker
 		 */
 		protected $updateChecker;
 
diff --git a/Puc/v4p12/DebugBar/ThemePanel.php b/Puc/v4p12/DebugBar/ThemePanel.php
index 77f4558..012eea8 100644
--- a/Puc/v4p12/DebugBar/ThemePanel.php
+++ b/Puc/v4p12/DebugBar/ThemePanel.php
@@ -1,10 +1,10 @@
 <?php
 
-if ( !class_exists('Puc_v4p11_DebugBar_ThemePanel', false) ):
+if ( !class_exists('Puc_v4p12_DebugBar_ThemePanel', false) ):
 
-	class Puc_v4p11_DebugBar_ThemePanel extends Puc_v4p11_DebugBar_Panel {
+	class Puc_v4p12_DebugBar_ThemePanel extends Puc_v4p12_DebugBar_Panel {
 		/**
-		 * @var Puc_v4p11_Theme_UpdateChecker
+		 * @var Puc_v4p12_Theme_UpdateChecker
 		 */
 		protected $updateChecker;
 
diff --git a/Puc/v4p12/Factory.php b/Puc/v4p12/Factory.php
index c2aac5b..0651698 100644
--- a/Puc/v4p12/Factory.php
+++ b/Puc/v4p12/Factory.php
@@ -1,5 +1,5 @@
 <?php
-if ( !class_exists('Puc_v4p11_Factory', false) ):
+if ( !class_exists('Puc_v4p12_Factory', false) ):
 
 	/**
 	 * A factory that builds update checker instances.
@@ -11,7 +11,7 @@
 	 * At the moment it can only build instances of the UpdateChecker class. Other classes are
 	 * intended mainly for internal use and refer directly to specific implementations.
 	 */
-	class Puc_v4p11_Factory {
+	class Puc_v4p12_Factory {
 		protected static $classVersions = array();
 		protected static $sorted = false;
 
@@ -23,7 +23,7 @@ class Puc_v4p11_Factory {
 		 *
 		 * @param string $fullPath Full path to the main plugin file or the theme's style.css.
 		 * @param array $args Optional arguments. Keys should match the argument names of the buildUpdateChecker() method.
-		 * @return Puc_v4p11_Plugin_UpdateChecker|Puc_v4p11_Theme_UpdateChecker|Puc_v4p11_Vcs_BaseChecker
+		 * @return Puc_v4p12_Plugin_UpdateChecker|Puc_v4p12_Theme_UpdateChecker|Puc_v4p12_Vcs_BaseChecker
 		 */
 		public static function buildFromHeader($fullPath, $args = array()) {
 			$fullPath = self::normalizePath($fullPath);
@@ -54,7 +54,7 @@ public static function buildFromHeader($fullPath, $args = array()) {
 		 * This method automatically detects if you're using it for a plugin or a theme and chooses
 		 * the appropriate implementation for your update source (JSON file, GitHub, BitBucket, etc).
 		 *
-		 * @see Puc_v4p11_UpdateChecker::__construct
+		 * @see Puc_v4p12_UpdateChecker::__construct
 		 *
 		 * @param string $metadataUrl The URL of the metadata file, a GitHub repository, or another supported update source.
 		 * @param string $fullPath Full path to the main plugin file or to the theme directory.
@@ -62,7 +62,7 @@ public static function buildFromHeader($fullPath, $args = array()) {
 		 * @param int $checkPeriod How often to check for updates (in hours).
 		 * @param string $optionName Where to store book-keeping info about update checks.
 		 * @param string $muPluginFile The plugin filename relative to the mu-plugins directory.
-		 * @return Puc_v4p11_Plugin_UpdateChecker|Puc_v4p11_Theme_UpdateChecker|Puc_v4p11_Vcs_BaseChecker
+		 * @return Puc_v4p12_Plugin_UpdateChecker|Puc_v4p12_Theme_UpdateChecker|Puc_v4p12_Vcs_BaseChecker
 		 */
 		public static function buildUpdateChecker($metadataUrl, $fullPath, $slug = '', $checkPeriod = 12, $optionName = '', $muPluginFile = '') {
 			$fullPath = self::normalizePath($fullPath);
diff --git a/Puc/v4p12/InstalledPackage.php b/Puc/v4p12/InstalledPackage.php
index 920159b..c99f804 100644
--- a/Puc/v4p12/InstalledPackage.php
+++ b/Puc/v4p12/InstalledPackage.php
@@ -1,5 +1,5 @@
 <?php
-if ( !class_exists('Puc_v4p11_InstalledPackage', false) ):
+if ( !class_exists('Puc_v4p12_InstalledPackage', false) ):
 
 	/**
 	 * This class represents a currently installed plugin or theme.
@@ -7,9 +7,9 @@
 	 * Not to be confused with the "package" field in WP update API responses that contains
 	 * the download URL of a the new version.
 	 */
-	abstract class Puc_v4p11_InstalledPackage {
+	abstract class Puc_v4p12_InstalledPackage {
 		/**
-		 * @var Puc_v4p11_UpdateChecker
+		 * @var Puc_v4p12_UpdateChecker
 		 */
 		protected $updateChecker;
 
diff --git a/Puc/v4p12/Metadata.php b/Puc/v4p12/Metadata.php
index ddba071..b7fc774 100644
--- a/Puc/v4p12/Metadata.php
+++ b/Puc/v4p12/Metadata.php
@@ -1,5 +1,5 @@
 <?php
-if ( !class_exists('Puc_v4p11_Metadata', false) ):
+if ( !class_exists('Puc_v4p12_Metadata', false) ):
 
 	/**
 	 * A base container for holding information about updates and plugin metadata.
@@ -8,7 +8,7 @@
 	 * @copyright 2016
 	 * @access public
 	 */
-	abstract class Puc_v4p11_Metadata {
+	abstract class Puc_v4p12_Metadata {
 
 		/**
 		 * Create an instance of this class from a JSON document.
diff --git a/Puc/v4p12/OAuthSignature.php b/Puc/v4p12/OAuthSignature.php
index 726befa..8f5bcc8 100644
--- a/Puc/v4p12/OAuthSignature.php
+++ b/Puc/v4p12/OAuthSignature.php
@@ -1,11 +1,11 @@
 <?php
 
-if ( !class_exists('Puc_v4p11_OAuthSignature', false) ):
+if ( !class_exists('Puc_v4p12_OAuthSignature', false) ):
 
 	/**
 	 * A basic signature generator for zero-legged OAuth 1.0.
 	 */
-	class Puc_v4p11_OAuthSignature {
+	class Puc_v4p12_OAuthSignature {
 		private $consumerKey = '';
 		private $consumerSecret = '';
 
diff --git a/Puc/v4p12/Plugin/Info.php b/Puc/v4p12/Plugin/Info.php
index f797e0a..60e8a6f 100644
--- a/Puc/v4p12/Plugin/Info.php
+++ b/Puc/v4p12/Plugin/Info.php
@@ -1,5 +1,5 @@
 <?php
-if ( !class_exists('Puc_v4p11_Plugin_Info', false) ):
+if ( !class_exists('Puc_v4p12_Plugin_Info', false) ):
 
 	/**
 	 * A container class for holding and transforming various plugin metadata.
@@ -8,7 +8,7 @@
 	 * @copyright 2016
 	 * @access public
 	 */
-	class Puc_v4p11_Plugin_Info extends Puc_v4p11_Metadata {
+	class Puc_v4p12_Plugin_Info extends Puc_v4p12_Metadata {
 		//Most fields map directly to the contents of the plugin's info.json file.
 		//See the relevant docs for a description of their meaning.
 		public $name;
diff --git a/Puc/v4p12/Plugin/Package.php b/Puc/v4p12/Plugin/Package.php
index 23d8ee1..582e292 100644
--- a/Puc/v4p12/Plugin/Package.php
+++ b/Puc/v4p12/Plugin/Package.php
@@ -1,9 +1,9 @@
 <?php
-if ( !class_exists('Puc_v4p11_Plugin_Package', false) ):
+if ( !class_exists('Puc_v4p12_Plugin_Package', false) ):
 
-	class Puc_v4p11_Plugin_Package extends Puc_v4p11_InstalledPackage {
+	class Puc_v4p12_Plugin_Package extends Puc_v4p12_InstalledPackage {
 		/**
-		 * @var Puc_v4p11_Plugin_UpdateChecker
+		 * @var Puc_v4p12_Plugin_UpdateChecker
 		 */
 		protected $updateChecker;
 
@@ -170,8 +170,8 @@ public function isMuPlugin() {
 				$pluginPath  = realpath($this->pluginAbsolutePath);
 				//If realpath() fails, just normalize the syntax instead.
 				if (($muPluginDir === false) || ($pluginPath === false)) {
-					$muPluginDir = Puc_v4p11_Factory::normalizePath(WPMU_PLUGIN_DIR);
-					$pluginPath  = Puc_v4p11_Factory::normalizePath($this->pluginAbsolutePath);
+					$muPluginDir = Puc_v4p12_Factory::normalizePath(WPMU_PLUGIN_DIR);
+					$pluginPath  = Puc_v4p12_Factory::normalizePath($this->pluginAbsolutePath);
 				}
 
 				$cachedResult = (strpos($pluginPath, $muPluginDir) === 0);
diff --git a/Puc/v4p12/Plugin/Ui.php b/Puc/v4p12/Plugin/Ui.php
index 8aa4b35..ba152f3 100644
--- a/Puc/v4p12/Plugin/Ui.php
+++ b/Puc/v4p12/Plugin/Ui.php
@@ -1,14 +1,14 @@
 <?php
-if ( !class_exists('Puc_v4p11_Plugin_Ui', false) ):
+if ( !class_exists('Puc_v4p12_Plugin_Ui', false) ):
 	/**
 	 * Additional UI elements for plugins.
 	 */
-	class Puc_v4p11_Plugin_Ui {
+	class Puc_v4p12_Plugin_Ui {
 		private $updateChecker;
 		private $manualCheckErrorTransient = '';
 
 		/**
-		 * @param Puc_v4p11_Plugin_UpdateChecker $updateChecker
+		 * @param Puc_v4p12_Plugin_UpdateChecker $updateChecker
 		 */
 		public function __construct($updateChecker) {
 			$this->updateChecker = $updateChecker;
diff --git a/Puc/v4p12/Plugin/Update.php b/Puc/v4p12/Plugin/Update.php
index a5ebd4d..8a19b6f 100644
--- a/Puc/v4p12/Plugin/Update.php
+++ b/Puc/v4p12/Plugin/Update.php
@@ -1,5 +1,5 @@
 <?php
-if ( !class_exists('Puc_v4p11_Plugin_Update', false) ):
+if ( !class_exists('Puc_v4p12_Plugin_Update', false) ):
 
 	/**
 	 * A simple container class for holding information about an available update.
@@ -8,7 +8,7 @@
 	 * @copyright 2016
 	 * @access public
 	 */
-	class Puc_v4p11_Plugin_Update extends Puc_v4p11_Update {
+	class Puc_v4p12_Plugin_Update extends Puc_v4p12_Update {
 		public $id = 0;
 		public $homepage;
 		public $upgrade_notice;
@@ -25,13 +25,13 @@ class Puc_v4p11_Plugin_Update extends Puc_v4p11_Update {
 		 * Create a new instance of PluginUpdate from its JSON-encoded representation.
 		 *
 		 * @param string $json
-		 * @return Puc_v4p11_Plugin_Update|null
+		 * @return Puc_v4p12_Plugin_Update|null
 		 */
 		public static function fromJson($json){
 			//Since update-related information is simply a subset of the full plugin info,
 			//we can parse the update JSON as if it was a plugin info string, then copy over
 			//the parts that we care about.
-			$pluginInfo = Puc_v4p11_Plugin_Info::fromJson($json);
+			$pluginInfo = Puc_v4p12_Plugin_Info::fromJson($json);
 			if ( $pluginInfo !== null ) {
 				return self::fromPluginInfo($pluginInfo);
 			} else {
@@ -43,8 +43,8 @@ public static function fromJson($json){
 		 * Create a new instance of PluginUpdate based on an instance of PluginInfo.
 		 * Basically, this just copies a subset of fields from one object to another.
 		 *
-		 * @param Puc_v4p11_Plugin_Info $info
-		 * @return Puc_v4p11_Plugin_Update
+		 * @param Puc_v4p12_Plugin_Info $info
+		 * @return Puc_v4p12_Plugin_Update
 		 */
 		public static function fromPluginInfo($info){
 			return self::fromObject($info);
@@ -53,8 +53,8 @@ public static function fromPluginInfo($info){
 		/**
 		 * Create a new instance by copying the necessary fields from another object.
 		 *
-		 * @param StdClass|Puc_v4p11_Plugin_Info|Puc_v4p11_Plugin_Update $object The source object.
-		 * @return Puc_v4p11_Plugin_Update The new copy.
+		 * @param StdClass|Puc_v4p12_Plugin_Info|Puc_v4p12_Plugin_Update $object The source object.
+		 * @return Puc_v4p12_Plugin_Update The new copy.
 		 */
 		public static function fromObject($object) {
 			$update = new self();
diff --git a/Puc/v4p12/Plugin/UpdateChecker.php b/Puc/v4p12/Plugin/UpdateChecker.php
index b4b39fa..af9a2b9 100644
--- a/Puc/v4p12/Plugin/UpdateChecker.php
+++ b/Puc/v4p12/Plugin/UpdateChecker.php
@@ -1,5 +1,5 @@
 <?php
-if ( !class_exists('Puc_v4p11_Plugin_UpdateChecker', false) ):
+if ( !class_exists('Puc_v4p12_Plugin_UpdateChecker', false) ):
 
 	/**
 	 * A custom plugin update checker.
@@ -8,7 +8,7 @@
 	 * @copyright 2018
 	 * @access public
 	 */
-	class Puc_v4p11_Plugin_UpdateChecker extends Puc_v4p11_UpdateChecker {
+	class Puc_v4p12_Plugin_UpdateChecker extends Puc_v4p12_UpdateChecker {
 		protected $updateTransient = 'update_plugins';
 		protected $translationType = 'plugin';
 
@@ -17,7 +17,7 @@ class Puc_v4p11_Plugin_UpdateChecker extends Puc_v4p11_UpdateChecker {
 		public $muPluginFile = ''; //For MU plugins, the plugin filename relative to the mu-plugins directory.
 
 		/**
-		 * @var Puc_v4p11_Plugin_Package
+		 * @var Puc_v4p12_Plugin_Package
 		 */
 		protected $package;
 
@@ -68,17 +68,17 @@ public function __construct($metadataUrl, $pluginFile, $slug = '', $checkPeriod
 			//Details: https://github.com/YahnisElsts/plugin-update-checker/issues/138#issuecomment-335590964
 			add_action('uninstall_' . $this->pluginFile, array($this, 'removeHooks'));
 
-			$this->extraUi = new Puc_v4p11_Plugin_Ui($this);
+			$this->extraUi = new Puc_v4p12_Plugin_Ui($this);
 		}
 
 		/**
 		 * Create an instance of the scheduler.
 		 *
 		 * @param int $checkPeriod
-		 * @return Puc_v4p11_Scheduler
+		 * @return Puc_v4p12_Scheduler
 		 */
 		protected function createScheduler($checkPeriod) {
-			$scheduler = new Puc_v4p11_Scheduler($this, $checkPeriod, array('load-plugins.php'));
+			$scheduler = new Puc_v4p12_Scheduler($this, $checkPeriod, array('load-plugins.php'));
 			register_deactivation_hook($this->pluginFile, array($scheduler, 'removeUpdaterCron'));
 			return $scheduler;
 		}
@@ -124,13 +124,13 @@ public function removeHooks() {
 		 * @uses wp_remote_get()
 		 *
 		 * @param array $queryArgs Additional query arguments to append to the request. Optional.
-		 * @return Puc_v4p11_Plugin_Info
+		 * @return Puc_v4p12_Plugin_Info
 		 */
 		public function requestInfo($queryArgs = array()) {
-			list($pluginInfo, $result) = $this->requestMetadata('Puc_v4p11_Plugin_Info', 'request_info', $queryArgs);
+			list($pluginInfo, $result) = $this->requestMetadata('Puc_v4p12_Plugin_Info', 'request_info', $queryArgs);
 
 			if ( $pluginInfo !== null ) {
-				/** @var Puc_v4p11_Plugin_Info $pluginInfo */
+				/** @var Puc_v4p12_Plugin_Info $pluginInfo */
 				$pluginInfo->filename = $this->pluginFile;
 				$pluginInfo->slug = $this->slug;
 			}
@@ -144,7 +144,7 @@ public function requestInfo($queryArgs = array()) {
 		 *
 		 * @uses PluginUpdateChecker::requestInfo()
 		 *
-		 * @return Puc_v4p11_Update|null An instance of Plugin_Update, or NULL when no updates are available.
+		 * @return Puc_v4p12_Update|null An instance of Plugin_Update, or NULL when no updates are available.
 		 */
 		public function requestUpdate() {
 			//For the sake of simplicity, this function just calls requestInfo()
@@ -153,7 +153,7 @@ public function requestUpdate() {
 			if ( $pluginInfo === null ){
 				return null;
 			}
-			$update = Puc_v4p11_Plugin_Update::fromPluginInfo($pluginInfo);
+			$update = Puc_v4p12_Plugin_Update::fromPluginInfo($pluginInfo);
 
 			$update = $this->filterUpdateResult($update);
 
@@ -281,12 +281,12 @@ public function isBeingUpgraded($upgrader = null) {
 		 * Uses cached update data. To retrieve update information straight from
 		 * the metadata URL, call requestUpdate() instead.
 		 *
-		 * @return Puc_v4p11_Plugin_Update|null
+		 * @return Puc_v4p12_Plugin_Update|null
 		 */
 		public function getUpdate() {
 			$update = parent::getUpdate();
 			if ( isset($update) ) {
-				/** @var Puc_v4p11_Plugin_Update $update */
+				/** @var Puc_v4p12_Plugin_Update $update */
 				$update->filename = $this->pluginFile;
 			}
 			return $update;
@@ -391,20 +391,20 @@ public function addResultFilter($callback) {
 		}
 
 		protected function createDebugBarExtension() {
-			return new Puc_v4p11_DebugBar_PluginExtension($this);
+			return new Puc_v4p12_DebugBar_PluginExtension($this);
 		}
 
 		/**
 		 * Create a package instance that represents this plugin or theme.
 		 *
-		 * @return Puc_v4p11_InstalledPackage
+		 * @return Puc_v4p12_InstalledPackage
 		 */
 		protected function createInstalledPackage() {
-			return new Puc_v4p11_Plugin_Package($this->pluginAbsolutePath, $this);
+			return new Puc_v4p12_Plugin_Package($this->pluginAbsolutePath, $this);
 		}
 
 		/**
-		 * @return Puc_v4p11_Plugin_Package
+		 * @return Puc_v4p12_Plugin_Package
 		 */
 		public function getInstalledPackage() {
 			return $this->package;
diff --git a/Puc/v4p12/Scheduler.php b/Puc/v4p12/Scheduler.php
index dd3c3c3..a0b0f89 100644
--- a/Puc/v4p12/Scheduler.php
+++ b/Puc/v4p12/Scheduler.php
@@ -1,11 +1,11 @@
 <?php
-if ( !class_exists('Puc_v4p11_Scheduler', false) ):
+if ( !class_exists('Puc_v4p12_Scheduler', false) ):
 
 	/**
 	 * The scheduler decides when and how often to check for updates.
-	 * It calls @see Puc_v4p11_UpdateChecker::checkForUpdates() to perform the actual checks.
+	 * It calls @see Puc_v4p12_UpdateChecker::checkForUpdates() to perform the actual checks.
 	 */
-	class Puc_v4p11_Scheduler {
+	class Puc_v4p12_Scheduler {
 		public $checkPeriod = 12; //How often to check for updates (in hours).
 		public $throttleRedundantChecks = false; //Check less often if we already know that an update is available.
 		public $throttledCheckPeriod = 72;
@@ -13,7 +13,7 @@ class Puc_v4p11_Scheduler {
 		protected $hourlyCheckHooks = array('load-update.php');
 
 		/**
-		 * @var Puc_v4p11_UpdateChecker
+		 * @var Puc_v4p12_UpdateChecker
 		 */
 		protected $updateChecker;
 
@@ -22,7 +22,7 @@ class Puc_v4p11_Scheduler {
 		/**
 		 * Scheduler constructor.
 		 *
-		 * @param Puc_v4p11_UpdateChecker $updateChecker
+		 * @param Puc_v4p12_UpdateChecker $updateChecker
 		 * @param int $checkPeriod How often to check for updates (in hours).
 		 * @param array $hourlyHooks
 		 */
@@ -116,7 +116,7 @@ public function upgraderProcessComplete(
 
 			//Filter out notifications of upgrades that should have no bearing upon whether or not our
 			//current info is up-to-date.
-			if ( is_a($this->updateChecker, 'Puc_v4p11_Theme_UpdateChecker') ) {
+			if ( is_a($this->updateChecker, 'Puc_v4p12_Theme_UpdateChecker') ) {
 				if ( 'theme' !== $upgradeInfo['type'] || !isset($upgradeInfo['themes']) ) {
 					return;
 				}
@@ -130,7 +130,7 @@ public function upgraderProcessComplete(
 				}
 			}
 
-			if ( is_a($this->updateChecker, 'Puc_v4p11_Plugin_UpdateChecker') ) {
+			if ( is_a($this->updateChecker, 'Puc_v4p12_Plugin_UpdateChecker') ) {
 				if ( 'plugin' !== $upgradeInfo['type'] || !isset($upgradeInfo['plugins']) ) {
 					return;
 				}
diff --git a/Puc/v4p12/StateStore.php b/Puc/v4p12/StateStore.php
index 01abcc9..246c25b 100644
--- a/Puc/v4p12/StateStore.php
+++ b/Puc/v4p12/StateStore.php
@@ -1,8 +1,8 @@
 <?php
 
-if ( !class_exists('Puc_v4p11_StateStore', false) ):
+if ( !class_exists('Puc_v4p12_StateStore', false) ):
 
-	class Puc_v4p11_StateStore {
+	class Puc_v4p12_StateStore {
 		/**
 		 * @var int Last update check timestamp.
 		 */
@@ -14,7 +14,7 @@ class Puc_v4p11_StateStore {
 		protected $checkedVersion = '';
 
 		/**
-		 * @var Puc_v4p11_Update|null Cached update.
+		 * @var Puc_v4p12_Update|null Cached update.
 		 */
 		protected $update = null;
 
@@ -65,7 +65,7 @@ public function setLastCheckToNow() {
 		}
 
 		/**
-		 * @return null|Puc_v4p11_Update
+		 * @return null|Puc_v4p12_Update
 		 */
 		public function getUpdate() {
 			$this->lazyLoad();
@@ -73,10 +73,10 @@ public function getUpdate() {
 		}
 
 		/**
-		 * @param Puc_v4p11_Update|null $update
+		 * @param Puc_v4p12_Update|null $update
 		 * @return $this
 		 */
-		public function setUpdate(Puc_v4p11_Update $update = null) {
+		public function setUpdate(Puc_v4p12_Update $update = null) {
 			$this->lazyLoad();
 			$this->update = $update;
 			return $this;
@@ -138,7 +138,7 @@ public function save() {
 				$updateClass = get_class($this->update);
 				$state->updateClass = $updateClass;
 				$prefix = $this->getLibPrefix();
-				if ( Puc_v4p11_Utils::startsWith($updateClass, $prefix) ) {
+				if ( Puc_v4p12_Utils::startsWith($updateClass, $prefix) ) {
 					$state->updateBaseClass = substr($updateClass, strlen($prefix));
 				}
 			}
@@ -169,8 +169,8 @@ protected function load() {
 				return;
 			}
 
-			$this->lastCheck = intval(Puc_v4p11_Utils::get($state, 'lastCheck', 0));
-			$this->checkedVersion = Puc_v4p11_Utils::get($state, 'checkedVersion', '');
+			$this->lastCheck = intval(Puc_v4p12_Utils::get($state, 'lastCheck', 0));
+			$this->checkedVersion = Puc_v4p12_Utils::get($state, 'checkedVersion', '');
 			$this->update = null;
 
 			if ( isset($state->update) ) {
diff --git a/Puc/v4p12/Theme/Package.php b/Puc/v4p12/Theme/Package.php
index 3cfbce9..fa9d5b9 100644
--- a/Puc/v4p12/Theme/Package.php
+++ b/Puc/v4p12/Theme/Package.php
@@ -1,7 +1,7 @@
 <?php
-if ( !class_exists('Puc_v4p11_Theme_Package', false) ):
+if ( !class_exists('Puc_v4p12_Theme_Package', false) ):
 
-	class Puc_v4p11_Theme_Package extends Puc_v4p11_InstalledPackage {
+	class Puc_v4p12_Theme_Package extends Puc_v4p12_InstalledPackage {
 		/**
 		 * @var string Theme directory name.
 		 */
diff --git a/Puc/v4p12/Theme/Update.php b/Puc/v4p12/Theme/Update.php
index 9fc46f8..182b4e1 100644
--- a/Puc/v4p12/Theme/Update.php
+++ b/Puc/v4p12/Theme/Update.php
@@ -1,8 +1,8 @@
 <?php
 
-if ( !class_exists('Puc_v4p11_Theme_Update', false) ):
+if ( !class_exists('Puc_v4p12_Theme_Update', false) ):
 
-	class Puc_v4p11_Theme_Update extends Puc_v4p11_Update {
+	class Puc_v4p12_Theme_Update extends Puc_v4p12_Update {
 		public $details_url = '';
 
 		protected static $extraFields = array('details_url');
@@ -44,8 +44,8 @@ public static function fromJson($json) {
 		/**
 		 * Create a new instance by copying the necessary fields from another object.
 		 *
-		 * @param StdClass|Puc_v4p11_Theme_Update $object The source object.
-		 * @return Puc_v4p11_Theme_Update The new copy.
+		 * @param StdClass|Puc_v4p12_Theme_Update $object The source object.
+		 * @return Puc_v4p12_Theme_Update The new copy.
 		 */
 		public static function fromObject($object) {
 			$update = new self();
diff --git a/Puc/v4p12/Theme/UpdateChecker.php b/Puc/v4p12/Theme/UpdateChecker.php
index 091445e..507b900 100644
--- a/Puc/v4p12/Theme/UpdateChecker.php
+++ b/Puc/v4p12/Theme/UpdateChecker.php
@@ -1,8 +1,8 @@
 <?php
 
-if ( !class_exists('Puc_v4p11_Theme_UpdateChecker', false) ):
+if ( !class_exists('Puc_v4p12_Theme_UpdateChecker', false) ):
 
-	class Puc_v4p11_Theme_UpdateChecker extends Puc_v4p11_UpdateChecker {
+	class Puc_v4p12_Theme_UpdateChecker extends Puc_v4p12_UpdateChecker {
 		protected $filterSuffix = 'theme';
 		protected $updateTransient = 'update_themes';
 		protected $translationType = 'theme';
@@ -39,13 +39,13 @@ protected function getUpdateListKey() {
 		/**
 		 * Retrieve the latest update (if any) from the configured API endpoint.
 		 *
-		 * @return Puc_v4p11_Update|null An instance of Update, or NULL when no updates are available.
+		 * @return Puc_v4p12_Update|null An instance of Update, or NULL when no updates are available.
 		 */
 		public function requestUpdate() {
-			list($themeUpdate, $result) = $this->requestMetadata('Puc_v4p11_Theme_Update', 'request_update');
+			list($themeUpdate, $result) = $this->requestMetadata('Puc_v4p12_Theme_Update', 'request_update');
 
 			if ( $themeUpdate !== null ) {
-				/** @var Puc_v4p11_Theme_Update $themeUpdate */
+				/** @var Puc_v4p12_Theme_Update $themeUpdate */
 				$themeUpdate->slug = $this->slug;
 			}
 
@@ -71,10 +71,10 @@ public function userCanInstallUpdates() {
 		 * Create an instance of the scheduler.
 		 *
 		 * @param int $checkPeriod
-		 * @return Puc_v4p11_Scheduler
+		 * @return Puc_v4p12_Scheduler
 		 */
 		protected function createScheduler($checkPeriod) {
-			return new Puc_v4p11_Scheduler($this, $checkPeriod, array('load-themes.php'));
+			return new Puc_v4p12_Scheduler($this, $checkPeriod, array('load-themes.php'));
 		}
 
 		/**
@@ -88,7 +88,7 @@ public function isBeingUpgraded($upgrader = null) {
 		}
 
 		protected function createDebugBarExtension() {
-			return new Puc_v4p11_DebugBar_Extension($this, 'Puc_v4p11_DebugBar_ThemePanel');
+			return new Puc_v4p12_DebugBar_Extension($this, 'Puc_v4p12_DebugBar_ThemePanel');
 		}
 
 		/**
@@ -142,10 +142,10 @@ public function addResultFilter($callback) {
 		/**
 		 * Create a package instance that represents this plugin or theme.
 		 *
-		 * @return Puc_v4p11_InstalledPackage
+		 * @return Puc_v4p12_InstalledPackage
 		 */
 		protected function createInstalledPackage() {
-			return new Puc_v4p11_Theme_Package($this->stylesheet, $this);
+			return new Puc_v4p12_Theme_Package($this->stylesheet, $this);
 		}
 	}
 
diff --git a/Puc/v4p12/Update.php b/Puc/v4p12/Update.php
index 82c048a..57e3c3b 100644
--- a/Puc/v4p12/Update.php
+++ b/Puc/v4p12/Update.php
@@ -1,5 +1,5 @@
 <?php
-if ( !class_exists('Puc_v4p11_Update', false) ):
+if ( !class_exists('Puc_v4p12_Update', false) ):
 
 	/**
 	 * A simple container class for holding information about an available update.
@@ -7,7 +7,7 @@
 	 * @author Janis Elsts
 	 * @access public
 	 */
-	abstract class Puc_v4p11_Update extends Puc_v4p11_Metadata {
+	abstract class Puc_v4p12_Update extends Puc_v4p12_Metadata {
 		public $slug;
 		public $version;
 		public $download_url;
diff --git a/Puc/v4p12/UpdateChecker.php b/Puc/v4p12/UpdateChecker.php
index 56fe8f0..303263c 100644
--- a/Puc/v4p12/UpdateChecker.php
+++ b/Puc/v4p12/UpdateChecker.php
@@ -1,8 +1,8 @@
 <?php
 
-if ( !class_exists('Puc_v4p11_UpdateChecker', false) ):
+if ( !class_exists('Puc_v4p12_UpdateChecker', false) ):
 
-	abstract class Puc_v4p11_UpdateChecker {
+	abstract class Puc_v4p12_UpdateChecker {
 		protected $filterSuffix = '';
 		protected $updateTransient = '';
 		protected $translationType = ''; //"plugin" or "theme".
@@ -36,22 +36,22 @@ abstract class Puc_v4p11_UpdateChecker {
 		public $slug = '';
 
 		/**
-		 * @var Puc_v4p11_InstalledPackage
+		 * @var Puc_v4p12_InstalledPackage
 		 */
 		protected $package;
 
 		/**
-		 * @var Puc_v4p11_Scheduler
+		 * @var Puc_v4p12_Scheduler
 		 */
 		public $scheduler;
 
 		/**
-		 * @var Puc_v4p11_UpgraderStatus
+		 * @var Puc_v4p12_UpgraderStatus
 		 */
 		protected $upgraderStatus;
 
 		/**
-		 * @var Puc_v4p11_StateStore
+		 * @var Puc_v4p12_StateStore
 		 */
 		protected $updateState;
 
@@ -66,7 +66,7 @@ abstract class Puc_v4p11_UpdateChecker {
 		protected $cachedMetadataHost = 0;
 
 		/**
-		 * @var Puc_v4p11_DebugBar_Extension|null
+		 * @var Puc_v4p12_DebugBar_Extension|null
 		 */
 		protected $debugBarExtension = null;
 
@@ -89,8 +89,8 @@ public function __construct($metadataUrl, $directoryName, $slug = null, $checkPe
 
 			$this->package = $this->createInstalledPackage();
 			$this->scheduler = $this->createScheduler($checkPeriod);
-			$this->upgraderStatus = new Puc_v4p11_UpgraderStatus();
-			$this->updateState = new Puc_v4p11_StateStore($this->optionName);
+			$this->upgraderStatus = new Puc_v4p12_UpgraderStatus();
+			$this->updateState = new Puc_v4p12_StateStore($this->optionName);
 
 			if ( did_action('init') ) {
 				$this->loadTextDomain();
@@ -218,12 +218,12 @@ public function allowMetadataHost($allow, $host) {
 		/**
 		 * Create a package instance that represents this plugin or theme.
 		 *
-		 * @return Puc_v4p11_InstalledPackage
+		 * @return Puc_v4p12_InstalledPackage
 		 */
 		abstract protected function createInstalledPackage();
 
 		/**
-		 * @return Puc_v4p11_InstalledPackage
+		 * @return Puc_v4p12_InstalledPackage
 		 */
 		public function getInstalledPackage() {
 			return $this->package;
@@ -236,14 +236,14 @@ public function getInstalledPackage() {
 		 * and substitute their own scheduler.
 		 *
 		 * @param int $checkPeriod
-		 * @return Puc_v4p11_Scheduler
+		 * @return Puc_v4p12_Scheduler
 		 */
 		abstract protected function createScheduler($checkPeriod);
 
 		/**
 		 * Check for updates. The results are stored in the DB option specified in $optionName.
 		 *
-		 * @return Puc_v4p11_Update|null
+		 * @return Puc_v4p12_Update|null
 		 */
 		public function checkForUpdates() {
 			$installedVersion = $this->getInstalledVersion();
@@ -277,7 +277,7 @@ public function checkForUpdates() {
 		/**
 		 * Load the update checker state from the DB.
 		 *
-		 * @return Puc_v4p11_StateStore
+		 * @return Puc_v4p12_StateStore
 		 */
 		public function getUpdateState() {
 			return $this->updateState->lazyLoad();
@@ -302,7 +302,7 @@ public function resetUpdateState() {
 		 * Uses cached update data. To retrieve update information straight from
 		 * the metadata URL, call requestUpdate() instead.
 		 *
-		 * @return Puc_v4p11_Update|null
+		 * @return Puc_v4p12_Update|null
 		 */
 		public function getUpdate() {
 			$update = $this->updateState->getUpdate();
@@ -323,16 +323,16 @@ public function getUpdate() {
 		 *
 		 * Subclasses should run the update through filterUpdateResult before returning it.
 		 *
-		 * @return Puc_v4p11_Update An instance of Update, or NULL when no updates are available.
+		 * @return Puc_v4p12_Update An instance of Update, or NULL when no updates are available.
 		 */
 		abstract public function requestUpdate();
 
 		/**
 		 * Filter the result of a requestUpdate() call.
 		 *
-		 * @param Puc_v4p11_Update|null $update
+		 * @param Puc_v4p12_Update|null $update
 		 * @param array|WP_Error|null $httpResult The value returned by wp_remote_get(), if any.
-		 * @return Puc_v4p11_Update
+		 * @return Puc_v4p12_Update
 		 */
 		protected function filterUpdateResult($update, $httpResult = null) {
 			//Let plugins/themes modify the update.
@@ -355,9 +355,9 @@ protected function filterUpdateResult($update, $httpResult = null) {
 		 * "Compatibility: Unknown".
 		 * The function mimics how wordpress.org API crafts the "tested" field out of "Tested up to".
 		 *
-		 * @param Puc_v4p11_Metadata|null $update
+		 * @param Puc_v4p12_Metadata|null $update
 		 */
-		protected function fixSupportedWordpressVersion(Puc_v4p11_Metadata $update = null) {
+		protected function fixSupportedWordpressVersion(Puc_v4p12_Metadata $update = null) {
 			if ( !isset($update->tested) || !preg_match('/^\d++\.\d++$/', $update->tested) ) {
 				return;
 			}
@@ -638,7 +638,7 @@ protected function shouldShowUpdates() {
 		 * @param string $metaClass Parse the JSON as an instance of this class. It must have a static fromJson method.
 		 * @param string $filterRoot
 		 * @param array $queryArgs Additional query arguments.
-		 * @return array [Puc_v4p11_Metadata|null, array|WP_Error] A metadata instance and the value returned by wp_remote_get().
+		 * @return array [Puc_v4p12_Metadata|null, array|WP_Error] A metadata instance and the value returned by wp_remote_get().
 		 */
 		protected function requestMetadata($metaClass, $filterRoot, $queryArgs = array()) {
 			//Query args to append to the URL. Plugins can add their own by using a filter callback (see addQueryArgFilter()).
@@ -980,13 +980,13 @@ public function maybeInitDebugBar() {
 		}
 
 		protected function createDebugBarExtension() {
-			return new Puc_v4p11_DebugBar_Extension($this);
+			return new Puc_v4p12_DebugBar_Extension($this);
 		}
 
 		/**
 		 * Display additional configuration details in the Debug Bar panel.
 		 *
-		 * @param Puc_v4p11_DebugBar_Panel $panel
+		 * @param Puc_v4p12_DebugBar_Panel $panel
 		 */
 		public function onDisplayConfiguration($panel) {
 			//Do nothing. Subclasses can use this to add additional info to the panel.
diff --git a/Puc/v4p12/UpgraderStatus.php b/Puc/v4p12/UpgraderStatus.php
index 8c0006e..8791bd6 100644
--- a/Puc/v4p12/UpgraderStatus.php
+++ b/Puc/v4p12/UpgraderStatus.php
@@ -1,5 +1,5 @@
 <?php
-if ( !class_exists('Puc_v4p11_UpgraderStatus', false) ):
+if ( !class_exists('Puc_v4p12_UpgraderStatus', false) ):
 
 	/**
 	 * A utility class that helps figure out which plugin or theme WordPress is upgrading.
@@ -8,7 +8,7 @@
 	 * Core classes like Plugin_Upgrader don't expose the plugin file name during an in-progress update (AFAICT).
 	 * This class uses a few workarounds and heuristics to get the file name.
 	 */
-	class Puc_v4p11_UpgraderStatus {
+	class Puc_v4p12_UpgraderStatus {
 		private $currentType = null; //"plugin" or "theme".
 		private $currentId = null;   //Plugin basename or theme directory name.
 
diff --git a/Puc/v4p12/Utils.php b/Puc/v4p12/Utils.php
index 3004d31..e28f82b 100644
--- a/Puc/v4p12/Utils.php
+++ b/Puc/v4p12/Utils.php
@@ -1,8 +1,8 @@
 <?php
 
-if ( !class_exists('Puc_v4p11_Utils', false) ):
+if ( !class_exists('Puc_v4p12_Utils', false) ):
 
-	class Puc_v4p11_Utils {
+	class Puc_v4p12_Utils {
 		/**
 		 * Get a value from a nested array or object based on a path.
 		 *
diff --git a/Puc/v4p12/Vcs/Api.php b/Puc/v4p12/Vcs/Api.php
index fc31619..eebd722 100644
--- a/Puc/v4p12/Vcs/Api.php
+++ b/Puc/v4p12/Vcs/Api.php
@@ -1,7 +1,7 @@
 <?php
-if ( !class_exists('Puc_v4p11_Vcs_Api') ):
+if ( !class_exists('Puc_v4p12_Vcs_Api') ):
 
-	abstract class Puc_v4p11_Vcs_Api {
+	abstract class Puc_v4p12_Vcs_Api {
 		protected $tagNameProperty = 'name';
 		protected $slug = '';
 
@@ -27,7 +27,7 @@ abstract class Puc_v4p11_Vcs_Api {
 		protected $localDirectory = null;
 
 		/**
-		 * Puc_v4p11_Vcs_Api constructor.
+		 * Puc_v4p12_Vcs_Api constructor.
 		 *
 		 * @param string $repositoryUrl
 		 * @param array|string|null $credentials
@@ -48,7 +48,7 @@ public function getRepositoryUrl() {
 		 * Figure out which reference (i.e tag or branch) contains the latest version.
 		 *
 		 * @param string $configBranch Start looking in this branch.
-		 * @return null|Puc_v4p11_Vcs_Reference
+		 * @return null|Puc_v4p12_Vcs_Reference
 		 */
 		abstract public function chooseReference($configBranch);
 
@@ -105,7 +105,7 @@ public function getLocalReadmeName() {
 		 * Get a branch.
 		 *
 		 * @param string $branchName
-		 * @return Puc_v4p11_Vcs_Reference|null
+		 * @return Puc_v4p12_Vcs_Reference|null
 		 */
 		abstract public function getBranch($branchName);
 
@@ -113,7 +113,7 @@ abstract public function getBranch($branchName);
 		 * Get a specific tag.
 		 *
 		 * @param string $tagName
-		 * @return Puc_v4p11_Vcs_Reference|null
+		 * @return Puc_v4p12_Vcs_Reference|null
 		 */
 		abstract public function getTag($tagName);
 
@@ -121,7 +121,7 @@ abstract public function getTag($tagName);
 		 * Get the tag that looks like the highest version number.
 		 * (Implementations should skip pre-release versions if possible.)
 		 *
-		 * @return Puc_v4p11_Vcs_Reference|null
+		 * @return Puc_v4p12_Vcs_Reference|null
 		 */
 		abstract public function getLatestTag();
 
diff --git a/Puc/v4p12/Vcs/BaseChecker.php b/Puc/v4p12/Vcs/BaseChecker.php
index 8ffbae9..9bf30ee 100644
--- a/Puc/v4p12/Vcs/BaseChecker.php
+++ b/Puc/v4p12/Vcs/BaseChecker.php
@@ -1,7 +1,7 @@
 <?php
-if ( !interface_exists('Puc_v4p11_Vcs_BaseChecker', false) ):
+if ( !interface_exists('Puc_v4p12_Vcs_BaseChecker', false) ):
 
-	interface Puc_v4p11_Vcs_BaseChecker {
+	interface Puc_v4p12_Vcs_BaseChecker {
 		/**
 		 * Set the repository branch to use for updates. Defaults to 'master'.
 		 *
@@ -19,7 +19,7 @@ public function setBranch($branch);
 		public function setAuthentication($credentials);
 
 		/**
-		 * @return Puc_v4p11_Vcs_Api
+		 * @return Puc_v4p12_Vcs_Api
 		 */
 		public function getVcsApi();
 	}
diff --git a/Puc/v4p12/Vcs/BitBucketApi.php b/Puc/v4p12/Vcs/BitBucketApi.php
index dc0323a..a46209f 100644
--- a/Puc/v4p12/Vcs/BitBucketApi.php
+++ b/Puc/v4p12/Vcs/BitBucketApi.php
@@ -1,9 +1,9 @@
 <?php
-if ( !class_exists('Puc_v4p11_Vcs_BitBucketApi', false) ):
+if ( !class_exists('Puc_v4p12_Vcs_BitBucketApi', false) ):
 
-	class Puc_v4p11_Vcs_BitBucketApi extends Puc_v4p11_Vcs_Api {
+	class Puc_v4p12_Vcs_BitBucketApi extends Puc_v4p12_Vcs_Api {
 		/**
-		 * @var Puc_v4p11_OAuthSignature
+		 * @var Puc_v4p12_OAuthSignature
 		 */
 		private $oauth = null;
 
@@ -33,7 +33,7 @@ public function __construct($repositoryUrl, $credentials = array()) {
 		 * Figure out which reference (i.e tag or branch) contains the latest version.
 		 *
 		 * @param string $configBranch Start looking in this branch.
-		 * @return null|Puc_v4p11_Vcs_Reference
+		 * @return null|Puc_v4p12_Vcs_Reference
 		 */
 		public function chooseReference($configBranch) {
 			$updateSource = null;
@@ -67,7 +67,7 @@ public function getBranch($branchName) {
 				$ref = $branch->target->hash;
 			}
 
-			return new Puc_v4p11_Vcs_Reference(array(
+			return new Puc_v4p12_Vcs_Reference(array(
 				'name' => $ref,
 				'updated' => $branch->target->date,
 				'downloadUrl' => $this->getDownloadUrl($branch->name),
@@ -78,7 +78,7 @@ public function getBranch($branchName) {
 		 * Get a specific tag.
 		 *
 		 * @param string $tagName
-		 * @return Puc_v4p11_Vcs_Reference|null
+		 * @return Puc_v4p12_Vcs_Reference|null
 		 */
 		public function getTag($tagName) {
 			$tag = $this->api('/refs/tags/' . $tagName);
@@ -86,7 +86,7 @@ public function getTag($tagName) {
 				return null;
 			}
 
-			return new Puc_v4p11_Vcs_Reference(array(
+			return new Puc_v4p12_Vcs_Reference(array(
 				'name' => $tag->name,
 				'version' => ltrim($tag->name, 'v'),
 				'updated' => $tag->target->date,
@@ -97,7 +97,7 @@ public function getTag($tagName) {
 		/**
 		 * Get the tag that looks like the highest version number.
 		 *
-		 * @return Puc_v4p11_Vcs_Reference|null
+		 * @return Puc_v4p12_Vcs_Reference|null
 		 */
 		public function getLatestTag() {
 			$tags = $this->api('/refs/tags?sort=-target.date');
@@ -111,7 +111,7 @@ public function getLatestTag() {
 			//Return the first result.
 			if ( !empty($versionTags) ) {
 				$tag = $versionTags[0];
-				return new Puc_v4p11_Vcs_Reference(array(
+				return new Puc_v4p12_Vcs_Reference(array(
 					'name' => $tag->name,
 					'version' => ltrim($tag->name, 'v'),
 					'updated' => $tag->target->date,
@@ -125,7 +125,7 @@ public function getLatestTag() {
 		 * Get the tag/ref specified by the "Stable tag" header in the readme.txt of a given branch.
 		 *
 		 * @param string $branch
-		 * @return null|Puc_v4p11_Vcs_Reference
+		 * @return null|Puc_v4p12_Vcs_Reference
 		 */
 		protected function getStableTag($branch) {
 			$remoteReadme = $this->getRemoteReadme($branch);
@@ -195,7 +195,7 @@ public function getLatestCommitTime($ref) {
 		 */
 		public function api($url, $version = '2.0') {
 			$url = ltrim($url, '/');
-			$isSrcResource = Puc_v4p11_Utils::startsWith($url, 'src/');
+			$isSrcResource = Puc_v4p12_Utils::startsWith($url, 'src/');
 
 			$url = implode('/', array(
 				'https://api.bitbucket.org',
@@ -250,7 +250,7 @@ public function setAuthentication($credentials) {
 			parent::setAuthentication($credentials);
 
 			if ( !empty($credentials) && !empty($credentials['consumer_key']) ) {
-				$this->oauth = new Puc_v4p11_OAuthSignature(
+				$this->oauth = new Puc_v4p12_OAuthSignature(
 					$credentials['consumer_key'],
 					$credentials['consumer_secret']
 				);
diff --git a/Puc/v4p12/Vcs/GitHubApi.php b/Puc/v4p12/Vcs/GitHubApi.php
index 79f3c56..01eca81 100644
--- a/Puc/v4p12/Vcs/GitHubApi.php
+++ b/Puc/v4p12/Vcs/GitHubApi.php
@@ -1,8 +1,8 @@
 <?php
 
-if ( !class_exists('Puc_v4p11_Vcs_GitHubApi', false) ):
+if ( !class_exists('Puc_v4p12_Vcs_GitHubApi', false) ):
 
-	class Puc_v4p11_Vcs_GitHubApi extends Puc_v4p11_Vcs_Api {
+	class Puc_v4p12_Vcs_GitHubApi extends Puc_v4p12_Vcs_Api {
 		/**
 		 * @var string GitHub username.
 		 */
@@ -57,7 +57,7 @@ public function __construct($repositoryUrl, $accessToken = null) {
 		/**
 		 * Get the latest release from GitHub.
 		 *
-		 * @return Puc_v4p11_Vcs_Reference|null
+		 * @return Puc_v4p12_Vcs_Reference|null
 		 */
 		public function getLatestRelease() {
 			$release = $this->api('/repos/:user/:repo/releases/latest');
@@ -65,7 +65,7 @@ public function getLatestRelease() {
 				return null;
 			}
 
-			$reference = new Puc_v4p11_Vcs_Reference(array(
+			$reference = new Puc_v4p12_Vcs_Reference(array(
 				'name'        => $release->tag_name,
 				'version'     => ltrim($release->tag_name, 'v'), //Remove the "v" prefix from "v1.2.3".
 				'downloadUrl' => $release->zipball_url,
@@ -109,7 +109,7 @@ public function getLatestRelease() {
 		/**
 		 * Get the tag that looks like the highest version number.
 		 *
-		 * @return Puc_v4p11_Vcs_Reference|null
+		 * @return Puc_v4p12_Vcs_Reference|null
 		 */
 		public function getLatestTag() {
 			$tags = $this->api('/repos/:user/:repo/tags');
@@ -124,7 +124,7 @@ public function getLatestTag() {
 			}
 
 			$tag = $versionTags[0];
-			return new Puc_v4p11_Vcs_Reference(array(
+			return new Puc_v4p12_Vcs_Reference(array(
 				'name'        => $tag->name,
 				'version'     => ltrim($tag->name, 'v'),
 				'downloadUrl' => $tag->zipball_url,
@@ -136,7 +136,7 @@ public function getLatestTag() {
 		 * Get a branch by name.
 		 *
 		 * @param string $branchName
-		 * @return null|Puc_v4p11_Vcs_Reference
+		 * @return null|Puc_v4p12_Vcs_Reference
 		 */
 		public function getBranch($branchName) {
 			$branch = $this->api('/repos/:user/:repo/branches/' . $branchName);
@@ -144,7 +144,7 @@ public function getBranch($branchName) {
 				return null;
 			}
 
-			$reference = new Puc_v4p11_Vcs_Reference(array(
+			$reference = new Puc_v4p12_Vcs_Reference(array(
 				'name'        => $branch->name,
 				'downloadUrl' => $this->buildArchiveDownloadUrl($branch->name),
 				'apiResponse' => $branch,
@@ -314,7 +314,7 @@ public function setAuthentication($credentials) {
 		 * Figure out which reference (i.e tag or branch) contains the latest version.
 		 *
 		 * @param string $configBranch Start looking in this branch.
-		 * @return null|Puc_v4p11_Vcs_Reference
+		 * @return null|Puc_v4p12_Vcs_Reference
 		 */
 		public function chooseReference($configBranch) {
 			$updateSource = null;
diff --git a/Puc/v4p12/Vcs/GitLabApi.php b/Puc/v4p12/Vcs/GitLabApi.php
index 75576ae..606df9f 100644
--- a/Puc/v4p12/Vcs/GitLabApi.php
+++ b/Puc/v4p12/Vcs/GitLabApi.php
@@ -1,8 +1,8 @@
 <?php
 
-if ( !class_exists('Puc_v4p11_Vcs_GitLabApi', false) ):
+if ( !class_exists('Puc_v4p12_Vcs_GitLabApi', false) ):
 
-	class Puc_v4p11_Vcs_GitLabApi extends Puc_v4p11_Vcs_Api {
+	class Puc_v4p12_Vcs_GitLabApi extends Puc_v4p12_Vcs_Api {
 		/**
 		 * @var string GitLab username.
 		 */
@@ -101,7 +101,7 @@ public function __construct($repositoryUrl, $accessToken = null, $subgroup = nul
 		/**
 		 * Get the latest release from GitLab.
 		 *
-		 * @return Puc_v4p11_Vcs_Reference|null
+		 * @return Puc_v4p12_Vcs_Reference|null
 		 */
 		public function getLatestRelease() {
 			$releases = $this->api('/:id/releases');
@@ -118,7 +118,7 @@ public function getLatestRelease() {
 				return null;
 			}
 
-			$reference = new Puc_v4p11_Vcs_Reference(array(
+			$reference = new Puc_v4p12_Vcs_Reference(array(
 				'name'        => $release->tag_name,
 				'version'     => ltrim($release->tag_name, 'v'), //Remove the "v" prefix from "v1.2.3".
 				'downloadUrl' => '',
@@ -177,7 +177,7 @@ public function getLatestRelease() {
 		/**
 		 * Get the tag that looks like the highest version number.
 		 *
-		 * @return Puc_v4p11_Vcs_Reference|null
+		 * @return Puc_v4p12_Vcs_Reference|null
 		 */
 		public function getLatestTag() {
 			$tags = $this->api('/:id/repository/tags');
@@ -191,7 +191,7 @@ public function getLatestTag() {
 			}
 
 			$tag = $versionTags[0];
-			return new Puc_v4p11_Vcs_Reference(array(
+			return new Puc_v4p12_Vcs_Reference(array(
 				'name'        => $tag->name,
 				'version'     => ltrim($tag->name, 'v'),
 				'downloadUrl' => $this->buildArchiveDownloadUrl($tag->name),
@@ -203,7 +203,7 @@ public function getLatestTag() {
 		 * Get a branch by name.
 		 *
 		 * @param string $branchName
-		 * @return null|Puc_v4p11_Vcs_Reference
+		 * @return null|Puc_v4p12_Vcs_Reference
 		 */
 		public function getBranch($branchName) {
 			$branch = $this->api('/:id/repository/branches/' . $branchName);
@@ -211,7 +211,7 @@ public function getBranch($branchName) {
 				return null;
 			}
 
-			$reference = new Puc_v4p11_Vcs_Reference(array(
+			$reference = new Puc_v4p12_Vcs_Reference(array(
 				'name'        => $branch->name,
 				'downloadUrl' => $this->buildArchiveDownloadUrl($branch->name),
 				'apiResponse' => $branch,
@@ -360,7 +360,7 @@ public function getTag($tagName) {
 		 * Figure out which reference (i.e tag or branch) contains the latest version.
 		 *
 		 * @param string $configBranch Start looking in this branch.
-		 * @return null|Puc_v4p11_Vcs_Reference
+		 * @return null|Puc_v4p12_Vcs_Reference
 		 */
 		public function chooseReference($configBranch) {
 
diff --git a/Puc/v4p12/Vcs/PluginUpdateChecker.php b/Puc/v4p12/Vcs/PluginUpdateChecker.php
index ff6a0f2..1eaae29 100644
--- a/Puc/v4p12/Vcs/PluginUpdateChecker.php
+++ b/Puc/v4p12/Vcs/PluginUpdateChecker.php
@@ -1,21 +1,21 @@
 <?php
-if ( !class_exists('Puc_v4p11_Vcs_PluginUpdateChecker') ):
+if ( !class_exists('Puc_v4p12_Vcs_PluginUpdateChecker') ):
 
-	class Puc_v4p11_Vcs_PluginUpdateChecker extends Puc_v4p11_Plugin_UpdateChecker implements Puc_v4p11_Vcs_BaseChecker {
+	class Puc_v4p12_Vcs_PluginUpdateChecker extends Puc_v4p12_Plugin_UpdateChecker implements Puc_v4p12_Vcs_BaseChecker {
 		/**
 		 * @var string The branch where to look for updates. Defaults to "master".
 		 */
 		protected $branch = 'master';
 
 		/**
-		 * @var Puc_v4p11_Vcs_Api Repository API client.
+		 * @var Puc_v4p12_Vcs_Api Repository API client.
 		 */
 		protected $api = null;
 
 		/**
-		 * Puc_v4p11_Vcs_PluginUpdateChecker constructor.
+		 * Puc_v4p12_Vcs_PluginUpdateChecker constructor.
 		 *
-		 * @param Puc_v4p11_Vcs_Api $api
+		 * @param Puc_v4p12_Vcs_Api $api
 		 * @param string $pluginFile
 		 * @param string $slug
 		 * @param int $checkPeriod
@@ -41,7 +41,7 @@ public function requestInfo($unusedParameter = null) {
 			$api = $this->api;
 			$api->setLocalDirectory($this->package->getAbsoluteDirectoryPath());
 
-			$info = new Puc_v4p11_Plugin_Info();
+			$info = new Puc_v4p12_Plugin_Info();
 			$info->filename = $this->pluginFile;
 			$info->slug = $this->slug;
 
@@ -126,7 +126,7 @@ protected function readmeTxtExistsLocally() {
 		 * Copy plugin metadata from a file header to a Plugin Info object.
 		 *
 		 * @param array $fileHeader
-		 * @param Puc_v4p11_Plugin_Info $pluginInfo
+		 * @param Puc_v4p12_Plugin_Info $pluginInfo
 		 */
 		protected function setInfoFromHeader($fileHeader, $pluginInfo) {
 			$headerToPropertyMap = array(
@@ -159,7 +159,7 @@ protected function setInfoFromHeader($fileHeader, $pluginInfo) {
 		 * Copy plugin metadata from the remote readme.txt file.
 		 *
 		 * @param string $ref GitHub tag or branch where to look for the readme.
-		 * @param Puc_v4p11_Plugin_Info $pluginInfo
+		 * @param Puc_v4p12_Plugin_Info $pluginInfo
 		 */
 		protected function setInfoFromRemoteReadme($ref, $pluginInfo) {
 			$readme = $this->api->getRemoteReadme($ref);
@@ -192,7 +192,7 @@ protected function setInfoFromRemoteReadme($ref, $pluginInfo) {
 		 * and file names are described here:
 		 * @link https://developer.wordpress.org/plugins/wordpress-org/plugin-assets/#plugin-icons
 		 *
-		 * @param Puc_v4p11_Plugin_Info $pluginInfo
+		 * @param Puc_v4p12_Plugin_Info $pluginInfo
 		 */
 		protected function setIconsFromLocalAssets($pluginInfo) {
 			$icons = $this->getLocalAssetUrls(array(
@@ -221,7 +221,7 @@ protected function setIconsFromLocalAssets($pluginInfo) {
 		 * and file names are described here:
 		 * @link https://developer.wordpress.org/plugins/wordpress-org/plugin-assets/#plugin-headers
 		 *
-		 * @param Puc_v4p11_Plugin_Info $pluginInfo
+		 * @param Puc_v4p12_Plugin_Info $pluginInfo
 		 */
 		protected function setBannersFromLocalAssets($pluginInfo) {
 			$banners = $this->getLocalAssetUrls(array(
diff --git a/Puc/v4p12/Vcs/Reference.php b/Puc/v4p12/Vcs/Reference.php
index 0bf8c69..2e9277b 100644
--- a/Puc/v4p12/Vcs/Reference.php
+++ b/Puc/v4p12/Vcs/Reference.php
@@ -1,5 +1,5 @@
 <?php
-if ( !class_exists('Puc_v4p11_Vcs_Reference', false) ):
+if ( !class_exists('Puc_v4p12_Vcs_Reference', false) ):
 
 	/**
 	 * This class represents a VCS branch or tag. It's intended as a read only, short-lived container
@@ -13,7 +13,7 @@
 	 * @property string|null $changelog
 	 * @property int|null $downloadCount
 	 */
-	class Puc_v4p11_Vcs_Reference {
+	class Puc_v4p12_Vcs_Reference {
 		private $properties = array();
 
 		public function __construct($properties = array()) {
diff --git a/Puc/v4p12/Vcs/ThemeUpdateChecker.php b/Puc/v4p12/Vcs/ThemeUpdateChecker.php
index 1850af6..e373de3 100644
--- a/Puc/v4p12/Vcs/ThemeUpdateChecker.php
+++ b/Puc/v4p12/Vcs/ThemeUpdateChecker.php
@@ -1,22 +1,22 @@
 <?php
 
-if ( !class_exists('Puc_v4p11_Vcs_ThemeUpdateChecker', false) ):
+if ( !class_exists('Puc_v4p12_Vcs_ThemeUpdateChecker', false) ):
 
-	class Puc_v4p11_Vcs_ThemeUpdateChecker extends Puc_v4p11_Theme_UpdateChecker implements Puc_v4p11_Vcs_BaseChecker {
+	class Puc_v4p12_Vcs_ThemeUpdateChecker extends Puc_v4p12_Theme_UpdateChecker implements Puc_v4p12_Vcs_BaseChecker {
 		/**
 		 * @var string The branch where to look for updates. Defaults to "master".
 		 */
 		protected $branch = 'master';
 
 		/**
-		 * @var Puc_v4p11_Vcs_Api Repository API client.
+		 * @var Puc_v4p12_Vcs_Api Repository API client.
 		 */
 		protected $api = null;
 
 		/**
-		 * Puc_v4p11_Vcs_ThemeUpdateChecker constructor.
+		 * Puc_v4p12_Vcs_ThemeUpdateChecker constructor.
 		 *
-		 * @param Puc_v4p11_Vcs_Api $api
+		 * @param Puc_v4p12_Vcs_Api $api
 		 * @param null $stylesheet
 		 * @param null $customSlug
 		 * @param int $checkPeriod
@@ -35,7 +35,7 @@ public function requestUpdate() {
 			$api = $this->api;
 			$api->setLocalDirectory($this->package->getAbsoluteDirectoryPath());
 
-			$update = new Puc_v4p11_Theme_Update();
+			$update = new Puc_v4p12_Theme_Update();
 			$update->slug = $this->slug;
 
 			//Figure out which reference (tag or branch) we'll use to get the latest version of the theme.
@@ -60,13 +60,13 @@ public function requestUpdate() {
 			//Get headers from the main stylesheet in this branch/tag. Its "Version" header and other metadata
 			//are what the WordPress install will actually see after upgrading, so they take precedence over releases/tags.
 			$remoteHeader = $this->package->getFileHeader($api->getRemoteFile('style.css', $ref));
-			$update->version = Puc_v4p11_Utils::findNotEmpty(array(
+			$update->version = Puc_v4p12_Utils::findNotEmpty(array(
 				$remoteHeader['Version'],
-				Puc_v4p11_Utils::get($updateSource, 'version'),
+				Puc_v4p12_Utils::get($updateSource, 'version'),
 			));
 
 			//The details URL defaults to the Theme URI header or the repository URL.
-			$update->details_url = Puc_v4p11_Utils::findNotEmpty(array(
+			$update->details_url = Puc_v4p12_Utils::findNotEmpty(array(
 				$remoteHeader['ThemeURI'],
 				$this->package->getHeaderValue('ThemeURI'),
 				$this->metadataUrl,
diff --git a/README.md b/README.md
index 93d8a7d..319e24c 100644
--- a/README.md
+++ b/README.md
@@ -243,8 +243,8 @@ BitBucket doesn't have an equivalent to GitHub's releases, so the process is sli
 
 	Alternatively, if you're using a self-hosted GitLab instance, initialize the update checker like this:
 	```php
-    $myUpdateChecker = new Puc_v4p11_Vcs_PluginUpdateChecker(
-        new Puc_v4p11_Vcs_GitLabApi('https://myserver.com/user-name/repo-name/'),
+    $myUpdateChecker = new Puc_v4p12_Vcs_PluginUpdateChecker(
+        new Puc_v4p12_Vcs_GitLabApi('https://myserver.com/user-name/repo-name/'),
         __FILE__,
         'unique-plugin-or-theme-slug'
     );
@@ -252,8 +252,8 @@ BitBucket doesn't have an equivalent to GitHub's releases, so the process is sli
    ```
    If you're using a self-hosted GitLab instance and [subgroups or nested groups](https://docs.gitlab.com/ce/user/group/subgroups/index.html), you have to tell the update checker which parts of the URL are subgroups:
    ```php
-       $myUpdateChecker = new Puc_v4p11_Vcs_PluginUpdateChecker(
-           new Puc_v4p11_Vcs_GitLabApi('https://myserver.com/group-name/subgroup-level1/subgroup-level2/subgroup-level3/repo-name/', null, 'subgroup-level1/subgroup-level2/subgroup-level3'),
+       $myUpdateChecker = new Puc_v4p12_Vcs_PluginUpdateChecker(
+           new Puc_v4p12_Vcs_GitLabApi('https://myserver.com/group-name/subgroup-level1/subgroup-level2/subgroup-level3/repo-name/', null, 'subgroup-level1/subgroup-level2/subgroup-level3'),
            __FILE__,
            'unique-plugin-or-theme-slug'
        );
diff --git a/load-v4p12.php b/load-v4p12.php
index 8da97f6..68511b5 100644
--- a/load-v4p12.php
+++ b/load-v4p12.php
@@ -1,6 +1,6 @@
 <?php
 require dirname(__FILE__) . '/Puc/v4p12/Autoloader.php';
-new Puc_v4p11_Autoloader();
+new Puc_v4p12_Autoloader();
 
 require dirname(__FILE__) . '/Puc/v4p12/Factory.php';
 require dirname(__FILE__) . '/Puc/v4/Factory.php';
@@ -8,21 +8,21 @@
 //Register classes defined in this version with the factory.
 foreach (
 	array(
-		'Plugin_UpdateChecker' => 'Puc_v4p11_Plugin_UpdateChecker',
-		'Theme_UpdateChecker'  => 'Puc_v4p11_Theme_UpdateChecker',
+		'Plugin_UpdateChecker' => 'Puc_v4p12_Plugin_UpdateChecker',
+		'Theme_UpdateChecker'  => 'Puc_v4p12_Theme_UpdateChecker',
 
-		'Vcs_PluginUpdateChecker' => 'Puc_v4p11_Vcs_PluginUpdateChecker',
-		'Vcs_ThemeUpdateChecker'  => 'Puc_v4p11_Vcs_ThemeUpdateChecker',
+		'Vcs_PluginUpdateChecker' => 'Puc_v4p12_Vcs_PluginUpdateChecker',
+		'Vcs_ThemeUpdateChecker'  => 'Puc_v4p12_Vcs_ThemeUpdateChecker',
 
-		'GitHubApi'    => 'Puc_v4p11_Vcs_GitHubApi',
-		'BitBucketApi' => 'Puc_v4p11_Vcs_BitBucketApi',
-		'GitLabApi'    => 'Puc_v4p11_Vcs_GitLabApi',
+		'GitHubApi'    => 'Puc_v4p12_Vcs_GitHubApi',
+		'BitBucketApi' => 'Puc_v4p12_Vcs_BitBucketApi',
+		'GitLabApi'    => 'Puc_v4p12_Vcs_GitLabApi',
 	)
 	as $pucGeneralClass => $pucVersionedClass
 ) {
-	Puc_v4_Factory::addVersion($pucGeneralClass, $pucVersionedClass, '4.11');
+	Puc_v4_Factory::addVersion($pucGeneralClass, $pucVersionedClass, '4.12');
 	//Also add it to the minor-version factory in case the major-version factory
 	//was already defined by another, older version of the update checker.
-	Puc_v4p11_Factory::addVersion($pucGeneralClass, $pucVersionedClass, '4.11');
+	Puc_v4p12_Factory::addVersion($pucGeneralClass, $pucVersionedClass, '4.12');
 }
 
diff --git a/plugin-update-checker.php b/plugin-update-checker.php
index fe5ad78..041c530 100644
--- a/plugin-update-checker.php
+++ b/plugin-update-checker.php
@@ -1,9 +1,9 @@
 <?php
 /**
- * Plugin Update Checker Library 4.11
+ * Plugin Update Checker Library 4.12
  * http://w-shadow.com/
  *
- * Copyright 2021 Janis Elsts
+ * Copyright 2022 Janis Elsts
  * Released under the MIT license. See license.txt for details.
  */