diff --git a/BuildParams b/BuildParams
index c8edfeaa2fad6a9fa16e9319921b914d9e5ccc09..547a591310f3da44e7517463fb9c29bd89b37a4d 100644
--- a/BuildParams
+++ b/BuildParams
@@ -21,50 +21,29 @@ email_status_this_is_os = true
 # Limit extent of codeticket updates to revisions after...
 codeticket_since = 3.3.0-release
 
-# ========================================
-# Viewer Development
-# ========================================
-
 # Report changes since...
 viewer-development.show_changes_since = last_sprint
 
 # Build Settings
-viewer-development_coverity.coverity_product = viewer
-viewer-development_coverity.run_tests = false
 viewer-development.build_debug_release_separately = true
 
 # Notifications - to configure email notices, add a setting like this:
 # <username>_<reponame>.email = <email-address>
 
-
-# =================================================================
-# Canonical viewer integration builds - Oz Linden
-# =================================================================
-integration_viewer-development.viewer_channel = "Second Life Development"
-integration_viewer-development.login_channel = "Second Life Development"
-integration_viewer-development.build_viewer_update_version_manager = false
-integration_viewer-development.email = viewer-development-builds@lists.secondlife.com
-integration_viewer-development.build_enforce_coding_policy = false
-integration_viewer-development.codeticket_add_context = false
-
-viewer-beta.viewer_channel = "Second Life Beta Viewer"
-viewer-beta.login_channel = "Second Life Beta Viewer"
-viewer-beta.build_debug_release_separately = true
-viewer-beta.build_viewer_update_version_manager = true
-viewer-beta.codeticket_add_context = false
+# Example of how to build a Project Beta for the Bingo Project
+#bingo-beta.viewer_channel = "Second Life Beta Bingo"
+# Example of how to build a Project Integration build for the Bingo Project
+#bingo-beta.viewer_channel = "Second Life Project Bingo"
 
 viewer-release.viewer_channel = "Second Life Release"
-viewer-release.login_channel = "Second Life Release"
 viewer-release.build_debug_release_separately = true
 viewer-release.build_viewer_update_version_manager = true
 viewer-release.codeticket_add_context = false
 
-
 # ========================================
 # mesh-development
 # ========================================
 mesh-development.viewer_channel = "Project Viewer - Mesh"
-mesh-development.login_channel = "Project Viewer - Mesh"
 mesh-development.viewer_grid = aditi
 mesh-development.build_debug_release_separately = true
 mesh-development.build_CYGWIN_Debug = false
@@ -74,7 +53,6 @@ mesh-development.build_viewer_update_version_manager = false
 # mesh-development-release-1-candidate
 # ========================================
 mesh-development-release-1-candidate.viewer_channel = "Project Viewer - Mesh"
-mesh-development-release-1-candidate.login_channel = "Project Viewer - Mesh"
 mesh-development-release-1-candidate.viewer_grid = agni
 mesh-development-release-1-candidate.build_debug_release_separately = true
 mesh-development-release-1-candidate.build_CYGWIN_Debug = false
@@ -84,7 +62,6 @@ mesh-development-release-1-candidate.build_viewer_update_version_manager = false
 # mesh-development-rc
 # ========================================
 mesh-development-rc.viewer_channel = "Project Viewer - Mesh"
-mesh-development-rc.login_channel = "Project Viewer - Mesh"
 mesh-development-rc.viewer_grid = agni
 mesh-development-rc.build_debug_release_separately = true
 mesh-development-rc.build_CYGWIN_Debug = false
@@ -94,7 +71,6 @@ mesh-development-rc.build_viewer_update_version_manager = false
 # mesh-asset-deprecation
 # ========================================
 mesh-asset-deprecation.viewer_channel = "Project Viewer - Mesh Asset Deprecation"
-mesh-asset-deprecation.login_channel = "Project Viewer - Mesh Asset Deprecation"
 mesh-asset-deprecation.viewer_grid = aditi
 mesh-asset-deprecation.build_debug_release_separately = true
 mesh-asset-deprecation.build_CYGWIN_Debug = false
@@ -112,7 +88,6 @@ viewer-mesh.build_viewer_update_version_manager = false
 viewer-mesh.build_Debug = false
 viewer-mesh.build_RelWithDebInfo = false
 viewer-mesh.viewer_channel = "Project Viewer - Mesh"
-viewer-mesh.login_channel = "Project Viewer - Mesh"
 viewer-mesh.viewer_grid = aditi
 viewer-mesh.email = shining@lists.lindenlab.com
 
