diff --git a/server/queues/scoring.coffee b/server/queues/scoring.coffee
index 08f0794d0..692a08b75 100644
--- a/server/queues/scoring.coffee
+++ b/server/queues/scoring.coffee
@@ -130,7 +130,7 @@ module.exports.processTaskResult = (req, res) ->
                 opponentID = _.pull(_.keys(newScoresObject), originalSessionID)
                 sessionNewScore = newScoresObject[originalSessionID].totalScore
                 opponentNewScore = newScoresObject[opponentID].totalScore
-                findNearestBetterSessionID sessionNewScore, opponentNewScore, opponentID ,opposingTeam, (err, opponentSessionID) ->
+                findNearestBetterSessionID originalSessionID, sessionNewScore, opponentNewScore, opponentID ,opposingTeam, (err, opponentSessionID) ->
                   if err? then return errors.serverError res, "There was an error finding the nearest sessionID!"
                   unless opponentSessionID then return sendResponseObject req, res, {"message":"There were no more games to rank(game is at top!"}
                     
@@ -162,9 +162,6 @@ determineIfSessionShouldContinueAndUpdateLog = (sessionID, sessionRank, cb) ->
     if totalNumberOfGamesPlayed < 5
       console.log "Number of games played is less than 5, continuing..."
       cb null, true
-    else if totalNumberOfGamesPlayed > 15
-      console.log "Too many games played, ending..."
-      cb null, false
     else
       ratio = (updatedSession.numberOfLosses - 5) / (totalNumberOfGamesPlayed)
       if ratio > 0.66
@@ -175,39 +172,53 @@ determineIfSessionShouldContinueAndUpdateLog = (sessionID, sessionRank, cb) ->
         cb null, true
       
     
-findNearestBetterSessionID = (sessionTotalScore, opponentSessionTotalScore, opponentSessionID, opposingTeam, cb) ->
-  queryParameters =
-    totalScore: 
-      $gt:opponentSessionTotalScore + 0.5
-    _id: 
-      $ne: opponentSessionID
-    "level.original": "52d97ecd32362bc86e004e87"
-    "level.majorVersion": 0
-    submitted: true
-    submittedCode:
-      $exists: true
-    team: opposingTeam
+findNearestBetterSessionID = (sessionID, sessionTotalScore, opponentSessionTotalScore, opponentSessionID, opposingTeam, cb) ->
+  retrieveAllOpponentSessionIDs sessionID, (err, opponentSessionIDs) ->
+    if err? then return cb err, null
     
-  limitNumber = 1
-
-  sortParameters =
-    totalScore: 1
-    
-  selectString = '_id totalScore'
-    
-  query = LevelSession.findOne(queryParameters)
-    .sort(sortParameters)
-    .limit(limitNumber)
-    .select(selectString)
-    .lean()
+    queryParameters =
+      totalScore: 
+        $gt:opponentSessionTotalScore
+      _id: 
+        $nin: opponentSessionIDs
+      "level.original": "52d97ecd32362bc86e004e87"
+      "level.majorVersion": 0
+      submitted: true
+      submittedCode:
+        $exists: true
+      team: opposingTeam
+      
+    limitNumber = 1
   
-  console.log "Finding session with score near #{opponentSessionTotalScore}"
-  query.exec (err, session) ->
-    if err? then return cb err, session
-    unless session then return cb err, null
-    console.log "Found session with score #{session.totalScore}"
-    cb err, session._id
+    sortParameters =
+      totalScore: 1
+      
+    selectString = '_id totalScore'
+      
+    query = LevelSession.findOne(queryParameters)
+      .sort(sortParameters)
+      .limit(limitNumber)
+      .select(selectString)
+      .lean()
+    
+    console.log "Finding session with score near #{opponentSessionTotalScore}"
+    query.exec (err, session) ->
+      if err? then return cb err, session
+      unless session then return cb err, null
+      console.log "Found session with score #{session.totalScore}"
+      cb err, session._id
 
+    
+retrieveAllOpponentSessionIDs = (sessionID, cb) ->
+  query = LevelSession.findOne({"_id":sessionID})
+    .select('matches.opponents.sessionID')
+    .lean()
+  query.exec (err, session) ->
+    if err? then return cb err, null
+    opponentSessionIDs = (match.opponents[0].sessionID for match in session.matches)
+    cb err, opponentSessionIDs
+    
+      
 calculateOpposingTeam = (sessionTeam) ->
   teams = ['ogres','humans']
   opposingTeams = _.pull teams, sessionTeam