                 group = ArticleGroup()
                 adjustedQuadKey = quadKey
                 key = "\(adjustedQuadKey)"
+                if var existingGroup = groups[key] {
+                    let existingGroupArticleKey = existingGroup.articles.first?.key ?? ""
+                    let existingGroupTitle = existingGroup.articles.first?.displayTitle ?? ""
+                    existingGroup.latitudeAdjustment = 0.0001 * CLLocationDegrees(existingGroupArticleKey.hash) / CLLocationDegrees(Int.max)
+                    existingGroup.longitudeAdjustment = 0.0001 * CLLocationDegrees(existingGroupTitle.hash) / CLLocationDegrees(Int.max)
+                    groups[key] = existingGroup
+                    
+                    let articleKey = article.key ?? ""
+                    let articleTitle = article.displayTitle ?? ""
+                    group.latitudeAdjustment = 0.0001 * CLLocationDegrees(articleKey.hash) / CLLocationDegrees(Int.max)
+                    group.longitudeAdjustment = 0.0001 * CLLocationDegrees(articleTitle.hash) / CLLocationDegrees(Int.max)
+                    key = articleKey
+                }
                 group.baseQuadKey = quadKey
                 group.baseQuadKeyPrecision = QuadKeyPrecision.maxPrecision
             }

                self.updateShouldShowAllImages(currentPrecision: currentPrecision, currentSearchPrecision: currentSearchPrecision, maxPrecision: maxPrecision)
            }
            self.groupingTaskGroup = nil
            if (self.needsRegroup) {
                self.needsRegroup = false
                self.regroupArticlesIfNecessary(forVisibleRegion: self.mapRegion ?? self.mapView.region)
            } else {
                self.selectVisibleKeyToSelectIfNecessary()
            }
        }
    }

        var articles: [WMFArticle] = []
        var latitudeSum: QuadKeyDegrees = 0
        var longitudeSum: QuadKeyDegrees = 0
        var latitudeAdjustment: QuadKeyDegrees = 0
        var longitudeAdjustment: QuadKeyDegrees = 0
        var baseQuadKey: QuadKey = 0
        var baseQuadKeyPrecision: QuadKeyPrecision = 0
        var location: CLLocation {
            get {
                return CLLocation(latitude: (latitudeSum + latitudeAdjustment)/CLLocationDegrees(articles.count), longitude: (longitudeSum + longitudeAdjustment)/CLLocationDegrees(articles.count))
            }
        }
    }
