diff --git a/classes/config.php b/classes/config.php
index 95bf3bf71d6c42ac4b2d3287b1485f54f7e192d9..2c46e1784b7ca2b30852277673e22f2c81213559 100644
--- a/classes/config.php
+++ b/classes/config.php
@@ -115,6 +115,10 @@ class Config {
 		return self::$instance;
 	}
 
+	private function __clone() {
+		//
+	}
+
 	function __construct() {
 		$ref = new ReflectionClass(get_class($this));
 
diff --git a/classes/handler/public.php b/classes/handler/public.php
index 6ab9d7285fa3426c6dfaa47a8a5eca0ffc4dcdc8..abfe07b8f7ed61442ab816d15f7571a5273e7d6c 100755
--- a/classes/handler/public.php
+++ b/classes/handler/public.php
@@ -369,7 +369,7 @@ class Handler_Public extends Handler {
 					$_SESSION["language"] = get_pref(Prefs::USER_LANGUAGE, $_SESSION["uid"]);
 				}
 
-				$_SESSION["ref_schema_version"] = get_schema_version(true);
+				$_SESSION["ref_schema_version"] = get_schema_version();
 				$_SESSION["bw_limit"] = !!clean($_POST["bw_limit"] ?? false);
 				$_SESSION["safe_mode"] = $safe_mode;
 
diff --git a/classes/logger.php b/classes/logger.php
index c917182c1682ef955e898eadfd17ae1d3b23d467..c227c014c9f1f6cf76e65aca21be8c1cce0f4d33 100755
--- a/classes/logger.php
+++ b/classes/logger.php
@@ -3,7 +3,7 @@ class Logger {
 	private static $instance;
 	private $adapter;
 
-	public static $errornames = array(
+	const ERROR_NAMES = [
 		1			=> 'E_ERROR',
 		2			=> 'E_WARNING',
 		4			=> 'E_PARSE',
@@ -19,10 +19,14 @@ class Logger {
 		4096		=> 'E_RECOVERABLE_ERROR',
 		8192		=> 'E_DEPRECATED',
 		16384		=> 'E_USER_DEPRECATED',
-		32767		=> 'E_ALL');
+		32767		=> 'E_ALL'];
 
-	function log_error($errno, $errstr, $file, $line, $context) {
-		if ($errno == E_NOTICE) return false;
+	static function log_error(int $errno, string $errstr, string $file, int $line, $context) {
+		return self::get_instance()->_log_error($errno, $errstr, $file, $line, $context);
+	}
+
+	private function _log_error($errno, $errstr, $file, $line, $context) {
+		//if ($errno == E_NOTICE) return false;
 
 		if ($this->adapter)
 			return $this->adapter->log_error($errno, $errstr, $file, $line, $context);
@@ -30,7 +34,11 @@ class Logger {
 			return false;
 	}
 
-	function log($errno, $errstr, $context = "") {
+	static function log(int $errno, string $errstr, $context = "") {
+		return self::get_instance()->_log($errno, $errstr, $context);
+	}
+
+	private function _log($errno, $errstr, $context = "") {
 		if ($this->adapter)
 			return $this->adapter->log_error($errno, $errstr, '', 0, $context);
 		else
@@ -57,11 +65,15 @@ class Logger {
 		}
 	}
 
-	public static function get() : Logger {
+	private static function get_instance() : Logger {
 		if (self::$instance == null)
 			self::$instance = new self();
 
 		return self::$instance;
 	}
 
+	static function get() : Logger {
+		user_error("Please don't use Logger::get(), call Logger::log(...) instead.", E_USER_DEPRECATED);
+		return self::get_instance();
+	}
 }
diff --git a/classes/logger/stdout.php b/classes/logger/stdout.php
index 4dac2e598bd976451d193623f305057ed002fe50..645fe8ecf36808749127c1cb0c787fffa4b43efe 100644
--- a/classes/logger/stdout.php
+++ b/classes/logger/stdout.php
@@ -21,7 +21,7 @@ class Logger_Stdout {
 			$priority = LOG_INFO;
 		}
 
-		$errname = Logger::$errornames[$errno] . " ($errno)";
+		$errname = Logger::ERROR_NAMES[$errno] . " ($errno)";
 
 		print "[EEE] $priority $errname ($file:$line) $errstr\n";
 
diff --git a/classes/logger/syslog.php b/classes/logger/syslog.php
index f1e151548cc54bcd1b96d74328eb86e5653ebc77..2dd3c4dfd1d0b44f9bb6563eade892a5e811ba23 100644
--- a/classes/logger/syslog.php
+++ b/classes/logger/syslog.php
@@ -21,7 +21,7 @@ class Logger_Syslog {
 			$priority = LOG_INFO;
 		}
 
-		$errname = Logger::$errornames[$errno] . " ($errno)";
+		$errname = Logger::ERROR_NAMES[$errno] . " ($errno)";
 
 		syslog($priority, "[tt-rss] $errname ($file:$line) $errstr");
 
diff --git a/classes/mailer.php b/classes/mailer.php
index 93f7782103d686161e3fd9c34ff79d659b317e66..a4270ba88ee3783c91f649c9f688242747c46921 100644
--- a/classes/mailer.php
+++ b/classes/mailer.php
@@ -20,7 +20,7 @@ class Mailer {
 		$to_combined = $to_name ? "$to_name <$to_address>" : $to_address;
 
 		if (Config::get(Config::LOG_SENT_MAIL))
-			Logger::get()->log(E_USER_NOTICE, "Sending mail from $from_combined to $to_combined [$subject]: $message");
+			Logger::log(E_USER_NOTICE, "Sending mail from $from_combined to $to_combined [$subject]: $message");
 
 		// HOOK_SEND_MAIL plugin instructions:
 		// 1. return 1 or true if mail is handled
diff --git a/classes/pref/system.php b/classes/pref/system.php
index 67f7133c6f68d89373de1772ae22a1ce01f90dc8..85635e753a4a7713ca5a7444e0b761178033c5c9 100644
--- a/classes/pref/system.php
+++ b/classes/pref/system.php
@@ -129,7 +129,7 @@ class Pref_System extends Handler_Administrative {
 						?>
 						<tr>
 							<td class='errno'>
-								<?= Logger::$errornames[$line["errno"]] . " (" . $line["errno"] . ")" ?>
+								<?= Logger::ERROR_NAMES[$line["errno"]] . " (" . $line["errno"] . ")" ?>
 							</td>
 							<td class='filename'><?= $line["filename"] . ":" . $line["lineno"] ?></td>
 							<td class='errstr'><?= $line["errstr"] . "\n" .  $line["context"] ?></td>
diff --git a/classes/prefs.php b/classes/prefs.php
index 2c17cd353ab45c785965082b4cff6a0cfa52385a..29e315c22c6be455ebef84bdcdb565d4fb71740b 100644
--- a/classes/prefs.php
+++ b/classes/prefs.php
@@ -167,6 +167,10 @@ class Prefs {
 		};
 	}
 
+	private function __clone() {
+		//
+	}
+
 	static function get_all(int $owner_uid, int $profile_id = null) {
 		return self::get_instance()->_get_all($owner_uid, $profile_id);
 	}
@@ -204,7 +208,7 @@ class Prefs {
 			}
 		}
 
-		if (get_schema_version(true) >= 141) {
+		if (get_schema_version() >= 141) {
 			// fill in any overrides from the database
 			$sth = $this->pdo->prepare("SELECT pref_name, value FROM ttrss_user_prefs2
 									WHERE owner_uid = :uid AND
@@ -228,7 +232,7 @@ class Prefs {
 
 			list ($def_val, $type_hint) = self::_DEFAULTS[$pref_name];
 
-			if (get_schema_version(true) < 141) {
+			if (get_schema_version() < 141) {
 				return Config::cast_to($def_val, $type_hint);
 			}
 
@@ -341,7 +345,7 @@ class Prefs {
 	}
 
 	function migrate(int $owner_uid, int $profile_id = null) {
-		if (get_schema_version(true) < 141)
+		if (get_schema_version() < 141)
 			return;
 
 		if (!$profile_id) $profile_id = null;
diff --git a/classes/rpc.php b/classes/rpc.php
index 3abdeb768c71990a13794efa22caf9c10c952873..a4ee77c11fbaea9d48232bc41028df6359f2416a 100755
--- a/classes/rpc.php
+++ b/classes/rpc.php
@@ -140,7 +140,7 @@ class RPC extends Handler_Protected {
 
 		$error = Errors::E_SUCCESS;
 
-		if (get_schema_version(true) != SCHEMA_VERSION) {
+		if (get_schema_version() != SCHEMA_VERSION) {
 			$error = Errors::E_SCHEMA_MISMATCH;
 		}
 
@@ -343,7 +343,7 @@ class RPC extends Handler_Protected {
 		$context = clean($_REQUEST['context']);
 
 		if ($msg) {
-			Logger::get()->log_error(E_USER_WARNING,
+			Logger::log_error(E_USER_WARNING,
 				$msg, 'client-js:' . $file, $line, $context);
 
 			echo json_encode(array("message" => "HOST_ERROR_LOGGED"));
diff --git a/classes/rssutils.php b/classes/rssutils.php
index 0a4040ef3ebcd98315b4566659fe5ae6d5568376..b6aecb8c9a81930cc8b53fb29ae96d6f5ed53e3a 100755
--- a/classes/rssutils.php
+++ b/classes/rssutils.php
@@ -216,7 +216,7 @@ class RSSUtils {
 
 						Debug::log("!! Last error: $error_message");
 
-						Logger::get()->log(E_USER_NOTICE,
+						Logger::log(E_USER_NOTICE,
 							sprintf("Update process for feed %d (%s, owner UID: %d) failed with exit code: %d (%s).",
 								$tline["id"], clean($tline["title"]), $tline["owner_uid"], $exit_code, clean($error_message)));
 
@@ -233,7 +233,7 @@ class RSSUtils {
 						if (!self::update_rss_feed($tline["id"], true)) {
 							global $fetch_last_error;
 
-							Logger::get()->log(E_USER_NOTICE,
+							Logger::log(E_USER_NOTICE,
 								sprintf("Update request for feed %d (%s, owner UID: %d) failed: %s.",
 									$tline["id"], clean($tline["title"]), $tline["owner_uid"], clean($fetch_last_error)));
 						}
@@ -241,7 +241,7 @@ class RSSUtils {
 						Debug::log(sprintf("<= %.4f (sec) (not using a separate process)", microtime(true) - $fstarted));
 
 					} catch (PDOException $e) {
-						Logger::get()->log_error(E_USER_WARNING, $e->getMessage(), $e->getFile(), $e->getLine(), $e->getTraceAsString());
+						Logger::log_error(E_USER_WARNING, $e->getMessage(), $e->getFile(), $e->getLine(), $e->getTraceAsString());
 
 						try {
 							$pdo->rollback();
@@ -1619,7 +1619,7 @@ class RSSUtils {
 			$sth->execute();
 
 			while ($row = $sth->fetch()) {
-				Logger::get()->log(E_USER_NOTICE,
+				Logger::log(E_USER_NOTICE,
 					sprintf("Auto disabling feed %d (%s, UID: %d) because it failed to update for %d days.",
 						$row["id"], clean($row["title"]), $row["owner_uid"], Config::get(Config::DAEMON_UNSUCCESSFUL_DAYS_LIMIT)));
 
diff --git a/classes/userhelper.php b/classes/userhelper.php
index 0698f6beb602ccdd0cbca990e0f46b821ce4f3ec..4edcaf36813a7fa5f4092230a1f24aaade4d7252 100644
--- a/classes/userhelper.php
+++ b/classes/userhelper.php
@@ -47,7 +47,7 @@ class UserHelper {
 			}
 
 			if (!$user_id)
-				Logger::get()->log(E_USER_WARNING, "Failed login attempt for $login (service: $service) from " . UserHelper::get_user_ip());
+				Logger::log(E_USER_WARNING, "Failed login attempt for $login (service: $service) from " . UserHelper::get_user_ip());
 
 			return false;
 
@@ -102,7 +102,7 @@ class UserHelper {
 			if (empty($_SESSION["uid"])) {
 
 				if (Config::get(Config::AUTH_AUTO_LOGIN) && self::authenticate(null, null)) {
-					$_SESSION["ref_schema_version"] = get_schema_version(true);
+					$_SESSION["ref_schema_version"] = get_schema_version();
 				} else {
 					 self::authenticate(null, null, true);
 				}
diff --git a/include/errorhandler.php b/include/errorhandler.php
index 68e2285c1376f6b476536f8c03a9eadb2fe9ca6e..a59d7a6164964a008a45728374107c0d0ace5bb6 100644
--- a/include/errorhandler.php
+++ b/include/errorhandler.php
@@ -54,7 +54,7 @@ function ttrss_error_handler($errno, $errstr, $file, $line) {
 	$errstr = truncate_middle($errstr, 16384, " (...) ");
 
 	if (class_exists("Logger"))
-		return Logger::get()->log_error($errno, $errstr, $file, $line, $context);
+		return Logger::log_error($errno, $errstr, $file, $line, $context);
 }
 
 function ttrss_fatal_handler() {
@@ -77,7 +77,7 @@ function ttrss_fatal_handler() {
 		if ($last_query) $errstr .= " [Last query: $last_query]";
 
 		if (class_exists("Logger"))
-			return Logger::get()->log_error($errno, $errstr, $file, $line, $context);
+			return Logger::log_error($errno, $errstr, $file, $line, $context);
 	}
 
 	return false;
diff --git a/update.php b/update.php
index 8d8566db7d8a107b9d205755bc9a23b0f501485b..bcb6d6d12c72d6ee5ce1cb9e7e5baec908489d86 100755
--- a/update.php
+++ b/update.php
@@ -242,7 +242,7 @@
 			Debug::log(sprintf("Exception while updating feed %d: %s (%s:%d)",
 				$options["update-feed"], $e->getMessage(), $e->getFile(), $e->getLine()));
 
-			Logger::get()->log_error(E_USER_WARNING, $e->getMessage(), $e->getFile(), $e->getLine(), $e->getTraceAsString());
+			Logger::log_error(E_USER_WARNING, $e->getMessage(), $e->getFile(), $e->getLine(), $e->getTraceAsString());
 
 			exit(110);
 		}