diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 9f525d82b94e2345ef29b7ab20f33b23256dbc47..f41505a82df7ceb5d14415916f6d26f7cdfc49a7 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -448,6 +448,7 @@ set(viewer_SOURCE_FILES
     llurlsimstring.cpp
     llurlwhitelist.cpp
     llvectorperfoptions.cpp
+    llversioninfo.cpp
     llviewchildren.cpp
     llviewerassetstorage.cpp
     llviewerassettype.cpp
@@ -497,7 +498,6 @@ set(viewer_SOURCE_FILES
     llviewertextureanim.cpp
     llviewertexturelist.cpp
     llviewerthrottle.cpp
-    llviewerversion.cpp
     llviewervisualparam.cpp
     llviewerwindow.cpp
     llviewerwindowlistener.cpp
@@ -953,6 +953,7 @@ set(viewer_HEADER_FILES
     llurlsimstring.h
     llurlwhitelist.h
     llvectorperfoptions.h
+    llversioninfo.h
     llviewchildren.h
     llviewerassetstorage.h
     llviewerassettype.h
@@ -999,7 +1000,6 @@ set(viewer_HEADER_FILES
     llviewertextureanim.h
     llviewertexturelist.h
     llviewerthrottle.h
-    llviewerversion.h
     llviewervisualparam.h
     llviewerwindow.h
     llviewerwindowlistener.h
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 6bbc1eaa6a9057c18eef536198840e94e85edd29..508badcc6fa77691fe0e5389b893f145ca7f8ef3 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -35,8 +35,7 @@
 #include "llappviewer.h"
 
 // Viewer includes
-#include "llversionviewer.h"
-#include "llviewerversion.h"
+#include "llversioninfo.h"
 #include "llfeaturemanager.h"
 #include "lluictrlfactory.h"
 #include "lltexteditor.h"
@@ -650,7 +649,7 @@ bool LLAppViewer::init()
 	// Build a string representing the current version number.
     gCurrentVersion = llformat("%s %s", 
 							   gSavedSettings.getString("VersionChannelName").c_str(),
-							   llGetViewerVersion().c_str());
+							   LLVersionInfo::getVersion().c_str());
 
 	//////////////////////////////////////////////////////////////////////////////
 	//////////////////////////////////////////////////////////////////////////////
@@ -1871,7 +1870,7 @@ bool LLAppViewer::initConfiguration()
 	gSavedSettings.setString("ClientSettingsFile", 
         gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, getSettingsFilename("Default", "Global")));
 
-	gSavedSettings.setString("VersionChannelName", LL_CHANNEL);
+	gSavedSettings.setString("VersionChannelName", LLVersionInfo::getChannel());
 
 #ifndef	LL_RELEASE_FOR_DOWNLOAD
 	// provide developer build only overrides for these control variables that are not
@@ -2482,10 +2481,10 @@ void LLAppViewer::writeSystemInfo()
 	gDebugInfo["SLLog"] = LLError::logFileName();
 
 	gDebugInfo["ClientInfo"]["Name"] = gSavedSettings.getString("VersionChannelName");
-	gDebugInfo["ClientInfo"]["MajorVersion"] = LL_VERSION_MAJOR;
-	gDebugInfo["ClientInfo"]["MinorVersion"] = LL_VERSION_MINOR;
-	gDebugInfo["ClientInfo"]["PatchVersion"] = LL_VERSION_PATCH;
-	gDebugInfo["ClientInfo"]["BuildVersion"] = LL_VERSION_BUILD;
+	gDebugInfo["ClientInfo"]["MajorVersion"] = LLVersionInfo::getMajor();
+	gDebugInfo["ClientInfo"]["MinorVersion"] = LLVersionInfo::getMinor();
+	gDebugInfo["ClientInfo"]["PatchVersion"] = LLVersionInfo::getPatch();
+	gDebugInfo["ClientInfo"]["BuildVersion"] = LLVersionInfo::getBuild();
 
 	gDebugInfo["CAFilename"] = gDirUtilp->getCAFile();
 
@@ -2519,7 +2518,7 @@ void LLAppViewer::writeSystemInfo()
 	
 	// Dump some debugging info
 	LL_INFOS("SystemInfo") << LLTrans::getString("APP_NAME")
-			<< " version " << llGetViewerShortVersion() << LL_ENDL;
+			<< " version " << LLVersionInfo::getShortVersion() << LL_ENDL;
 
 	// Dump the local time and time zone
 	time_t now;
@@ -2573,10 +2572,10 @@ void LLAppViewer::handleViewerCrash()
 	//to check against no matter what
 	gDebugInfo["ClientInfo"]["Name"] = gSavedSettings.getString("VersionChannelName");
 
-	gDebugInfo["ClientInfo"]["MajorVersion"] = LL_VERSION_MAJOR;
-	gDebugInfo["ClientInfo"]["MinorVersion"] = LL_VERSION_MINOR;
-	gDebugInfo["ClientInfo"]["PatchVersion"] = LL_VERSION_PATCH;
-	gDebugInfo["ClientInfo"]["BuildVersion"] = LL_VERSION_BUILD;
+	gDebugInfo["ClientInfo"]["MajorVersion"] = LLVersionInfo::getMajor();
+	gDebugInfo["ClientInfo"]["MinorVersion"] = LLVersionInfo::getMinor();
+	gDebugInfo["ClientInfo"]["PatchVersion"] = LLVersionInfo::getPatch();
+	gDebugInfo["ClientInfo"]["BuildVersion"] = LLVersionInfo::getBuild();
 
 	LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
 	if ( parcel && parcel->getMusicURL()[0])
@@ -4150,10 +4149,10 @@ void LLAppViewer::handleLoginComplete()
 	// Store some data to DebugInfo in case of a freeze.
 	gDebugInfo["ClientInfo"]["Name"] = gSavedSettings.getString("VersionChannelName");
 
-	gDebugInfo["ClientInfo"]["MajorVersion"] = LL_VERSION_MAJOR;
-	gDebugInfo["ClientInfo"]["MinorVersion"] = LL_VERSION_MINOR;
-	gDebugInfo["ClientInfo"]["PatchVersion"] = LL_VERSION_PATCH;
-	gDebugInfo["ClientInfo"]["BuildVersion"] = LL_VERSION_BUILD;
+	gDebugInfo["ClientInfo"]["MajorVersion"] = LLVersionInfo::getMajor();
+	gDebugInfo["ClientInfo"]["MinorVersion"] = LLVersionInfo::getMinor();
+	gDebugInfo["ClientInfo"]["PatchVersion"] = LLVersionInfo::getPatch();
+	gDebugInfo["ClientInfo"]["BuildVersion"] = LLVersionInfo::getBuild();
 
 	LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
 	if ( parcel && parcel->getMusicURL()[0])
diff --git a/indra/newview/llcurrencyuimanager.cpp b/indra/newview/llcurrencyuimanager.cpp
index 544711a86273b595897335d358ca057bbab9b630..00c05445e1a632276e4d5e0bc4243e625e7a1866 100644
--- a/indra/newview/llcurrencyuimanager.cpp
+++ b/indra/newview/llcurrencyuimanager.cpp
@@ -36,7 +36,7 @@
 #include "lltextbox.h"
 #include "lllineeditor.h"
 #include "llviewercontrol.h"
-#include "llversionviewer.h"
+#include "llversioninfo.h"
 
 #include "llcurrencyuimanager.h"
 
@@ -170,10 +170,10 @@ void LLCurrencyUIManager::Impl::updateCurrencyInfo()
 		gAgent.getSecureSessionID().asString());
 	keywordArgs.appendInt("currencyBuy", mUserCurrencyBuy);
 	keywordArgs.appendString("viewerChannel", gSavedSettings.getString("VersionChannelName"));
-	keywordArgs.appendInt("viewerMajorVersion", LL_VERSION_MAJOR);
-	keywordArgs.appendInt("viewerMinorVersion", LL_VERSION_MINOR);
-	keywordArgs.appendInt("viewerPatchVersion", LL_VERSION_PATCH);
-	keywordArgs.appendInt("viewerBuildVersion", LL_VERSION_BUILD);
+	keywordArgs.appendInt("viewerMajorVersion", LLVersionInfo::getMajor());
+	keywordArgs.appendInt("viewerMinorVersion", LLVersionInfo::getMinor());
+	keywordArgs.appendInt("viewerPatchVersion", LLVersionInfo::getPatch());
+	keywordArgs.appendInt("viewerBuildVersion", LLVersionInfo::getBuild());
 	
 	LLXMLRPCValue params = LLXMLRPCValue::createArray();
 	params.append(keywordArgs);
@@ -244,10 +244,10 @@ void LLCurrencyUIManager::Impl::startCurrencyBuy(const std::string& password)
 		keywordArgs.appendString("password", password);
 	}
 	keywordArgs.appendString("viewerChannel", gSavedSettings.getString("VersionChannelName"));
