@@ -64,11 +64,10 @@ function WorldStateAlwaysUpFrame_OnLoad(
 	self:RegisterEvent("PLAYER_ENTERING_BATTLEGROUND");
 
 	self:RegisterEvent("WORLD_STATE_UI_TIMER_UPDATE");
-
-	self:RegisterEvent("WORLD_STATE_TIMER_START");
-	self:RegisterEvent("WORLD_STATE_TIMER_STOP");
 	
 	self:RegisterEvent("BATTLEGROUND_POINTS_UPDATE");
+	self:RegisterEvent("LFG_ROLE_CHECK_DECLINED");
+	self:RegisterEvent("LFG_ROLE_CHECK_SHOW");
 
 	FILTERED_BG_CHAT_ADD = {};
 	FILTERED_BG_CHAT_SUBTRACT = {};
@@ -112,18 +111,13 @@ function WorldStateAlwaysUpFrame_OnEvent
 	if ( event == "PLAYER_ENTERING_WORLD" ) then
 		WorldStateFrame_ToggleBattlefieldMinimap();
 		WorldStateAlwaysUpFrame_StopBGChatFilter(self);
-		WorldStateChallengeMode_CheckTimers(GetWorldElapsedTimers());
-		WorldStateProvingGrounds_CheckTimers(GetWorldElapsedTimers());
 	elseif ( event == "PLAYER_ENTERING_BATTLEGROUND" ) then
 		WorldStateAlwaysUpFrame_StartBGChatFilter(self);
-	elseif ( event == "WORLD_STATE_TIMER_START" ) then
-		local timerID = ...;
-		WorldStateChallengeMode_CheckTimers(timerID);
-		WorldStateProvingGrounds_CheckTimers(timerID);
-	elseif ( event == "WORLD_STATE_TIMER_STOP" ) then
-		local timerID = ...;
-		WorldStateChallengeMode_HideTimer(timerID);
-		WorldStateProvingGrounds_HideTimer(timerID);
+		WorldStateScoreFrameQueueButton:Enable();
+	elseif ( event == "LFG_ROLE_CHECK_DECLINED" ) then
+		WorldStateScoreFrameQueueButton:Enable();
+	elseif ( event == "LFG_ROLE_CHECK_SHOW" ) then	
+		WorldStateScoreFrameQueueButton:Disable();
 	else
 		WorldStateAlwaysUpFrame_Update();
 	end
@@ -612,6 +606,14 @@ function WorldStateScoreFrame_Update()
 		WorldStateScoreFrameLeaveButton:Show();
 		WorldStateScoreFrameTimerLabel:Show();
 		WorldStateScoreFrameTimer:Show();
+		
+		if(IsArenaSkirmish())then
+			WorldStateScoreFrameQueueButton:Show();
+			WorldStateScoreFrameLeaveButton:SetPoint("BOTTOM", WorldStateScoreFrameLeaveButton:GetParent(), "BOTTOM", 80, 3);
+		else
+			WorldStateScoreFrameQueueButton:Hide();
+			WorldStateScoreFrameLeaveButton:SetPoint("BOTTOM", WorldStateScoreFrameLeaveButton:GetParent(), "BOTTOM", 0, 3);
+		end
 
 		-- Show winner
 		if ( isArena ) then
@@ -659,6 +661,7 @@ function WorldStateScoreFrame_Update()
 	else
 		WorldStateScoreWinnerFrame:Hide();
 		WorldStateScoreFrameLeaveButton:Hide();
+		WorldStateScoreFrameQueueButton:Hide();
 		WorldStateScoreFrameTimerLabel:Hide();
 		WorldStateScoreFrameTimer:Hide();
 	end
@@ -782,9 +785,9 @@ function WorldStateScoreFrame_Update()
 						scoreButton.ratingChange:SetText("-------");
 					else
 						if ratingChange > 0 then 
-							scoreButton.ratingChange:SetText(GREEN_FONT_COLOR_CODE..ratingChange);
+							scoreButton.ratingChange:SetText(GREEN_FONT_COLOR_CODE..ratingChange..FONT_COLOR_CODE_CLOSE);
 						else
-							scoreButton.ratingChange:SetText(RED_FONT_COLOR_CODE..ratingChange);
+							scoreButton.ratingChange:SetText(RED_FONT_COLOR_CODE..ratingChange..FONT_COLOR_CODE_CLOSE);
 						end
 					end
 					scoreButton.ratingChange:Show();
@@ -795,6 +798,7 @@ function WorldStateScoreFrame_Update()
 				scoreButton.honorableKills:Hide();
 				scoreButton.honorGained:Hide();
 				scoreButton.deaths:Hide();
+				scoreButton.bgRating:Hide();
 			else
 				scoreButton.name.text:SetWidth(175);
 				scoreButton.deaths:SetText(deaths);
@@ -803,9 +807,9 @@ function WorldStateScoreFrame_Update()
 				if isRatedBG then
 					if battlefieldWinner then
 						if ratingChange > 0 then 
-							scoreButton.ratingChange:SetText(GREEN_FONT_COLOR_CODE..ratingChange);
+							scoreButton.ratingChange:SetText(GREEN_FONT_COLOR_CODE..ratingChange..FONT_COLOR_CODE_CLOSE);
 						else
-							scoreButton.ratingChange:SetText(RED_FONT_COLOR_CODE..ratingChange);
+							scoreButton.ratingChange:SetText(RED_FONT_COLOR_CODE..ratingChange..FONT_COLOR_CODE_CLOSE);
 						end
 						scoreButton.ratingChange:Show();
 					else
@@ -1083,315 +1087,3 @@ function ScorePlayerDropDown_Initialize(
 	info.func = ScorePlayerDropDown_Cancel;
 	UIDropDownMenu_AddButton(info);
 end
-
---
--- Challenge Mode - only 1 timer for now, needs some work for multiple timers
---
-
--- WatchFrame handler function
-function WorldStateChallengeMode_DisplayTimers(lineFrame, nextAnchor, maxHeight, frameWidth)
-	local self = WorldStateChallengeModeFrame;
-	if ( self.timerID ) then
-		self:SetParent(lineFrame);
-		if (nextAnchor) then
-			self:SetPoint("TOPLEFT", nextAnchor, "BOTTOMLEFT", 0, -WATCHFRAME_TYPE_OFFSET);
-		else
-			self:SetPoint("TOPLEFT", lineFrame, "TOPLEFT", 0, -WATCHFRAME_INITIAL_OFFSET)
-		end
-		local _, elapsedTime = GetWorldElapsedTime(self.timerID);
-		WorldStateChallengeModeTimer.baseTime = elapsedTime;
-		WorldStateChallengeModeTimer.timeSinceBase = 0;
-		WorldStateChallengeModeTimer.frame = self;
-		self:Show();
-		return self, 198, 0, 1;
-	else
-		-- handler should have been removed before this...
-		self:Hide();
-		return nextAnchor, 0, 0, 0;
-	end
-end
-
-function WorldStateChallengeMode_CheckTimers(...)
-	for i = 1, select("#", ...) do
-		local timerID = select(i, ...);
-		local _, elapsedTime, type = GetWorldElapsedTime(timerID);
-		if ( type == LE_WORLD_ELAPSED_TIMER_TYPE_CHALLENGE_MODE) then
-			local _, _, _, _, _, _, _, mapID = GetInstanceInfo();
-			if ( mapID ) then
-				WorldStateChallengeMode_ShowTimer(timerID, elapsedTime, GetChallengeModeMapTimes(mapID));
-				return;
-			end
-		end	
-	end
-	WorldStateChallengeMode_HideTimer();
-end
-
-function WorldStateChallengeMode_ShowTimer(timerID, elapsedTime, ...)
-	local self = WorldStateChallengeModeFrame;
-	if not ( self.medalTimes ) then
-		self.medalTimes = { };
-	end
-	for i = 1, select("#", ...) do
-		self.medalTimes[i] = select(i, ...);
-	end
-	-- not currently being displayed, set up handler
-	if ( not self.timerID ) then
-		WatchFrame_AddObjectiveHandler(WorldStateChallengeMode_DisplayTimers, 1);
-		if ( WatchFrame_RemoveObjectiveHandler(WatchFrame_DisplayTrackedQuests) ) then
-			self.hidWatchedQuests = true;
-		end
-	end
-	self.timerID = timerID;
-	WorldStateChallengeModeFrame_UpdateMedal(self, elapsedTime);
-	WorldStateChallengeModeFrame_UpdateValues(self, elapsedTime);
-	WatchFrame_ClearDisplay();
-	WatchFrame_Expand(WatchFrame);	-- will automatically do a watchframe update
-	WorldStateChallengeModeTimer:Show();
-end
-
-function WorldStateChallengeMode_HideTimer(timerID)
-	local self = WorldStateChallengeModeFrame;
-	if ( not timerID or self.timerID == timerID ) then
-		self.timerID = nil;
-		if ( self.hidWatchedQuests ) then
-			WatchFrame_AddObjectiveHandler(WatchFrame_DisplayTrackedQuests);
-		end
-		self:Hide();
-		WorldStateChallengeModeTimer:Hide();
-		self.lastMedalShown = nil;
-		WatchFrame_RemoveObjectiveHandler(WorldStateChallengeMode_DisplayTimers);
-		WatchFrame_ClearDisplay();
-		WatchFrame_Update(WatchFrame);
-	end
-end
-
-function WorldStateChallengeModeFrame_UpdateMedal(self, elapsedTime)
-	-- find best medal for current time
-	local prevMedalTime = 0;
-	for i = #self.medalTimes, 1, -1 do
-		local currentMedalTime = self.medalTimes[i];
-		if ( elapsedTime < currentMedalTime ) then
-			self.statusBar:SetMinMaxValues(0, currentMedalTime - prevMedalTime);
-			self.statusBar.medalTime = currentMedalTime;
-			if ( CHALLENGE_MEDAL_TEXTURES[i] ) then
-				self.medalIcon:SetTexture(CHALLENGE_MEDAL_TEXTURES[i]);
-				self.medalIcon:Show();
-				self.GlowFrame.MedalIcon:SetTexture(CHALLENGE_MEDAL_TEXTURES[i]);
-				self.GlowFrame.MedalGlowAnim:Play();
-			end
-			self.noMedal:Hide();
-			-- play sound if medal changed
-			if ( self.lastMedalShown and self.lastMedalShown ~= i ) then
-				if ( self.lastMedalShown == CHALLENGE_MEDAL_GOLD ) then
-					PlaySound("UI_Challenges_MedalExpires_GoldtoSilver");
-				elseif ( self.lastMedalShown == CHALLENGE_MEDAL_SILVER ) then
-					PlaySound("UI_Challenges_MedalExpires_SilvertoBronze");
-				else
-					PlaySound("UI_Challenges_MedalExpires");
-				end
-			end
-			self.lastMedalShown = i;
-			return;
-		else
-			prevMedalTime = currentMedalTime;
-		end
-	end
-	-- no medal
-	self.statusBar.timeLeft:SetText(CHALLENGES_TIMER_NO_MEDAL);
-	self.statusBar:SetValue(0);
-	self.statusBar.medalTime = nil;
-	self.noMedal:Show();
-	self.medalIcon:Hide();
-	-- play sound if medal changed
-	if ( self.lastMedalShown and self.lastMedalShown ~= 0 ) then
-		PlaySound("UI_Challenges_MedalExpires");
-	end
-	self.lastMedalShown = 0;
-end
-
-function WorldStateChallengeModeFrame_UpdateValues(self, elapsedTime)
-	local statusBar = self.statusBar;
-	if ( statusBar.medalTime ) then
-		local timeLeft = statusBar.medalTime - elapsedTime;
-		local anim = self.GlowFrame.MedalPulseAnim;
-		if (timeLeft <= 5) then
-			if (anim:IsPlaying()) then 
-				anim.timeLeft = timeLeft;
-			else
-				self.GlowFrame.MedalPulseAnim:Play();
-			end
-		end
-		if (timeLeft == 10) then
-			if (not self.playedSound) then
-				PlaySoundKitID(34154);
-				self.playedSound = true;
-			end
-		else
-			self.playedSound = false;
-		end
-		if ( timeLeft < 0 ) then
-			WorldStateChallengeModeFrame_UpdateMedal(self, elapsedTime);
-		else
-			statusBar:SetValue(statusBar.medalTime - elapsedTime);
-			statusBar.timeLeft:SetText(GetTimeStringFromSeconds(statusBar.medalTime - elapsedTime));
-		end
-	end
-end
-
-function WorldStateChallengeModeAnim_OnFinished(self)
-	if (self.timeLeft and self.timeLeft > 0 and self.timeLeft < 5) then
-		self:Play();
-	else
-		self.timeLeft = nil;
-	end
-end
-
-local floor = floor; --optimization so we don't do a global lookup on update
-function WorldStateChallengeModeTimer_OnUpdate(self, elapsed)
-	self.timeSinceBase = self.timeSinceBase + elapsed;
-	WorldStateChallengeModeFrame_UpdateValues(self.frame, floor(self.baseTime + self.timeSinceBase));
-end
-
---
--- Proving Grounds
---
-
--- WatchFrame handler function
-function WorldStateProvingGrounds_DisplayTimers(lineFrame, nextAnchor, maxHeight, frameWidth)
-	local self = WorldStateProvingGroundsFrame;
-	if ( self.timerID ) then
-		self:SetParent(lineFrame);
-		if (nextAnchor) then
-			self:SetPoint("TOPLEFT", nextAnchor, "BOTTOMLEFT", 0, -WATCHFRAME_TYPE_OFFSET);
-		else
-			self:SetPoint("TOPLEFT", lineFrame, "TOPLEFT", 0, -WATCHFRAME_INITIAL_OFFSET)
-		end
-		local _, elapsedTime = GetWorldElapsedTime(self.timerID);
-		WorldStateProvingGroundsTimer.baseTime = elapsedTime;
-		WorldStateProvingGroundsTimer.timeSinceBase = 0;
-		WorldStateProvingGroundsTimer.frame = self;
-		self:Show();
-		WatchFrameScenario_UpdateScenario();
-		return self, 198, 0, 1;
-	else
-		-- handler should have been removed before this...
-		self:Hide();
-		return nextAnchor, 0, 0, 0;
-	end
-end
-
-function WorldStateProvingGrounds_CheckTimers(...)
-	for i = 1, select("#", ...) do
-		local timerID = select(i, ...);
-		local _, elapsedTime, type = GetWorldElapsedTime(timerID);
-		if ( type == LE_WORLD_ELAPSED_TIMER_TYPE_PROVING_GROUND) then
-			local diffID, currWave, maxWave, duration = C_Scenario.GetProvingGroundsInfo()
-			if (duration > 0) then
-				WorldStateProvingGrounds_ShowTimer(timerID, elapsedTime, duration, diffID, currWave, maxWave);
-				return;
-			end
-		end	
-	end
-	WorldStateProvingGrounds_HideTimer();
-end
-
-local PROVING_GROUNDS_ENDLESS_INDEX = 4;
-function WorldStateProvingGrounds_ShowTimer(timerID, elapsedTime, duration, medalIndex, currWave, maxWave)
-	local self = WorldStateProvingGroundsFrame;
-	local statusBar = self.statusBar;
-	
-	-- not currently being displayed, set up handler
-	if ( not self.timerID ) then
-		WatchFrame_AddObjectiveHandler(WorldStateProvingGrounds_DisplayTimers, 1);
-		if ( WatchFrame_RemoveObjectiveHandler(WatchFrame_DisplayTrackedQuests) ) then
-			self.hidWatchedQuests = true;
-		end
-	end
-	
-	self.timerID = timerID;
-	statusBar.duration = duration;
-	statusBar:SetMinMaxValues(0, duration);
-	if ( CHALLENGE_MEDAL_TEXTURES[medalIndex] ) then
-		self.MedalIcon:SetTexture(CHALLENGE_MEDAL_TEXTURES[medalIndex]);
-		self.MedalIcon:Show();
-	end
-	
-	if (medalIndex < PROVING_GROUNDS_ENDLESS_INDEX) then
-		self.ScoreLabel:Hide();
-		self.Score:Hide();
-		self.WaveLabel:SetPoint("TOPLEFT", self.MedalIcon, "TOPRIGHT", 1, -4);
-		self.Wave:SetFormattedText(GENERIC_FRACTION_STRING, currWave, maxWave);
-		statusBar:SetPoint("CENTER", self, "CENTER", 22, -8);
-	else
-		self.ScoreLabel:Show();
-		self.Score:Show();
-		self.WaveLabel:SetPoint("TOPLEFT", self.MedalIcon, "TOPRIGHT", 1, 4);
-		self.Wave:SetText(currWave);
-		statusBar:SetPoint("CENTER", self, "CENTER", 22, -17);
-	end
-	
-	self:RegisterEvent("PROVING_GROUNDS_SCORE_UPDATE");
-	WorldStateProvingGroundsFrame_UpdateValues(self, elapsedTime);
-	self.CountdownAnim.timeLeft = nil;
-	WatchFrame_ClearDisplay();
-	WatchFrame_Expand(WatchFrame);	-- will automatically do a watchframe update
-	WorldStateProvingGroundsTimer:Show();
-end
-
-function WorldStateProvingGrounds_HideTimer(timerID)
-	local self = WorldStateProvingGroundsFrame;
-	if ( not timerID or self.timerID == timerID ) then
-		self.timerID = nil;
-		if ( self.hidWatchedQuests ) then
-			WatchFrame_AddObjectiveHandler(WatchFrame_DisplayTrackedQuests);
-		end
-		self:UnregisterEvent("PROVING_GROUNDS_SCORE_UPDATE");
-		self:Hide();
-		WorldStateProvingGroundsTimer:Hide();
-		WatchFrame_RemoveObjectiveHandler(WorldStateProvingGrounds_DisplayTimers);
-		WatchFrame_ClearDisplay();
-		WatchFrame_Update(WatchFrame);
-	end
-end
-
-function WorldStateProvingGroundsFrame_UpdateValues(self, elapsedTime)
-	WatchFrameHeader:Show()
-	local statusBar = self.statusBar;
-	if ( elapsedTime < statusBar.duration ) then
-		statusBar:SetValue(statusBar.duration - elapsedTime);
-		statusBar.timeLeft:SetText(GetTimeStringFromSeconds(statusBar.duration - elapsedTime));
-		
-		local timeLeft = statusBar.duration - elapsedTime;
-		local anim = self.CountdownAnim;
-		if (timeLeft <= 5) then
-			if (anim:IsPlaying()) then 
-				anim.timeLeft = timeLeft;
-			else
-				anim:Play();
-			end
-		elseif (anim.timeLeft ~= nil) then
-			-- the time left never reaches 0 if there's another wave, but the animation always needs to get to 0
-			anim.timeLeft = 0; 
-		end
-	end
-end
-
-function WorldStateProvingGrounds_OnEvent(self, event, ...)
-	if (event == "PROVING_GROUNDS_SCORE_UPDATE") then
-		local score = ...
-		self.Score:SetText(score);
-	end
-end
-
-function WorldStateProvingGroundsTimer_OnUpdate(self, elapsed)
-	self.timeSinceBase = self.timeSinceBase + elapsed;
-	WorldStateProvingGroundsFrame_UpdateValues(self.frame, floor(self.baseTime + self.timeSinceBase));
-end
-
-function WorldStateProvingGroundsAnim_OnFinished(self)
-	if (self.timeLeft and self.timeLeft > 0 and self.timeLeft < 5) then
-		self:Play();
-	else
-		self.timeLeft = nil;
-	end
-end