@@ -121,7 +96,6 @@ viewer-mesh.email = shining@lists.lindenlab.com
 # ========================================
 
 viewer-pathfinding.viewer_channel = "Project Viewer - Pathfinding"
-viewer-pathfinding.login_channel = "Project Viewer - Pathfinding"
 viewer-pathfinding.viewer_grid = agni
 viewer-pathfinding.build_debug_release_separately = true
 viewer-pathfinding.build_CYGWIN_Debug = false
@@ -131,14 +105,12 @@ viewer-pathfinding.build_viewer_update_version_manager = false
 # asset delivery 2010 projects
 # =================================================================
 viewer-asset-delivery.viewer_channel = "Second Life Development"
-viewer-asset-delivery.login_channel = "Second Life Development"
 viewer-asset-delivery.build_viewer_update_version_manager = false
 viewer-asset-delivery.email = monty@lindenlab.com
 viewer-asset-delivery.build_server = false
 viewer-asset-delivery.build_server_tests = false
 
 viewer-asset-delivery-metrics.viewer_channel = "Second Life Development"
-viewer-asset-delivery-metrics.login_channel = "Second Life Development"
 viewer-asset-delivery-metrics.build_viewer_update_version_manager = false
 viewer-asset-delivery-metrics.email = monty@lindenlab.com
 viewer-asset-delivery-metrics.build_server = false
@@ -155,34 +127,29 @@ simon_viewer-dev-private.email_status_this_is_os = false
 # Vir
 # ========================================
 vir-project-1.viewer_channel = "Second Life Release"
-vir-project-1.login_channel = "Second Life Release"
 
 # ========================================
 # THX-1138 / Runway projects
 # ========================================
 viewer-thx1138-runway-shared.viewer_channel = "Project Viewer - THX-1138 Runway"
-viewer-thx1138-runway-shared.login_channel = "Project Viewer - THX-1138 Runway"
 viewer-thx1138-runway-shared.viewer_grid = uma
 viewer-thx1138-runway-shared.build_debug_release_separately = true
 viewer-thx1138-runway-shared.build_CYGWIN_Debug = false
 viewer-thx1138-runway-shared.build_viewer_update_version_manager = false
 
 viewer-thx1138.viewer_channel = "Project Viewer - THX-1138"
-viewer-thx1138.login_channel = "Project Viewer - THX-1138"
 viewer-thx1138.viewer_grid = uma
 viewer-thx1138.build_debug_release_separately = true
 viewer-thx1138.build_CYGWIN_Debug = false
 viewer-thx1138.build_viewer_update_version_manager = false
 
 runway-merge.viewer_channel = "Project Viewer - Runway Merge"
-runway-merge.login_channel = "Project Viewer - Runway Merge"
 runway-merge.viewer_grid = agni
 runway-merge.build_debug_release_separately = true
 runway-merge.build_CYGWIN_Debug = false
 runway-merge.build_viewer_update_version_manager = false
 
 runway.viewer_channel = "Project Viewer - Runway"
-runway.login_channel = "Project Viewer - Runway"
 runway.viewer_grid = agni
 runway.build_debug_release_separately = true
 runway.build_CYGWIN_Debug = false
diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
index 6c3b7801b998a47cc2a424f1baf861239f875977..296da81e6c44a4bd03dc247e3587ce92533e879b 100644
--- a/indra/cmake/Variables.cmake
+++ b/indra/cmake/Variables.cmake
@@ -142,7 +142,6 @@ set(GRID agni CACHE STRING "Target Grid")
 
 set(VIEWER ON CACHE BOOL "Build Second Life viewer.")
 set(VIEWER_CHANNEL "Second Life Test" CACHE STRING "Viewer Channel Name")
-set(VIEWER_LOGIN_CHANNEL ${VIEWER_CHANNEL} CACHE STRING "Fake login channel for A/B Testing")
 
 if (XCODE_VERSION GREATER 4.2)
   set(ENABLE_SIGNING OFF CACHE BOOL "Enable signing the viewer")
diff --git a/indra/lib/python/indra/util/llmanifest.py b/indra/lib/python/indra/util/llmanifest.py
index eaa94925b15ccedbccbfc424b95452f8d544c9be..25a1b95b9abce8112a4c93ec0afc8aa81092bd98 100644
--- a/indra/lib/python/indra/util/llmanifest.py
+++ b/indra/lib/python/indra/util/llmanifest.py
@@ -85,7 +85,7 @@ def get_default_platform(dummy):
             }[sys.platform]
 
 DEFAULT_SRCTREE = os.path.dirname(sys.argv[0])
