diff --git a/assignment-client/src/Agent.cpp b/assignment-client/src/Agent.cpp
index f1bdaaad12..3eb093a5d4 100644
--- a/assignment-client/src/Agent.cpp
+++ b/assignment-client/src/Agent.cpp
@@ -368,7 +368,6 @@ void Agent::executeScript() {
     // give scripts access to the Users object
     _scriptEngine->registerGlobalObject("Users", DependencyManager::get<UsersScriptingInterface>().data());
 
-
     auto player = DependencyManager::get<recording::Deck>();
     connect(player.data(), &recording::Deck::playbackStateChanged, [=] {
         if (player->isPlaying()) {
diff --git a/assignment-client/src/AssignmentClientApp.cpp b/assignment-client/src/AssignmentClientApp.cpp
index b37784cddc..acfbb8571c 100644
--- a/assignment-client/src/AssignmentClientApp.cpp
+++ b/assignment-client/src/AssignmentClientApp.cpp
@@ -11,6 +11,8 @@
 
 #include "AssignmentClientApp.h"
 
+#include <iostream>
+
 #include <QtCore/QCommandLineParser>
 #include <QtCore/QDir>
 #include <QtCore/QStandardPaths>
@@ -42,9 +44,8 @@ AssignmentClientApp::AssignmentClientApp(int argc, char* argv[]) :
     // parse command-line
     QCommandLineParser parser;
     parser.setApplicationDescription("High Fidelity Assignment Client");
-    parser.addHelpOption();
-
     const QCommandLineOption helpOption = parser.addHelpOption();
+    const QCommandLineOption versionOption = parser.addVersionOption();
 
     QString typeDescription = "run single assignment client of given type\n# | Type\n============================";
     for (Assignment::Type type = Assignment::FirstType;
@@ -97,11 +98,16 @@ AssignmentClientApp::AssignmentClientApp(int argc, char* argv[]) :
     parser.addOption(parentPIDOption);
 
     if (!parser.parse(QCoreApplication::arguments())) {
-        qCritical() << parser.errorText() << endl;
+        std::cout << parser.errorText().toStdString() << std::endl; // Avoid Qt log spam
         parser.showHelp();
         Q_UNREACHABLE();
     }
 
+    if (parser.isSet(versionOption)) {
+        parser.showVersion();
+        Q_UNREACHABLE();
+    }
+
     if (parser.isSet(helpOption)) {
         parser.showHelp();
         Q_UNREACHABLE();
diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp
index 93db267617..b7abe9e03f 100644
--- a/domain-server/src/DomainServer.cpp
+++ b/domain-server/src/DomainServer.cpp
@@ -13,6 +13,7 @@
 
 #include <memory>
 #include <random>
+#include <iostream>
 
 #include <QDir>
 #include <QJsonDocument>
@@ -69,6 +70,14 @@ const QString ICE_SERVER_DEFAULT_HOSTNAME = "ice.highfidelity.com";
 const QString ICE_SERVER_DEFAULT_HOSTNAME = "dev-ice.highfidelity.com";
 #endif
 
+QString DomainServer::_iceServerAddr { ICE_SERVER_DEFAULT_HOSTNAME };
+int DomainServer::_iceServerPort { ICE_SERVER_DEFAULT_PORT };
+bool DomainServer::_overrideDomainID { false };
+QUuid DomainServer::_overridingDomainID;
+bool DomainServer::_getTempName { false };
+QString DomainServer::_userConfigFilename;
+int DomainServer::_parentPID { -1 };
+
 bool DomainServer::forwardMetaverseAPIRequest(HTTPConnection* connection,
                                               const QString& metaversePath,
                                               const QString& requestSubobjectKey,
@@ -148,24 +157,13 @@ bool DomainServer::forwardMetaverseAPIRequest(HTTPConnection* connection,
 DomainServer::DomainServer(int argc, char* argv[]) :
     QCoreApplication(argc, argv),
     _gatekeeper(this),
-    _httpManager(QHostAddress::AnyIPv4, DOMAIN_SERVER_HTTP_PORT, QString("%1/resources/web/").arg(QCoreApplication::applicationDirPath()), this),
-    _allAssignments(),
-    _unfulfilledAssignments(),
-    _isUsingDTLS(false),
-    _oauthProviderURL(),
-    _oauthClientID(),
-    _hostname(),
-    _ephemeralACScripts(),
-    _webAuthenticationStateSet(),
-    _cookieSessionHash(),
-    _automaticNetworkingSetting(),
-    _settingsManager(),
-    _iceServerAddr(ICE_SERVER_DEFAULT_HOSTNAME),
-    _iceServerPort(ICE_SERVER_DEFAULT_PORT)
+    _httpManager(QHostAddress::AnyIPv4, DOMAIN_SERVER_HTTP_PORT, QString("%1/resources/web/").arg(QCoreApplication::applicationDirPath()), this)
 {
-    PathUtils::removeTemporaryApplicationDirs();
+    if (_parentPID != -1) {
+        watchParentProcess(_parentPID);
+    }
 
-    parseCommandLine();
+    PathUtils::removeTemporaryApplicationDirs();
 
     DependencyManager::set<tracing::Tracer>();
     DependencyManager::set<StatTracker>();
@@ -185,9 +183,16 @@ DomainServer::DomainServer(int argc, char* argv[]) :
     // (need this since domain-server can restart itself and maintain static variables)
     DependencyManager::set<AccountManager>();
 
-    auto args = arguments();
-
-    _settingsManager.setupConfigMap(args);
+    // load the user config
+    QString userConfigFilename;
+    if (!_userConfigFilename.isEmpty()) {
+        userConfigFilename = _userConfigFilename;
+    } else {
+        // we weren't passed a user config path
+        static const QString USER_CONFIG_FILE_NAME = "config.json";
+        userConfigFilename = PathUtils::getAppDataFilePath(USER_CONFIG_FILE_NAME);
+    }
+    _settingsManager.setupConfigMap(userConfigFilename);
 
     // setup a shutdown event listener to handle SIGTERM or WM_CLOSE for us
 #ifdef _WIN32
@@ -246,8 +251,7 @@ DomainServer::DomainServer(int argc, char* argv[]) :
     }
 
     // check for the temporary name parameter
-    const QString GET_TEMPORARY_NAME_SWITCH = "--get-temp-name";
-    if (args.contains(GET_TEMPORARY_NAME_SWITCH)) {
+    if (_getTempName) {
         getTemporaryName();
     }
 
@@ -316,28 +320,45 @@ DomainServer::DomainServer(int argc, char* argv[]) :
     connect(_contentManager.get(), &DomainContentBackupManager::recoveryCompleted, this, &DomainServer::restart);
 }
 
-void DomainServer::parseCommandLine() {
+void DomainServer::parseCommandLine(int argc, char* argv[]) {
     QCommandLineParser parser;
     parser.setApplicationDescription("High Fidelity Domain Server");
-    parser.addHelpOption();
+    const QCommandLineOption versionOption = parser.addVersionOption();
+    const QCommandLineOption helpOption = parser.addHelpOption();
 
     const QCommandLineOption iceServerAddressOption("i", "ice-server address", "IP:PORT or HOSTNAME:PORT");
     parser.addOption(iceServerAddressOption);
 
-    const QCommandLineOption domainIDOption("d", "domain-server uuid");
+    const QCommandLineOption domainIDOption("d", "domain-server uuid", "uuid");
     parser.addOption(domainIDOption);
 
     const QCommandLineOption getTempNameOption("get-temp-name", "Request a temporary domain-name");
     parser.addOption(getTempNameOption);
 
-    const QCommandLineOption masterConfigOption("master-config", "Deprecated config-file option");
-    parser.addOption(masterConfigOption);
+    const QCommandLineOption userConfigOption("user-config", "Pass user config file pass", "path");
+    parser.addOption(userConfigOption);
 
     const QCommandLineOption parentPIDOption(PARENT_PID_OPTION, "PID of the parent process", "parent-pid");
     parser.addOption(parentPIDOption);
 
-    if (!parser.parse(QCoreApplication::arguments())) {
-        qWarning() << parser.errorText() << endl;
+
+    QStringList arguments;
+    for (int i = 0; i < argc; ++i) {
+        arguments << argv[i];
+    }
+    if (!parser.parse(arguments)) {
+        std::cout << parser.errorText().toStdString() << std::endl; // Avoid Qt log spam
+        QCoreApplication mockApp(argc, argv); // required for call to showHelp()
+        parser.showHelp();
+        Q_UNREACHABLE();
+    }
+
+    if (parser.isSet(versionOption)) {
+        parser.showVersion();
+        Q_UNREACHABLE();
+    }
+    if (parser.isSet(helpOption)) {
+        QCoreApplication mockApp(argc, argv); // required for call to showHelp()
         parser.showHelp();
         Q_UNREACHABLE();
     }
@@ -354,7 +375,7 @@ void DomainServer::parseCommandLine() {
 
         if (_iceServerAddr.isEmpty()) {
             qWarning() << "Could not parse an IP address and port combination from" << hostnamePortString;
-            QMetaObject::invokeMethod(this, "quit", Qt::QueuedConnection);
+            ::exit(0);
         }
     }
 
@@ -364,14 +385,21 @@ void DomainServer::parseCommandLine() {
         qDebug() << "domain-server ID is" << _overridingDomainID;
     }
 
+    if (parser.isSet(getTempNameOption)) {
+        _getTempName = true;
+    }
+
+    if (parser.isSet(userConfigOption)) {
+        _userConfigFilename = parser.value(userConfigOption);
+    }
 
     if (parser.isSet(parentPIDOption)) {
         bool ok = false;
         int parentPID = parser.value(parentPIDOption).toInt(&ok);
 
         if (ok) {
-            qDebug() << "Parent process PID is" << parentPID;
-            watchParentProcess(parentPID);
+            _parentPID = parentPID;
+            qDebug() << "Parent process PID is" << _parentPID;
         }
     }
 }
diff --git a/domain-server/src/DomainServer.h b/domain-server/src/DomainServer.h
index c69267f379..e2bddc1aa5 100644
--- a/domain-server/src/DomainServer.h
+++ b/domain-server/src/DomainServer.h
@@ -59,6 +59,8 @@ public:
     DomainServer(int argc, char* argv[]);
     ~DomainServer();
 
+    static void parseCommandLine(int argc, char* argv[]);
+
     enum DomainType {
         NonMetaverse,
         MetaverseDomain,
@@ -138,7 +140,6 @@ signals:
 
 private:
     QUuid getID();
-    void parseCommandLine();
 
     QString getContentBackupDir();
     QString getEntitiesDirPath();
@@ -228,7 +229,7 @@ private:
     QQueue<SharedAssignmentPointer> _unfulfilledAssignments;
     TransactionHash _pendingAssignmentCredits;
 
-    bool _isUsingDTLS;
+    bool _isUsingDTLS { false };
 
     QUrl _oauthProviderURL;
     QString _oauthClientID;
@@ -265,10 +266,13 @@ private:
     friend class DomainGatekeeper;
     friend class DomainMetadata;
 
-    QString _iceServerAddr;
-    int _iceServerPort;
-    bool _overrideDomainID { false }; // should we override the domain-id from settings?
-    QUuid _overridingDomainID { QUuid() }; // what should we override it with?
+    static QString _iceServerAddr;
+    static int _iceServerPort;
+    static bool _overrideDomainID; // should we override the domain-id from settings?
+    static QUuid _overridingDomainID; // what should we override it with?
+    static bool _getTempName;
+    static QString _userConfigFilename;
+    static int _parentPID;
 
     bool _sendICEServerAddressToMetaverseAPIInProgress { false };
     bool _sendICEServerAddressToMetaverseAPIRedo { false };
diff --git a/domain-server/src/DomainServerSettingsManager.cpp b/domain-server/src/DomainServerSettingsManager.cpp
index 2bcaa8899e..780fad15f2 100644
--- a/domain-server/src/DomainServerSettingsManager.cpp
+++ b/domain-server/src/DomainServerSettingsManager.cpp
@@ -191,13 +191,12 @@ void DomainServerSettingsManager::processSettingsRequestPacket(QSharedPointer<Re
     nodeList->sendPacketList(std::move(packetList), message->getSenderSockAddr());
 }
 
-void DomainServerSettingsManager::setupConfigMap(const QStringList& argumentList) {
+void DomainServerSettingsManager::setupConfigMap(const QString& userConfigFilename) {
     // since we're called from the DomainServerSettingsManager constructor, we don't take a write lock here
     // even though we change the underlying config map
 
-    _argumentList = argumentList;
-
-    _configMap.loadConfig(_argumentList);
+    _configMap.setUserConfigFilename(userConfigFilename);
+    _configMap.loadConfig();
 
     static const auto VERSION_SETTINGS_KEYPATH = "version";
     QVariant* versionVariant = _configMap.valueForKeyPath(VERSION_SETTINGS_KEYPATH);
@@ -1736,7 +1735,7 @@ void DomainServerSettingsManager::persistToFile() {
         // failed to write, reload whatever the current config state is
         // with a write lock since we're about to overwrite the config map
         QWriteLocker locker(&_settingsLock);
-        _configMap.loadConfig(_argumentList);
+        _configMap.loadConfig();
     }
 }
 
diff --git a/domain-server/src/DomainServerSettingsManager.h b/domain-server/src/DomainServerSettingsManager.h
index bcd33c2bb0..2020561205 100644
--- a/domain-server/src/DomainServerSettingsManager.h
+++ b/domain-server/src/DomainServerSettingsManager.h
@@ -49,7 +49,7 @@ public:
     DomainServerSettingsManager();
     bool handleAuthenticatedHTTPRequest(HTTPConnection* connection, const QUrl& url);
 
-    void setupConfigMap(const QStringList& argumentList);
+    void setupConfigMap(const QString& userConfigFilename);
 
     // each of the three methods in this group takes a read lock of _settingsLock
     // and cannot be called when the a write lock is held by the same thread
@@ -144,8 +144,6 @@ private slots:
     void processUsernameFromIDRequestPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer sendingNode);
 
 private:
-    QStringList _argumentList;
-
     QJsonArray filteredDescriptionArray(bool isContentSettings);
     void updateSetting(const QString& key, const QJsonValue& newValue, QVariantMap& settingMap,
                        const QJsonObject& settingDescription);
diff --git a/domain-server/src/main.cpp b/domain-server/src/main.cpp
index d7856bf867..7aea9cc3d4 100644
--- a/domain-server/src/main.cpp
+++ b/domain-server/src/main.cpp
@@ -24,6 +24,8 @@
 int main(int argc, char* argv[]) {
     setupHifiApplication(BuildInfo::DOMAIN_SERVER_NAME);
 
+    DomainServer::parseCommandLine(argc, argv);
+
     Setting::init();
 
     int currentExitCode = 0;
diff --git a/interface/src/main.cpp b/interface/src/main.cpp
index c1ba6f0535..3e3c9da148 100644
--- a/interface/src/main.cpp
+++ b/interface/src/main.cpp
@@ -42,6 +42,48 @@ extern "C" {
 int main(int argc, const char* argv[]) {
     setupHifiApplication(BuildInfo::INTERFACE_NAME);
 
+    QStringList arguments;
+    for (int i = 0; i < argc; ++i) {
+        arguments << argv[i];
+    }
+
+    QCommandLineParser parser;
+    parser.setApplicationDescription("High Fidelity Interface");
+    QCommandLineOption versionOption = parser.addVersionOption();
+    QCommandLineOption helpOption = parser.addHelpOption();
+
+    QCommandLineOption urlOption("url", "", "value");
+    QCommandLineOption noUpdaterOption("no-updater", "Do not show auto-updater");
+    QCommandLineOption checkMinSpecOption("checkMinSpec", "Check if machine meets minimum specifications");
+    QCommandLineOption runServerOption("runServer", "Whether to run the server");
+    QCommandLineOption serverContentPathOption("serverContentPath", "Where to find server content", "serverContentPath");
+    QCommandLineOption allowMultipleInstancesOption("allowMultipleInstances", "Allow multiple instances to run");
+    QCommandLineOption overrideAppLocalDataPathOption("cache", "set test cache <dir>", "dir");
+    QCommandLineOption overrideScriptsPathOption(SCRIPTS_SWITCH, "set scripts <path>", "path");
+
+    parser.addOption(urlOption);
+    parser.addOption(noUpdaterOption);
+    parser.addOption(checkMinSpecOption);
+    parser.addOption(runServerOption);
+    parser.addOption(serverContentPathOption);
+    parser.addOption(overrideAppLocalDataPathOption);
+    parser.addOption(overrideScriptsPathOption);
+    parser.addOption(allowMultipleInstancesOption);
+
+    if (!parser.parse(arguments)) {
+        std::cout << parser.errorText().toStdString() << std::endl; // Avoid Qt log spam
+    }
+
+    if (parser.isSet(versionOption)) {
+        parser.showVersion();
+        Q_UNREACHABLE();
+    }
+    if (parser.isSet(helpOption)) {
+        QCoreApplication mockApp(argc, const_cast<char**>(argv)); // required for call to showHelp()
+        parser.showHelp();
+        Q_UNREACHABLE();
+    }
+
     // Early check for --traceFile argument 
     auto tracer = DependencyManager::set<tracing::Tracer>();
     const char * traceFile = nullptr;
@@ -95,30 +137,6 @@ int main(int argc, const char* argv[]) {
         qDebug() << "Crash handler started:" << crashHandlerStarted;
     }
 
-    QStringList arguments;
-    for (int i = 0; i < argc; ++i) {
-        arguments << argv[i];
-    }
-
-    QCommandLineParser parser;
-    QCommandLineOption urlOption("url", "", "value");
-    QCommandLineOption noUpdaterOption("no-updater", "Do not show auto-updater");
-    QCommandLineOption checkMinSpecOption("checkMinSpec", "Check if machine meets minimum specifications");
-    QCommandLineOption runServerOption("runServer", "Whether to run the server");
-    QCommandLineOption serverContentPathOption("serverContentPath", "Where to find server content", "serverContentPath");
-    QCommandLineOption allowMultipleInstancesOption("allowMultipleInstances", "Allow multiple instances to run");
-    QCommandLineOption overrideAppLocalDataPathOption("cache", "set test cache <dir>", "dir");
-    QCommandLineOption overrideScriptsPathOption(SCRIPTS_SWITCH, "set scripts <path>", "path");
-    parser.addOption(urlOption);
-    parser.addOption(noUpdaterOption);
-    parser.addOption(checkMinSpecOption);
-    parser.addOption(runServerOption);
-    parser.addOption(serverContentPathOption);
-    parser.addOption(overrideAppLocalDataPathOption);
-    parser.addOption(overrideScriptsPathOption);
-    parser.addOption(allowMultipleInstancesOption);
-    parser.parse(arguments);
-
 
     const QString& applicationName = getInterfaceSharedMemoryName();
     bool instanceMightBeRunning = true;
diff --git a/libraries/gpu/src/gpu/Texture.cpp b/libraries/gpu/src/gpu/Texture.cpp
index 34262b0cd9..2d038ca3ba 100755
--- a/libraries/gpu/src/gpu/Texture.cpp
+++ b/libraries/gpu/src/gpu/Texture.cpp
@@ -43,14 +43,6 @@ bool recommendedSparseTextures = (QThread::idealThreadCount() >= MIN_CORES_FOR_I
 
 std::atomic<bool> Texture::_enableSparseTextures { recommendedSparseTextures };
 
-struct ReportTextureState {
-    ReportTextureState() {
-        qCDebug(gpulogging) << "[TEXTURE TRANSFER SUPPORT]"
-            << "\n\tidealThreadCount:" << QThread::idealThreadCount()
-            << "\n\tRECOMMENDED enableSparseTextures:" << recommendedSparseTextures;
-    }
-} report;
-
 void Texture::setEnableSparseTextures(bool enabled) {
 #ifdef Q_OS_WIN
     qCDebug(gpulogging) << "[TEXTURE TRANSFER SUPPORT] SETTING - Enable Sparse Textures and Dynamic Texture Management:" << enabled;
diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp
index 11f61cd368..105742db35 100644
--- a/libraries/script-engine/src/ScriptEngine.cpp
+++ b/libraries/script-engine/src/ScriptEngine.cpp
@@ -74,6 +74,7 @@
 #include "WebSocketClass.h"
 #include "RecordingScriptingInterface.h"
 #include "ScriptEngines.h"
+#include "StackTestScriptingInterface.h"
 #include "ModelScriptingInterface.h"
 
 
@@ -762,6 +763,10 @@ void ScriptEngine::init() {
     qScriptRegisterMetaType(this, meshesToScriptValue, meshesFromScriptValue);
 
     registerGlobalObject("UserActivityLogger", DependencyManager::get<UserActivityLoggerScriptingInterface>().data());
+
+#if DEV_BUILD || PR_BUILD
+    registerGlobalObject("StackTest", new StackTestScriptingInterface(this));
+#endif
 }
 
 void ScriptEngine::registerValue(const QString& valueName, QScriptValue value) {
diff --git a/libraries/script-engine/src/StackTestScriptingInterface.cpp b/libraries/script-engine/src/StackTestScriptingInterface.cpp
new file mode 100644
index 0000000000..432c1807f0
--- /dev/null
+++ b/libraries/script-engine/src/StackTestScriptingInterface.cpp
@@ -0,0 +1,31 @@
+//
+//  StackTestScriptingInterface.cpp
+//  libraries/script-engine/src
+//
+//  Created by Clement Brisset on 7/25/18.
+//  Copyright 2018 High Fidelity, Inc.
+//
+//  Distributed under the Apache License, Version 2.0.
+//  See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
+//
+
+#include "StackTestScriptingInterface.h"
+
+#include <QLoggingCategory>
+#include <QCoreApplication>
+
+Q_DECLARE_LOGGING_CATEGORY(stackTest)
+Q_LOGGING_CATEGORY(stackTest, "hifi.tools.stack-test")
+
+void StackTestScriptingInterface::pass(QString message) {
+    qCInfo(stackTest) << "PASS" << qPrintable(message);
+}
+
+void StackTestScriptingInterface::fail(QString message) {
+    qCInfo(stackTest) << "FAIL" << qPrintable(message);
+}
+
+void StackTestScriptingInterface::exit(QString message) {
+    qCInfo(stackTest) << "COMPLETE" << qPrintable(message);
+    qApp->exit();
+}
diff --git a/libraries/script-engine/src/StackTestScriptingInterface.h b/libraries/script-engine/src/StackTestScriptingInterface.h
new file mode 100644
index 0000000000..74e3290ddb
--- /dev/null
+++ b/libraries/script-engine/src/StackTestScriptingInterface.h
@@ -0,0 +1,31 @@
+//
+//  StackTestScriptingInterface.h
+//  libraries/script-engine/src
+//
+//  Created by Clement Brisset on 7/25/18.
+//  Copyright 2018 High Fidelity, Inc.
+//
+//  Distributed under the Apache License, Version 2.0.
+//  See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
+//
+
+#pragma once
+
+#ifndef hifi_StackTestScriptingInterface_h
+#define hifi_StackTestScriptingInterface_h
+
+#include <QObject>
+
+class StackTestScriptingInterface : public QObject {
+    Q_OBJECT
+
+public:
+    StackTestScriptingInterface(QObject* parent = nullptr) : QObject(parent) {}
+
+    Q_INVOKABLE void pass(QString message = QString());
+    Q_INVOKABLE void fail(QString message = QString());
+
+    Q_INVOKABLE void exit(QString message = QString());
+};
+
+#endif // hifi_StackTestScriptingInterface_h
diff --git a/libraries/shared/src/HifiConfigVariantMap.cpp b/libraries/shared/src/HifiConfigVariantMap.cpp
index 59f660feee..91ec056f1a 100644
--- a/libraries/shared/src/HifiConfigVariantMap.cpp
+++ b/libraries/shared/src/HifiConfigVariantMap.cpp
@@ -91,58 +91,7 @@ QVariantMap HifiConfigVariantMap::mergeCLParametersWithJSONConfig(const QStringL
     return mergedMap;
 }
 
-void HifiConfigVariantMap::loadConfig(const QStringList& argumentList) {
-    // load the user config
-    const QString USER_CONFIG_FILE_OPTION = "--user-config";
-    static const QString USER_CONFIG_FILE_NAME = "config.json";
-
-    int userConfigIndex = argumentList.indexOf(USER_CONFIG_FILE_OPTION);
-    if (userConfigIndex != -1) {
-        _userConfigFilename = argumentList[userConfigIndex + 1];
-    } else {
-        // we weren't passed a user config path
-        _userConfigFilename = PathUtils::getAppDataFilePath(USER_CONFIG_FILE_NAME);
-
-        // as of 1/19/2016 this path was moved so we attempt a migration for first run post migration here
-
-        // figure out what the old path was
-
-        // if our build version is "dev" we should migrate from a different organization folder
-
-        auto oldConfigFilename = QString("%1/%2/%3/%4").arg(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation),
-                                                            QCoreApplication::organizationName(),
-                                                            QCoreApplication::applicationName(),
-                                                            USER_CONFIG_FILE_NAME);
-
-        oldConfigFilename = oldConfigFilename.replace("High Fidelity - dev", "High Fidelity");
-
-
-        // check if there's already a config file at the new path
-        QFile newConfigFile { _userConfigFilename };
-        if (!newConfigFile.exists()) {
-
-            QFile oldConfigFile { oldConfigFilename };
-
-            if (oldConfigFile.exists()) {
-                // we have the old file and not the new file - time to copy the file
-
-                // make the destination directory if it doesn't exist
-                auto dataDirectory = PathUtils::getAppDataPath();
-                if (QDir().mkpath(dataDirectory)) {
-                    if (oldConfigFile.copy(_userConfigFilename)) {
-                        qCDebug(shared) << "Migrated config file from" << oldConfigFilename << "to" << _userConfigFilename;
-                    } else {
-                        qCWarning(shared) << "Could not copy previous config file from" << oldConfigFilename << "to" << _userConfigFilename
-                        << "- please try to copy manually and restart.";
-                    }
-                } else {
-                    qCWarning(shared) << "Could not create application data directory" << dataDirectory << "- unable to migrate previous config file.";
-                }
-            }
-        }
-        
-    }
-    
+void HifiConfigVariantMap::loadConfig() {
     loadMapFromJSONFile(_userConfig, _userConfigFilename);
 }
 
diff --git a/libraries/shared/src/HifiConfigVariantMap.h b/libraries/shared/src/HifiConfigVariantMap.h
index ee248ec3d2..5725ae8f34 100644
--- a/libraries/shared/src/HifiConfigVariantMap.h
+++ b/libraries/shared/src/HifiConfigVariantMap.h
@@ -21,7 +21,7 @@ class HifiConfigVariantMap {
 public:
     static QVariantMap mergeCLParametersWithJSONConfig(const QStringList& argumentList);
 
-    void loadConfig(const QStringList& argumentList);
+    void loadConfig();
 
     const QVariant value(const QString& key) const { return _userConfig.value(key); }
     QVariant* valueForKeyPath(const QString& keyPath, bool shouldCreateIfMissing = false)
@@ -30,6 +30,7 @@ public:
     QVariantMap& getConfig() { return _userConfig; }
 
     const QString& getUserConfigFilename() const { return _userConfigFilename; }
+    void setUserConfigFilename(const QString& filename) { _userConfigFilename = filename; }
 private:
     QString _userConfigFilename;
 
diff --git a/libraries/shared/src/LogHandler.cpp b/libraries/shared/src/LogHandler.cpp
index 45cf01510d..65651373be 100644
--- a/libraries/shared/src/LogHandler.cpp
+++ b/libraries/shared/src/LogHandler.cpp
@@ -33,17 +33,12 @@ LogHandler& LogHandler::getInstance() {
 }
 
 LogHandler::LogHandler() {
-    // when the log handler is first setup we should print our timezone
-    QString timezoneString = "Time zone: " + QDateTime::currentDateTime().toString("t");
-    printMessage(LogMsgType::LogInfo, QMessageLogContext(), timezoneString);
-
     // make sure we setup the repeated message flusher, but do it on the LogHandler thread	
     QMetaObject::invokeMethod(this, "setupRepeatedMessageFlusher");
 }
 
 LogHandler::~LogHandler() {
     flushRepeatedMessages();
-    printMessage(LogMsgType::LogDebug, QMessageLogContext(), "LogHandler shutdown.");
 }
 
 const char* stringForLogType(LogMsgType msgType) {
diff --git a/libraries/shared/src/PathUtils.cpp b/libraries/shared/src/PathUtils.cpp
index 7fc94db6af..e66121f159 100644
--- a/libraries/shared/src/PathUtils.cpp
+++ b/libraries/shared/src/PathUtils.cpp
@@ -90,7 +90,6 @@ const QString& PathUtils::resourcesPath() {
             staticResourcePath = projectRootPath() + "/interface/resources/";
         }
 #endif
-        qDebug() << "Resource path resolved to " << staticResourcePath;
     });
     return staticResourcePath;
 }
@@ -105,7 +104,6 @@ const QString& PathUtils::resourcesUrl() {
             staticResourcePath = QUrl::fromLocalFile(projectRootPath() + "/interface/resources/").toString();
         }
 #endif
-        qDebug() << "Resource url resolved to " << staticResourcePath;
     });
     return staticResourcePath;
 }