-	keywordArgs.appendInt("viewerMajorVersion", LL_VERSION_MAJOR);
-	keywordArgs.appendInt("viewerMinorVersion", LL_VERSION_MINOR);
-	keywordArgs.appendInt("viewerPatchVersion", LL_VERSION_PATCH);
-	keywordArgs.appendInt("viewerBuildVersion", LL_VERSION_BUILD);
+	keywordArgs.appendInt("viewerMajorVersion", LLVersionInfo::getMajor());
+	keywordArgs.appendInt("viewerMinorVersion", LLVersionInfo::getMinor());
+	keywordArgs.appendInt("viewerPatchVersion", LLVersionInfo::getPatch());
+	keywordArgs.appendInt("viewerBuildVersion", LLVersionInfo::getBuild());
 
 	LLXMLRPCValue params = LLXMLRPCValue::createArray();
 	params.append(keywordArgs);
diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp
index b2588cc01b75c30bd1ebd9754c47e00c0ddc4e88..e80499688eb6c49a4c5f2cf55cee8d7bac933032 100644
--- a/indra/newview/llfloaterabout.cpp
+++ b/indra/newview/llfloaterabout.cpp
@@ -45,8 +45,7 @@
 #include "llviewercontrol.h"
 #include "llviewerstats.h"
 #include "llviewerregion.h"
