diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp
index 358396632c180e6dd4026449d7bb11ee64173500..7d9085a21487614a6e1ec17464f7521f029df303 100644
--- a/indra/newview/llvoicevivox.cpp
+++ b/indra/newview/llvoicevivox.cpp
@@ -1038,8 +1038,6 @@ bool LLVivoxVoiceClient::provisionVoiceAccount()
 
 bool LLVivoxVoiceClient::establishVoiceConnection()
 {
-    LLEventPump &voiceConnectPump = LLEventPumps::instance().obtain("vivoxClientPump");
-
     if (!mVoiceEnabled && mIsInitialized)
     {
         LL_WARNS("Voice") << "cannot establish connection; enabled "<<mVoiceEnabled<<" initialized "<<mIsInitialized<<LL_ENDL;
@@ -1056,7 +1054,7 @@ bool LLVivoxVoiceClient::establishVoiceConnection()
     connectorCreate();
     do
     {
-        result = llcoro::suspendUntilEventOn(voiceConnectPump);
+        result = llcoro::suspendUntilEventOn(mVivoxPump);
         LL_DEBUGS("Voice") << "event=" << ll_stream_notation_sd(result) << LL_ENDL;
 
         if (result.has("connector"))
@@ -1108,7 +1106,6 @@ bool LLVivoxVoiceClient::establishVoiceConnection()
 bool LLVivoxVoiceClient::breakVoiceConnection(bool corowait)
 {
     LL_DEBUGS("Voice") << "( wait=" << corowait << ")" << LL_ENDL;
-    LLEventPump &voicePump = LLEventPumps::instance().obtain("vivoxClientPump");
     bool retval(true);
 
     mShutdownComplete = false;
@@ -1118,7 +1115,7 @@ bool LLVivoxVoiceClient::breakVoiceConnection(bool corowait)
     {
         LLSD timeoutResult(LLSDMap("connector", "timeout"));
 
-        LLSD result = llcoro::suspendUntilEventOnWithTimeout(voicePump, LOGOUT_ATTEMPT_TIMEOUT, timeoutResult);
+        LLSD result = llcoro::suspendUntilEventOnWithTimeout(mVivoxPump, LOGOUT_ATTEMPT_TIMEOUT, timeoutResult);
         LL_DEBUGS("Voice") << "event=" << ll_stream_notation_sd(result) << LL_ENDL;
 
         retval = result.has("connector");
@@ -1140,7 +1137,7 @@ bool LLVivoxVoiceClient::breakVoiceConnection(bool corowait)
             {
                 mConnected = false;
                 LLSD vivoxevent(LLSDMap("connector", LLSD::Boolean(false)));
-                LLEventPumps::instance().post("vivoxClientPump", vivoxevent);
+                mVivoxPump.post(vivoxevent);
             }
             mShutdownComplete = true;
         }
@@ -1157,8 +1154,6 @@ bool LLVivoxVoiceClient::breakVoiceConnection(bool corowait)
 
 bool LLVivoxVoiceClient::loginToVivox()
 {
-    LLEventPump &voicePump = LLEventPumps::instance().obtain("vivoxClientPump");
-
     LLSD timeoutResult(LLSDMap("login", "timeout"));
 
     int loginRetryCount(0);
@@ -1176,7 +1171,7 @@ bool LLVivoxVoiceClient::loginToVivox()
             send_login = false;
         }
         
-        LLSD result = llcoro::suspendUntilEventOnWithTimeout(voicePump, LOGIN_ATTEMPT_TIMEOUT, timeoutResult);
+        LLSD result = llcoro::suspendUntilEventOnWithTimeout(mVivoxPump, LOGIN_ATTEMPT_TIMEOUT, timeoutResult);
         LL_DEBUGS("Voice") << "event=" << ll_stream_notation_sd(result) << LL_ENDL;
 
         if (result.has("login"))
@@ -1259,15 +1254,14 @@ void LLVivoxVoiceClient::logoutOfVivox(bool wait)
 
         if (wait)
         {
-            LLEventPump &voicePump = LLEventPumps::instance().obtain("vivoxClientPump");
             LLSD timeoutResult(LLSDMap("logout", "timeout"));
 
             LL_DEBUGS("Voice")
                 << "waiting for logout response on "
-                << voicePump.getName()
+                << mVivoxPump.getName()
                 << LL_ENDL;
 
-            LLSD result = llcoro::suspendUntilEventOnWithTimeout(voicePump, LOGOUT_ATTEMPT_TIMEOUT, timeoutResult);
+            LLSD result = llcoro::suspendUntilEventOnWithTimeout(mVivoxPump, LOGOUT_ATTEMPT_TIMEOUT, timeoutResult);
 
             LL_DEBUGS("Voice") << "event=" << ll_stream_notation_sd(result) << LL_ENDL;
         }
@@ -1283,8 +1277,6 @@ void LLVivoxVoiceClient::logoutOfVivox(bool wait)
 
 bool LLVivoxVoiceClient::retrieveVoiceFonts()
 {
-    LLEventPump &voicePump = LLEventPumps::instance().obtain("vivoxClientPump");
-
     // Request the set of available voice fonts.
     refreshVoiceEffectLists(true);
 
@@ -1292,7 +1284,7 @@ bool LLVivoxVoiceClient::retrieveVoiceFonts()
     LLSD result;
     do 
     {
-        result = llcoro::suspendUntilEventOn(voicePump);
+        result = llcoro::suspendUntilEventOn(mVivoxPump);
 
         LL_DEBUGS("Voice") << "event=" << ll_stream_notation_sd(result) << LL_ENDL;
         if (result.has("voice_fonts"))
@@ -1408,7 +1400,6 @@ bool LLVivoxVoiceClient::requestParcelVoiceInfo()
 
 bool LLVivoxVoiceClient::addAndJoinSession(const sessionStatePtr_t &nextSession)
 {
-    LLEventPump &voicePump = LLEventPumps::instance().obtain("vivoxClientPump");
     mIsJoiningSession = true;
 
     sessionStatePtr_t oldSession = mAudioSession;
@@ -1497,7 +1488,7 @@ bool LLVivoxVoiceClient::addAndJoinSession(const sessionStatePtr_t &nextSession)
     // We are about to start a whole new session.  Anything that MIGHT still be in our 
     // maildrop is going to be stale and cause us much wailing and gnashing of teeth.  
     // Just flush it all out and start new.
-    voicePump.flush();
+    mVivoxPump.flush();
 
     // It appears that I need to wait for BOTH the SessionGroup.AddSession response and the SessionStateChangeEvent with state 4
     // before continuing from this state.  They can happen in either order, and if I don't wait for both, things can get stuck.
@@ -1505,7 +1496,7 @@ bool LLVivoxVoiceClient::addAndJoinSession(const sessionStatePtr_t &nextSession)
     // This is a cheap way to make sure both have happened before proceeding.
     do
     {
-        result = llcoro::suspendUntilEventOnWithTimeout(voicePump, SESSION_JOIN_TIMEOUT, timeoutResult);
+        result = llcoro::suspendUntilEventOnWithTimeout(mVivoxPump, SESSION_JOIN_TIMEOUT, timeoutResult);
 
         LL_INFOS("Voice") << "event=" << ll_stream_notation_sd(result) << LL_ENDL;
         if (result.has("session"))
@@ -1619,13 +1610,12 @@ bool LLVivoxVoiceClient::terminateAudioSession(bool wait)
 
                 if (wait)
                 {
-                    LLEventPump &voicePump = LLEventPumps::instance().obtain("vivoxClientPump");
                     LLSD result;
                     do
                     {
                         LLSD timeoutResult(LLSDMap("session", "timeout"));
 
-                        result = llcoro::suspendUntilEventOnWithTimeout(voicePump, LOGOUT_ATTEMPT_TIMEOUT, timeoutResult);
+                        result = llcoro::suspendUntilEventOnWithTimeout(mVivoxPump, LOGOUT_ATTEMPT_TIMEOUT, timeoutResult);
 
                         LL_DEBUGS("Voice") << "event=" << ll_stream_notation_sd(result) << LL_ENDL;
                         if (result.has("session"))
@@ -1822,7 +1812,6 @@ bool LLVivoxVoiceClient::runSession(const sessionStatePtr_t &session)
 
     LLSD timeoutEvent(LLSDMap("timeout", LLSD::Boolean(true)));
 
-    LLEventPump &voicePump = LLEventPumps::instance().obtain("vivoxClientPump");
     mIsInChannel = true;
     mMuteMicDirty = true;
 
@@ -1874,7 +1863,7 @@ bool LLVivoxVoiceClient::runSession(const sessionStatePtr_t &session)
         sendLocalAudioUpdates();
 
         mIsInitialized = true;
-        LLSD result = llcoro::suspendUntilEventOnWithTimeout(voicePump, UPDATE_THROTTLE_SECONDS, timeoutEvent);
+        LLSD result = llcoro::suspendUntilEventOnWithTimeout(mVivoxPump, UPDATE_THROTTLE_SECONDS, timeoutEvent);
         if (!result.has("timeout")) // logging the timeout event spams the log
         {
             LL_DEBUGS("Voice") << "event=" << ll_stream_notation_sd(result) << LL_ENDL;
@@ -1945,14 +1934,13 @@ void LLVivoxVoiceClient::sendCaptureAndRenderDevices()
 void LLVivoxVoiceClient::recordingAndPlaybackMode()
 {
     LL_INFOS("Voice") << "In voice capture/playback mode." << LL_ENDL;
-    LLEventPump &voicePump = LLEventPumps::instance().obtain("vivoxClientPump");
 
     while (true)
     {
         LLSD command;
         do
         {
-            command = llcoro::suspendUntilEventOn(voicePump);
+            command = llcoro::suspendUntilEventOn(mVivoxPump);
             LL_DEBUGS("Voice") << "event=" << ll_stream_notation_sd(command) << LL_ENDL;
         } while (!command.has("recplay"));
 
@@ -1985,7 +1973,6 @@ int LLVivoxVoiceClient::voiceRecordBuffer()
 
     LL_INFOS("Voice") << "Recording voice buffer" << LL_ENDL;
 
-    LLEventPump &voicePump = LLEventPumps::instance().obtain("vivoxClientPump");
     LLSD result;
 
     captureBufferRecordStartSendMessage();
@@ -1993,7 +1980,7 @@ int LLVivoxVoiceClient::voiceRecordBuffer()
 
     do
     {
-        result = llcoro::suspendUntilEventOnWithTimeout(voicePump, CAPTURE_BUFFER_MAX_TIME, timeoutResult);
+        result = llcoro::suspendUntilEventOnWithTimeout(mVivoxPump, CAPTURE_BUFFER_MAX_TIME, timeoutResult);
         LL_DEBUGS("Voice") << "event=" << ll_stream_notation_sd(result) << LL_ENDL;
     } while (!result.has("recplay"));
 
@@ -2015,7 +2002,6 @@ int LLVivoxVoiceClient::voicePlaybackBuffer()
 
     LL_INFOS("Voice") << "Playing voice buffer" << LL_ENDL;
 
-    LLEventPump &voicePump = LLEventPumps::instance().obtain("vivoxClientPump");
     LLSD result;
 
     do
@@ -2030,7 +2016,7 @@ int LLVivoxVoiceClient::voicePlaybackBuffer()
             // Update UI, should really use a separate callback.
             notifyVoiceFontObservers();
 
-            result = llcoro::suspendUntilEventOnWithTimeout(voicePump, CAPTURE_BUFFER_MAX_TIME, timeoutResult);
+            result = llcoro::suspendUntilEventOnWithTimeout(mVivoxPump, CAPTURE_BUFFER_MAX_TIME, timeoutResult);
             LL_DEBUGS("Voice") << "event=" << ll_stream_notation_sd(result) << LL_ENDL;
         } while (!result.has("recplay"));
 
@@ -3214,7 +3200,7 @@ void LLVivoxVoiceClient::connectorCreateResponse(int statusCode, std::string &st
         result["connector"] = LLSD::Boolean(false);
     }
 
-    LLEventPumps::instance().post("vivoxClientPump", result);
+    mVivoxPump.post(result);
 }
 
 void LLVivoxVoiceClient::loginResponse(int statusCode, std::string &statusString, std::string &accountHandle, int numberOfAliases)
@@ -3244,7 +3230,7 @@ void LLVivoxVoiceClient::loginResponse(int statusCode, std::string &statusString
         result["login"] = LLSD::String("response_ok");
 	}
 
-    LLEventPumps::instance().post("vivoxClientPump", result);
+    mVivoxPump.post(result);
 
 }
 
@@ -3270,7 +3256,7 @@ void LLVivoxVoiceClient::sessionCreateResponse(std::string &requestId, int statu
                         ("session", "failed")
                         ("reason", LLSD::Integer(statusCode)));
 
-                LLEventPumps::instance().post("vivoxClientPump", vivoxevent);
+                mVivoxPump.post(vivoxevent);
             }
 			else
 			{
@@ -3288,7 +3274,7 @@ void LLVivoxVoiceClient::sessionCreateResponse(std::string &requestId, int statu
         LLSD vivoxevent(LLSDMap("handle", LLSD::String(sessionHandle))
                 ("session", "created"));
 
-        LLEventPumps::instance().post("vivoxClientPump", vivoxevent);
+        mVivoxPump.post(vivoxevent);
 	}
 }
 
@@ -3313,7 +3299,7 @@ void LLVivoxVoiceClient::sessionGroupAddSessionResponse(std::string &requestId,
                 LLSD vivoxevent(LLSDMap("handle", LLSD::String(sessionHandle))
                     ("session", "failed"));
 
-                LLEventPumps::instance().post("vivoxClientPump", vivoxevent);
+                mVivoxPump.post(vivoxevent);
 			}
 			else
 			{
@@ -3332,7 +3318,7 @@ void LLVivoxVoiceClient::sessionGroupAddSessionResponse(std::string &requestId,
         LLSD vivoxevent(LLSDMap("handle", LLSD::String(sessionHandle))
             ("session", "added"));
 
-        LLEventPumps::instance().post("vivoxClientPump", vivoxevent);
+        mVivoxPump.post(vivoxevent);
 
 	}
 }
@@ -3375,7 +3361,7 @@ void LLVivoxVoiceClient::logoutResponse(int statusCode, std::string &statusStrin
 	}
     LLSD vivoxevent(LLSDMap("logout", LLSD::Boolean(true)));
 
-    LLEventPumps::instance().post("vivoxClientPump", vivoxevent);
+    mVivoxPump.post(vivoxevent);
 }
 
 void LLVivoxVoiceClient::connectorShutdownResponse(int statusCode, std::string &statusString)
@@ -3391,7 +3377,7 @@ void LLVivoxVoiceClient::connectorShutdownResponse(int statusCode, std::string &
 	
     LLSD vivoxevent(LLSDMap("connector", LLSD::Boolean(false)));
 
-    LLEventPumps::instance().post("vivoxClientPump", vivoxevent);
+    mVivoxPump.post(vivoxevent);
 }
 
 void LLVivoxVoiceClient::sessionAddedEvent(
@@ -3500,7 +3486,7 @@ void LLVivoxVoiceClient::joinedAudioSession(const sessionStatePtr_t &session)
         LLSD vivoxevent(LLSDMap("handle", LLSD::String(session->mHandle))
                 ("session", "joined"));
 
-        LLEventPumps::instance().post("vivoxClientPump", vivoxevent);
+        mVivoxPump.post(vivoxevent);
 
 		// Add the current user as a participant here.
         participantStatePtr_t participant(session->addParticipant(sipURIFromName(mAccountName)));
@@ -3644,7 +3630,7 @@ void LLVivoxVoiceClient::leftAudioSession(const sessionStatePtr_t &session)
         LLSD vivoxevent(LLSDMap("handle", LLSD::String(session->mHandle))
             ("session", "removed"));
 
-        LLEventPumps::instance().post("vivoxClientPump", vivoxevent);
+        mVivoxPump.post(vivoxevent);
     }
 }
 
@@ -3672,7 +3658,7 @@ void LLVivoxVoiceClient::accountLoginStateChangeEvent(
 		case 1:
             levent["login"] = LLSD::String("account_login");
 
-            LLEventPumps::instance().post("vivoxClientPump", levent);
+            mVivoxPump.post(levent);
             break;
         case 2:
             break;
@@ -3680,7 +3666,7 @@ void LLVivoxVoiceClient::accountLoginStateChangeEvent(
         case 3:
             levent["login"] = LLSD::String("account_loggingOut");
 
-            LLEventPumps::instance().post("vivoxClientPump", levent);
+            mVivoxPump.post(levent);
             break;
 
         case 4:
@@ -3693,7 +3679,7 @@ void LLVivoxVoiceClient::accountLoginStateChangeEvent(
         case 0:
             levent["login"] = LLSD::String("account_logout");
 
-            LLEventPumps::instance().post("vivoxClientPump", levent);
+            mVivoxPump.post(levent);
             break;
     		
         default:
@@ -3728,7 +3714,7 @@ void LLVivoxVoiceClient::mediaCompletionEvent(std::string &sessionGroupHandle, s
 	}
 
     if (!result.isUndefined())
-        LLEventPumps::instance().post("vivoxClientPump", result);
+        mVivoxPump.post(result);
 }
 
 void LLVivoxVoiceClient::mediaStreamUpdatedEvent(
@@ -6540,7 +6526,7 @@ void LLVivoxVoiceClient::accountGetSessionFontsResponse(int statusCode, const st
         // receiving the last one.
         LLSD result(LLSDMap("voice_fonts", LLSD::Boolean(true)));
 
-        LLEventPumps::instance().post("vivoxClientPump", result);
+        mVivoxPump.post(result);
     }
 	notifyVoiceFontObservers();
 	mVoiceFontsReceived = true;
@@ -6691,7 +6677,7 @@ void LLVivoxVoiceClient::enablePreviewBuffer(bool enable)
     else
         result["recplay"] = "quit";
 
-    LLEventPumps::instance().post("vivoxClientPump", result);
+    mVivoxPump.post(result);
 
 	if(mCaptureBufferMode && mIsInChannel)
 	{
@@ -6712,7 +6698,7 @@ void LLVivoxVoiceClient::recordPreviewBuffer()
 	mCaptureBufferRecording = true;
 
     LLSD result(LLSDMap("recplay", "record"));
-    LLEventPumps::instance().post("vivoxClientPump", result);
+    mVivoxPump.post(result);
 }
 
 void LLVivoxVoiceClient::playPreviewBuffer(const LLUUID& effect_id)
@@ -6735,7 +6721,7 @@ void LLVivoxVoiceClient::playPreviewBuffer(const LLUUID& effect_id)
 	mCaptureBufferPlaying = true;
 
     LLSD result(LLSDMap("recplay", "playback"));
-    LLEventPumps::instance().post("vivoxClientPump", result);
+    mVivoxPump.post(result);
 }
 
 void LLVivoxVoiceClient::stopPreviewBuffer()
@@ -6744,7 +6730,7 @@ void LLVivoxVoiceClient::stopPreviewBuffer()
 	mCaptureBufferPlaying = false;
 
     LLSD result(LLSDMap("recplay", "quit"));
-    LLEventPumps::instance().post("vivoxClientPump", result);
+    mVivoxPump.post(result);
 }
 
 bool LLVivoxVoiceClient::isPreviewRecording()