diff --git a/Changelog.md b/Changelog.md
index 41314c1..b3287ec 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -18,6 +18,9 @@ This file holds the changelog for Pepperminty Wiki. This is the master list of t
  - Vastly improved search engine performance
      - A new SQLite-based index format is now used, so search indexes will need to be rebuilt (migrating would probably take longer than a rebuild :-/)
  - New search query syntax
+ - When making remote requests, Pepperminty Wiki will now correctly set the user agent string
+     - The server's `expose_php` setting is respected - if it's disabled, then the PHP version will not be exposed.
+     - Pepperminty Wiki _shouldn't_ make remote requests without you asking it to - see above and the theme gallery
 
 
 ## v0.19
diff --git a/core/02-environment.php b/core/02-environment.php
index 7a97e85..b3a17f2 100644
--- a/core/02-environment.php
+++ b/core/02-environment.php
@@ -66,3 +66,8 @@ $paths->upload_file_prefix = "Files/";
 // Create the cache directory if it doesn't exist
 if(!is_dir($paths->cache_directory))
 	mkdir($paths->cache_directory, 0700);
+
+// Set the user agent string
+$php_version = ini_get("expose_php") == "1" ? "PHP/".phpversion() : "PHP";
+ini_set("user_agent", "$php_version (".PHP_SAPI."; ".PHP_OS." ".php_uname("m")."; ".(PHP_INT_SIZE*8)." bits; rv:$version) Pepperminty-Wiki/$version-".substr($commit, 0, 7));
+unset($php_version);
diff --git a/module_index.json b/module_index.json
index 213b360..248c67a 100755
--- a/module_index.json
+++ b/module_index.json
@@ -75,7 +75,7 @@
         "version": "0.1",
         "author": "Starbeamrainbowlabs",
         "description": "Displays a special page to aid in setting up a new wiki for the first time.",
-        "lastupdate": 1557611471,
+        "lastupdate": 1566827225,
         "optional": false,
         "extra_data": []
     },
@@ -154,8 +154,8 @@
         "name": "Theme Gallery",
         "version": "0.1",
         "author": "Starbeamrainbowlabs",
-        "description": "Adds a theme gallery page and optional automatic theme updates.",
-        "lastupdate": 1566733743,
+        "description": "Adds a theme gallery page and optional automatic theme updates. Contacts a remote server, where IP addresses are stored in automatic server logs for security and attack mitigation purposes.",
+        "lastupdate": 1566828460,
         "optional": false,
         "extra_data": []
     },
diff --git a/modules/feature-firstrun.php b/modules/feature-firstrun.php
index 5a8f70a..3ebb77b 100644
--- a/modules/feature-firstrun.php
+++ b/modules/feature-firstrun.php
@@ -64,11 +64,12 @@ register_module([
 			}
 			
 			// TODO: Check the environment here first
-			//  - Make sure peppermint.json isn't accessible
 			//  - Check for required modules?
 			
 			// TODO: Add a button to skip the firstrun wizard & do your own manual setup
 			
+			// TODO: Add option to configure theme auto-update here - make sure it doesn't do anything until configuration it complete!
+			
 			$result = "<h1>Welcome!</h1>
 <p>Welcome to Pepperminty Wiki.</p>
 <p>Fill out the below form to get your wiki up and running!</p>
diff --git a/modules/feature-theme-gallery.php b/modules/feature-theme-gallery.php
index 29b0bb9..fa6b3ba 100644
--- a/modules/feature-theme-gallery.php
+++ b/modules/feature-theme-gallery.php
@@ -3,7 +3,7 @@ register_module([
 	"name" => "Theme Gallery",
 	"version" => "0.1",
 	"author" => "Starbeamrainbowlabs",
-	"description" => "Adds a theme gallery page and optional automatic theme updates.",
+	"description" => "Adds a theme gallery page and optional automatic theme updates. Contacts a remote server, where IP addresses are stored in automatic server logs for security and attack mitigation purposes.",
 	"id" => "feature-theme-gallery",
 	"code" => function() {
 		global $settings;
@@ -28,11 +28,11 @@ register_module([
 				}
 				
 				foreach($next_obj as $theme) {
-					$theme["index_url"] = $url;
-					$theme["root"] = dirname($url) . "/{$theme["id"]}";
-					$theme["url"] = "{$theme["root"]}/theme.css";
-					$theme["preview_large"] = "{$theme["root"]}/preview_large.png";
-					$theme["preview_small"] = "{$theme["root"]}/preview_small.png";
+					$theme->index_url = $url;
+					$theme->root = dirname($url) . "/{$theme->id}";
+					$theme->url = "{$theme->root}/theme.css";
+					$theme->preview_large = "{$theme->root}/preview_large.png";
+					$theme->preview_small = "{$theme->root}/preview_small.png";
 					$themes_available[] = $theme;
 				}
 			}
@@ -41,16 +41,16 @@ register_module([
 			<div class='grid theme-list'>\n";
 			foreach($themes_available as $theme) {
 				$content .= "<div class='theme-item'>
-					<input type='radio' id='" . htmlentities($theme["id"]) . "' name='theme-selector' value='" . htmlentities($theme["id"]) . "'  /><br />
-					<a href='" . htmlentities($theme["preview_large"]) . "'><img src='" . htmlentities($theme["preview_small"]) . "' title='Click to enlarge.' /></a>
-					<label for='" . htmlentities($theme["id"]) . "'>" . htmlentities($theme["name"]) . "</label>
-					<p>" . str_replace("\n", "</p>\n<p>", htmlentities($theme["description"])) . "</p>
-					<p>By <a href='" . htmlentities($theme["author_link"]) . "'>" . htmlentities($theme["author"]) . "</a> (<a href='" . htmlentities($theme["url"]) . "'>View CSS</a>, <a href='" . htmlentities($theme["index_url"]) . "'>View Index</a>)
+					<a href='" . htmlentities($theme->preview_large) . "'><img src='" . htmlentities($theme->preview_small) . "' title='Click to enlarge.' /></a>
+					<input type='radio' id='" . htmlentities($theme->id) . "' name='theme-selector' value='" . htmlentities($theme->id) . "'  />
+					<label for='" . htmlentities($theme->id) . "'>" . htmlentities($theme->name) . "</label>
+					<p>" . str_replace("\n", "</p>\n<p>", htmlentities($theme->description)) . "</p>
+					<p>By <a href='" . htmlentities($theme->author_link) . "'>" . htmlentities($theme->author) . "</a> (<a href='" . htmlentities($theme->url) . "'>View CSS</a>, <a href='" . htmlentities($theme->index_url) . "'>View Index</a>)
 				</div>";
 			}
 			$content .= "</div>";
 			
-			exit(page_renderer::render_main("Theme Gallery - $settings->sitename", ""));
+			exit(page_renderer::render_main("Theme Gallery - $settings->sitename", "$content"));
 			
 		});
 		