-#include "llversionviewer.h"
-#include "llviewerversion.h"
+#include "llversioninfo.h"
 #include "llweb.h"
 
 // Linden library includes
@@ -212,12 +211,12 @@ LLSD LLFloaterAbout::getInfo()
 	// LLFloaterAbout.
 	LLSD info;
 	LLSD version;
-	version.append(LL_VERSION_MAJOR);
-	version.append(LL_VERSION_MINOR);
-	version.append(LL_VERSION_PATCH);
-	version.append(LL_VERSION_BUILD);
+	version.append(LLVersionInfo::getMajor());
+	version.append(LLVersionInfo::getMinor());
+	version.append(LLVersionInfo::getPatch());
+	version.append(LLVersionInfo::getBuild());
 	info["VIEWER_VERSION"] = version;
-	info["VIEWER_VERSION_STR"] = llGetViewerVersion();
+	info["VIEWER_VERSION_STR"] = LLVersionInfo::getVersion();
 	info["BUILD_DATE"] = __DATE__;
 	info["BUILD_TIME"] = __TIME__;
 	info["CHANNEL"] = gSavedSettings.getString("VersionChannelName");
@@ -285,7 +284,7 @@ static std::string get_viewer_release_notes_url()
 {
 	LLSD query;
 	query["channel"] = gSavedSettings.getString("VersionChannelName");
-	query["version"] = llGetViewerVersion();
+	query["version"] = LLVersionInfo::getVersion();
 
 	std::ostringstream url;
 	url << LLTrans::getString("RELEASE_NOTES_BASE_URL") << LLURI::mapToQueryString(query);
diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp
index be821ad43bbc8e90700d3c2c50c2574d899b1aef..408303a1e0474f142b6b9d9f8057a65ea836244f 100644
--- a/indra/newview/llfloaterreporter.cpp
+++ b/indra/newview/llfloaterreporter.cpp
@@ -75,7 +75,7 @@
 #include "llfloateravatarpicker.h"
 #include "lldir.h"
 #include "llselectmgr.h"
-#include "llviewerversion.h"
+#include "llversioninfo.h"
 #include "lluictrlfactory.h"
 #include "llviewernetwork.h"
 
@@ -608,7 +608,7 @@ LLSD LLFloaterReporter::gatherReport()
 
 	std::ostringstream details;
 
-	details << "V" << llGetViewerVersion() << std::endl << std::endl;		// client version moved to body of email for abuse reports
+	details << "V" << LLVersionInfo::getVersion() << std::endl << std::endl;	// client version moved to body of email for abuse reports
 
 	std::string object_name = childGetText("object_name");
 	if (!object_name.empty() && !mOwnerName.empty())
@@ -626,7 +626,7 @@ LLSD LLFloaterReporter::gatherReport()
 	std::string version_string;
 	version_string = llformat(
 			"%s %s %s %s %s",
-			llGetViewerShortVersion().c_str(),
+			LLVersionInfo::getShortVersion().c_str(),
 			platform,
 			gSysCPU.getFamily().c_str(),
 			gGLManager.mGLRenderer.c_str(),
diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index e73c65e2528c821cfb3cd09aba9805c93be575e8..a729b8c06ffc994088db83c309753d005797b305 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -39,7 +39,6 @@
 #include "llfontgl.h"
 #include "llmd5.h"
 #include "llsecondlifeurls.h"
-#include "llversionviewer.h"
 #include "v4color.h"
 
 #include "llbutton.h"
@@ -57,7 +56,7 @@
 #include "llui.h"
 #include "lluiconstants.h"
 #include "llurlsimstring.h"
-#include "llviewerversion.h"
+#include "llversioninfo.h"
 #include "llviewerhelp.h"
 #include "llviewertexturelist.h"
 #include "llviewermenu.h"			// for handle_preferences()
@@ -247,8 +246,9 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
 	getChild<LLPanel>("login_widgets")->setDefaultBtn("connect_btn");
 
 	std::string channel = gSavedSettings.getString("VersionChannelName");
-	std::string version = llformat("%s (%s)", llGetViewerShortVersion().c_str(),
-								   llGetViewerBuildVersion().c_str());
+	std::string version = llformat("%s (%d)",
+								   LLVersionInfo::getShortVersion().c_str(),
+								   LLVersionInfo::getBuild());
 	LLTextBox* channel_text = getChild<LLTextBox>("channel_text");
 	channel_text->setTextArg("[CHANNEL]", channel); // though not displayed
 	channel_text->setTextArg("[VERSION]", version);
@@ -740,8 +740,9 @@ void LLPanelLogin::loadLoginPage()
 	}
 
 	// Channel and Version
-	std::string version = llformat("%s (%s)", llGetViewerShortVersion().c_str(),
-								   llGetViewerBuildVersion().c_str());
+	std::string version = llformat("%s (%d)",
+								   LLVersionInfo::getShortVersion().c_str(),
+								   LLVersionInfo::getBuild());
 
 	char* curl_channel = curl_escape(gSavedSettings.getString("VersionChannelName").c_str(), 0);
 	char* curl_version = curl_escape(version.c_str(), 0);
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 58df2ffb19f16644404c6accafa84c4f13a7ab94..be0c92a76d89fea0ef872465fce6ffe9036584eb 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -77,7 +77,7 @@
 #include "llsecondlifeurls.h"
 #include "llstring.h"
 #include "lluserrelations.h"
-#include "llversionviewer.h"
+#include "llversioninfo.h"
 #include "llviewercontrol.h"
 #include "llvfs.h"
 #include "llxorcipher.h"	// saved password, MAC address
@@ -542,9 +542,9 @@ bool idle_startup()
 			if(!start_messaging_system(
 				   message_template_path,
 				   port,
-				   LL_VERSION_MAJOR,
-				   LL_VERSION_MINOR,
-				   LL_VERSION_PATCH,
+				   LLVersionInfo::getMajor(),
+				   LLVersionInfo::getMinor(),
+				   LLVersionInfo::getPatch(),
 				   FALSE,
 				   std::string(),
 				   responder,
diff --git a/indra/newview/llversioninfo.cpp b/indra/newview/llversioninfo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..148931d3ad699638f8aaf1c2e161edbca74e0d1f
--- /dev/null
+++ b/indra/newview/llversioninfo.cpp
@@ -0,0 +1,109 @@
+/** 
+ * @file llversioninfo.cpp
+ * @brief Routines to access the viewer version and build information
+ * @author Martin Reddy
+ *
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ * 
+ * Copyright (c) 2009, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+#include "llversioninfo.h"
+
+#include "llversionviewer.h"
+
+//
+// Set the version numbers in indra/llcommon/llversionviewer.h
+//
+
+//static
+S32 LLVersionInfo::getMajor()
+{
+	return LL_VERSION_MAJOR;
+}
+
+//static
+S32 LLVersionInfo::getMinor()
+{
+	return LL_VERSION_MINOR;
+}
+
+//static
+S32 LLVersionInfo::getPatch()
+{
+	return LL_VERSION_PATCH;
+}
+
+//static
+S32 LLVersionInfo::getBuild()
+{
+	return LL_VERSION_BUILD;
+}
+
+//static
+const std::string &LLVersionInfo::getVersion()
+{
+	static std::string version("");
+
+	if (version.empty())
+	{
+		// cache the version string
+		std::ostringstream stream;
+		stream << LL_VERSION_MAJOR << "."
+		       << LL_VERSION_MINOR << "."
+		       << LL_VERSION_PATCH << "."
+		       << LL_VERSION_BUILD;
+		version = stream.str();
+	}
+
+	return version;
+}
+
+//static
+const std::string &LLVersionInfo::getShortVersion()
+{
+	static std::string version("");
+
+	if (version.empty())
+	{
+		// cache the version string
+		std::ostringstream stream;
+		stream << LL_VERSION_MAJOR << "."
+		       << LL_VERSION_MINOR << "."
+		       << LL_VERSION_PATCH;
+		version = stream.str();
+	}
+
+	return version;
+}
+
+//static
+const std::string &LLVersionInfo::getChannel()
+{
+	static std::string name(LL_CHANNEL);
+	return name;
+}
diff --git a/indra/newview/llversioninfo.h b/indra/newview/llversioninfo.h
new file mode 100644
index 0000000000000000000000000000000000000000..b05109e478dcda743ed3f6ab0b2c2b7a588f1623
--- /dev/null
+++ b/indra/newview/llversioninfo.h
@@ -0,0 +1,71 @@
+/** 
+ * @file llversioninfo.h
+ * @brief Routines to access the viewer version and build information
+ * @author Martin Reddy
+ *
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ * 
+ * Copyright (c) 2009, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLVERSIONINFO_H
+#define LL_LLVERSIONINFO_H
+
+#include <string>
+
+///
+/// This API provides version information for the viewer.  This
+/// includes access to the major, minor, patch, and build integer
+/// values, as well as human-readable string representations. All
+/// viewer code that wants to query the current version should 
+/// use this API.
+///
+class LLVersionInfo
+{
+public:
+	/// return the major verion number as an integer
+	static S32 getMajor();
+
+	/// return the minor verion number as an integer
+	static S32 getMinor();
+
+	/// return the patch verion number as an integer
+	static S32 getPatch();
+
+	/// return the build number as an integer
+	static S32 getBuild();
+
+	/// return the full viewer version as a string like "2.0.0.200030"
+	static const std::string &getVersion();
+
+	/// return the viewer version as a string like "2.0.0"
+	static const std::string &getShortVersion();
+
+	/// return the channel name, e.g. "Second Life"
+	static const std::string &getChannel();
+};
+
+#endif
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 5e23a7e1140b478fe1e20fec200d8287b04c4c7a..6339d23fa71cd3168407fd1dbd7eb71fcb620232 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -67,7 +67,6 @@
 #include "lloverlaybar.h"
 #include "llkeyboard.h"
 #include "llerrorcontrol.h"
-#include "llversionviewer.h"
 #include "llappviewer.h"
 #include "llvosurfacepatch.h"
 #include "llvowlsky.h"
diff --git a/indra/newview/llviewerhelp.cpp b/indra/newview/llviewerhelp.cpp
index 056260791c4e5460c24c77c84e3ec888b19dff7f..297c0cc111ad97822dc7f72c3425babf8f99f753 100644
--- a/indra/newview/llviewerhelp.cpp
+++ b/indra/newview/llviewerhelp.cpp
@@ -37,7 +37,6 @@
 #include "llfloaterreg.h"
 #include "llfocusmgr.h"
 #include "llviewercontrol.h"
-#include "llversionviewer.h"
 #include "llappviewer.h"
 #include "lllogininstance.h"
 
diff --git a/indra/newview/llviewerhelputil.cpp b/indra/newview/llviewerhelputil.cpp
index 0a03012af6859dc36611bab2995acf8b70e70283..df08470518a32a66a9648ecacee8beb0ba678294 100644
--- a/indra/newview/llviewerhelputil.cpp
+++ b/indra/newview/llviewerhelputil.cpp
@@ -38,8 +38,7 @@
 #include "llstring.h"
 #include "llsys.h"
 #include "lluri.h"
-#include "llversionviewer.h"
-#include "llviewerversion.h"
+#include "llversioninfo.h"
 
 
 //////////////////////////////////////////////
@@ -78,11 +77,11 @@ std::string LLViewerHelpUtil::buildHelpURL( const std::string &topic,
 	
 	substitution["CHANNEL"] = helpURLEncode(savedSettings.getString("VersionChannelName"));
 
-	substitution["VERSION"] = helpURLEncode(llGetViewerVersion());
-	substitution["VERSION_MAJOR"] = buildHelpVersion(LL_VERSION_MAJOR);
-	substitution["VERSION_MINOR"] = buildHelpVersion(LL_VERSION_MINOR);
-	substitution["VERSION_PATCH"] = buildHelpVersion(LL_VERSION_PATCH);
-	substitution["VERSION_BUILD"] = buildHelpVersion(LL_VERSION_BUILD);
+	substitution["VERSION"] = helpURLEncode(LLVersionInfo::getVersion());
+	substitution["VERSION_MAJOR"] = buildHelpVersion(LLVersionInfo::getMajor());
+	substitution["VERSION_MINOR"] = buildHelpVersion(LLVersionInfo::getMinor());
+	substitution["VERSION_PATCH"] = buildHelpVersion(LLVersionInfo::getPatch());
+	substitution["VERSION_BUILD"] = buildHelpVersion(LLVersionInfo::getBuild());
 	
 	substitution["OS"] = helpURLEncode(osinfo.getOSStringSimple());
 
diff --git a/indra/newview/llviewerhome.cpp b/indra/newview/llviewerhome.cpp
index 4556c3c5b1aec59e220487293abbbc32a3e44e51..58630978c4895a3c23c60cd1b66436ddd9c9ec21 100644
--- a/indra/newview/llviewerhome.cpp
+++ b/indra/newview/llviewerhome.cpp
@@ -38,7 +38,7 @@
 #include "llui.h"
 #include "lluri.h"
 #include "llsd.h"
-#include "llviewerversion.h"
+#include "llversioninfo.h"
 #include "llviewercontrol.h"
 #include "llviewernetwork.h"
 
@@ -49,7 +49,7 @@ std::string LLViewerHome::getHomeURL()
 	// this value from settings.xml and support various substitutions
 
 	LLSD substitution;
-	substitution["VERSION"] = llGetViewerVersion();
+	substitution["VERSION"] = LLVersionInfo::getVersion();
 	substitution["CHANNEL"] = LLURI::escape(gSavedSettings.getString("VersionChannelName"));
 	substitution["LANGUAGE"] = LLUI::getLanguage();
 	substitution["AUTH_KEY"] = LLURI::escape(getAuthKey());
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index a206768d335369a25397becd264c11792b756e8b..952de002720c509500fc818cdc6ba858402cdf51 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -37,11 +37,11 @@
 #include "llviewermediafocus.h"
 #include "llmimetypes.h"
 #include "llmediaentry.h"
+#include "llversioninfo.h"
 #include "llviewercontrol.h"
 #include "llviewertexture.h"
 #include "llviewerparcelmedia.h"
 #include "llviewerparcelmgr.h"
-#include "llviewerversion.h"
 #include "llviewertexturelist.h"
 #include "llvovolume.h"
 #include "llpluginclassmedia.h"
@@ -446,7 +446,7 @@ std::string LLViewerMedia::getCurrentUserAgent()
 	// http://www.mozilla.org/build/revised-user-agent-strings.html
 	std::ostringstream codec;
 	codec << "SecondLife/";
-	codec << llGetViewerVersion();
+	codec << LLVersionInfo::getVersion();
 	codec << " (" << channel << "; " << skin_name << " skin)";
 	llinfos << codec.str() << llendl;
 	
diff --git a/indra/newview/llviewerprecompiledheaders.h b/indra/newview/llviewerprecompiledheaders.h
index 86f59b6e2f8cffc7099747d14516e337a82525ff..6a0ad5757f2579dc6eb84527a86c05f00aea3b8a 100644
--- a/indra/newview/llviewerprecompiledheaders.h
+++ b/indra/newview/llviewerprecompiledheaders.h
@@ -109,7 +109,6 @@
 #include "llthread.h"
 #include "lltimer.h"
 #include "lluuidhashmap.h"
-//#include "llversionviewer.h"
 //#include "processor.h"
 #include "stdenums.h"
 #include "stdtypes.h"
diff --git a/indra/newview/tests/llviewerhelputil_test.cpp b/indra/newview/tests/llviewerhelputil_test.cpp
index 90e3e7a7e0a60a739c60d8c2792f73b9dc781cf1..68743357a6f5636d362db4c7bca200c2026fc953 100644
--- a/indra/newview/tests/llviewerhelputil_test.cpp
+++ b/indra/newview/tests/llviewerhelputil_test.cpp
@@ -36,7 +36,7 @@
 #include "../test/lltut.h"
 
 #include "../llviewerhelputil.h"
-#include "../llviewerversion.h"
+#include "../llversioninfo.h"
 #include "llcontrol.h"
 #include "llsys.h"
 
@@ -76,7 +76,11 @@ std::string LLControlGroup::getString(const std::string& name)
 	return test_stringvec[name];
 }
 
-const std::string &llGetViewerVersion()
+S32 LLVersionInfo::getMajor() { return 2; }
+S32 LLVersionInfo::getMinor() { return 0; }
+S32 LLVersionInfo::getPatch() { return 0; }
+S32 LLVersionInfo::getBuild() { return 200099; }
+const std::string &LLVersionInfo::getVersion()
 {
 	static std::string version = "2.0.0.200099";
 	return version;