-DEFAULT_CHANNEL = 'Second Life Release'
+DEFAULT_CHANNEL = 'Second Life Test'
 
 ARGUMENTS=[
     dict(name='actions',
@@ -119,9 +119,6 @@ def get_default_platform(dummy):
     dict(name='channel',
          description="""The channel to use for updates, packaging, settings name, etc.""",
          default='CHANNEL UNSET'),
-    dict(name='login_channel',
-         description="""The channel to use for login handshake/updates only.""",
-         default=None),
     dict(name='installer_name',
          description=""" The name of the file that the installer should be
         packaged up into. Only used on Linux at the moment.""",
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index dbd6a60a7c024e4d480362b1dc2336b872290639..22bc09d2df19e0ca5849491e69218e95ba787bae 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1319,17 +1319,15 @@ if (WINDOWS)
     # Replace the icons with the appropriate ones for the channel
     # ('test' is the default)
     set(ICON_PATH "test")
+    set(VIEWER_MACOSX_PHASE "d")
     string(TOLOWER ${VIEWER_CHANNEL} channel_lower)
     if(channel_lower MATCHES "^second life release")
         set(ICON_PATH "release")
         set(VIEWER_MACOSX_PHASE "f")
-    elseif(channel_lower MATCHES "^second life beta viewer")
+    elseif(channel_lower MATCHES "^second life beta")
         set(ICON_PATH "beta")
         set(VIEWER_MACOSX_PHASE "b")
-    elseif(channel_lower MATCHES "^second life development")
-        set(ICON_PATH "development")
-        set(VIEWER_MACOSX_PHASE "d")
-    elseif(channel_lower MATCHES "project")
+    elseif(channel_lower MATCHES "^second life project")
         set(ICON_PATH "project")
         set(VIEWER_MACOSX_PHASE "a")
     endif()
@@ -1785,7 +1783,6 @@ if (WINDOWS)
           --configuration=${CMAKE_CFG_INTDIR}
           --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}
           --grid=${GRID}
-          --login_channel=${VIEWER_LOGIN_CHANNEL}
           --source=${CMAKE_CURRENT_SOURCE_DIR}
           --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/touched.bat
         DEPENDS
@@ -1912,7 +1909,6 @@ if (LINUX)
         --dest=${CMAKE_CURRENT_BINARY_DIR}/packaged
         --grid=${GRID}
         --installer_name=${product}
-        --login_channel=${VIEWER_LOGIN_CHANNEL}
         --source=${CMAKE_CURRENT_SOURCE_DIR}
         --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.touched
       DEPENDS
@@ -2029,7 +2025,6 @@ if (DARWIN)
           --grid=${GRID}
           --channel=${VIEWER_CHANNEL}
           --versionfile=${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt
-          --login_channel=${VIEWER_LOGIN_CHANNEL}
           --source=${CMAKE_CURRENT_SOURCE_DIR}
           --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.touched
           ${SIGNING_SETTING}
diff --git a/indra/newview/icons/development/secondlife.icns b/indra/newview/icons/development/secondlife.icns
deleted file mode 100644
index 44f63d384cfdbb99bfb8ced8290f02712d215562..0000000000000000000000000000000000000000
Binary files a/indra/newview/icons/development/secondlife.icns and /dev/null differ
diff --git a/indra/newview/icons/development/secondlife.ico b/indra/newview/icons/development/secondlife.ico
deleted file mode 100644
index b53f23ae582a94eab61a0052b83eecdc1b0b93aa..0000000000000000000000000000000000000000
Binary files a/indra/newview/icons/development/secondlife.ico and /dev/null differ
diff --git a/indra/newview/icons/development/secondlife_128.png b/indra/newview/icons/development/secondlife_128.png
deleted file mode 100644
index 9b9fe656fc981622898a3e5fde160d1554205745..0000000000000000000000000000000000000000
Binary files a/indra/newview/icons/development/secondlife_128.png and /dev/null differ
diff --git a/indra/newview/icons/development/secondlife_16.png b/indra/newview/icons/development/secondlife_16.png
deleted file mode 100644
index 91493a033c93e2e33b889b77dbc1654bc2f64f0c..0000000000000000000000000000000000000000
Binary files a/indra/newview/icons/development/secondlife_16.png and /dev/null differ
diff --git a/indra/newview/icons/development/secondlife_256.BMP b/indra/newview/icons/development/secondlife_256.BMP
deleted file mode 100644
index 174b22319a273d57d22c6a47a7a93038e45dd348..0000000000000000000000000000000000000000
Binary files a/indra/newview/icons/development/secondlife_256.BMP and /dev/null differ
diff --git a/indra/newview/icons/development/secondlife_256.png b/indra/newview/icons/development/secondlife_256.png
deleted file mode 100644
index 29ed40abdcc7ce8cf3eaf35ca21531a44edefd61..0000000000000000000000000000000000000000
Binary files a/indra/newview/icons/development/secondlife_256.png and /dev/null differ
diff --git a/indra/newview/icons/development/secondlife_32.png b/indra/newview/icons/development/secondlife_32.png
deleted file mode 100644
index 3b84f5ec77ffedf7a357560a9b7d6b19c341741c..0000000000000000000000000000000000000000
Binary files a/indra/newview/icons/development/secondlife_32.png and /dev/null differ
diff --git a/indra/newview/icons/development/secondlife_48.png b/indra/newview/icons/development/secondlife_48.png
deleted file mode 100644
index d2636d9d72f47319ab66bbb04fdfa513d578d90f..0000000000000000000000000000000000000000
Binary files a/indra/newview/icons/development/secondlife_48.png and /dev/null differ
diff --git a/indra/newview/icons/development/secondlife_512.png b/indra/newview/icons/development/secondlife_512.png
deleted file mode 100644
index 75f9b231f4303c4c3dc811d6aa86e5e51508bb4e..0000000000000000000000000000000000000000
Binary files a/indra/newview/icons/development/secondlife_512.png and /dev/null differ
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 20f64dbf4bf78480babe0adf6b53cfff0c846045..3897db177f1edde0ff9c911e48ca105a64b04c49 100644
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -160,14 +160,6 @@ def construct(self):
             if not self.path2basename(os.path.join(os.pardir, os.pardir), "summary.json"):
                 print "No summary.json file"
 
-    def login_channel(self):
-        """Channel reported for login and upgrade purposes ONLY;
-        used for A/B testing"""
-        # NOTE: Do not return the normal channel if login_channel
-        # is not specified, as some code may branch depending on
-        # whether or not this is present
-        return self.args.get('login_channel')
-
     def grid(self):
         return self.args['grid']
     def channel(self):
@@ -179,16 +171,23 @@ def channel_oneword(self):
     def channel_lowerword(self):
         return self.channel_oneword().lower()
 
+    def app_name(self):
+        app_suffix='Test'
+        channel_type=self.channel_lowerword()
+        if channel_type == 'release' :
+            app_suffix='Viewer'
+        elif re.match('(beta|project) .*',channel_type) :
+            app_suffix=self.channel_unique()
+        return "Second Life "+app_suffix
+        
     def icon_path(self):
         icon_path="icons/"
         channel_type=self.channel_lowerword()
-        if channel_type == 'release' \
-        or channel_type == 'development' \
-        :
+        if channel_type == 'release' :
             icon_path += channel_type
-        elif channel_type == 'betaviewer' :
+        elif re.match('beta .*',channel_type) :
             icon_path += 'beta'
-        elif re.match('project.*',channel_type) :
+        elif re.match('project .*',channel_type) :
             icon_path += 'project'
         else :
             icon_path += 'test'
@@ -205,14 +204,6 @@ def flags_list(self):
                          "--helperuri http://preview-%(grid)s.secondlife.com/helpers/" %\
                            {'grid':self.grid()}
 
-        # set command line flags for channel
-        channel_flags = ''
-        if self.login_channel() and self.login_channel() != self.channel():
-            # Report a special channel during login, but use default
-            channel_flags = '--channel "%s"' % (self.login_channel())
-        elif not self.default_channel():
-            channel_flags = '--channel "%s"' % self.channel()
-
         # Deal with settings 
         setting_flags = ''
         if not self.default_channel() or not self.default_grid():
@@ -223,7 +214,7 @@ def flags_list(self):
                 setting_flags = '--settings settings_%s_%s.xml'\
                                 % (self.grid(), self.channel_lowerword())
                                                 
-        return " ".join((channel_flags, grid_flags, setting_flags)).strip()
+        return " ".join((grid_flags, setting_flags)).strip()
 
     def extract_names(self,src):
         try:
@@ -883,10 +874,7 @@ def package_finish(self):
 
             # Copy everything in to the mounted .dmg
 
-            if self.default_channel() and not self.default_grid():
-                app_name = "Second Life " + self.args['grid']
-            else:
-                app_name = channel_standin.strip()
+            app_name = self.app_name()
 
             # Hack:
             # Because there is no easy way to coerce the Finder into positioning