     
     override func layoutSubviews() {
         super.layoutSubviews()
-        imageView.frame = bounds
-        imageView.layer.cornerRadius = frame.size.width * 0.5
-        countLabel.frame = bounds
+        if isSelected || countLabel.text != nil {
+            imageView.frame = bounds
+        } else {
+            imageView.bounds = CGRect(x: 0, y: 0, width: collapsedDimension, height: collapsedDimension)
+            imageView.center = CGPoint(x: 0.5*bounds.size.width, y: 0.5*bounds.size.height)
+        }
+        imageView.layer.cornerRadius = imageView.bounds.size.width * 0.5
+        countLabel.frame = imageView.frame
     }
 }
 

        countLabel.font = UIFont.preferredFont(forTextStyle: .headline)
        addSubview(countLabel)
        
        layoutSubviews()
        self.annotation = annotation
    }
    
    override var annotation: MKAnnotation? {
        didSet {
            if let articlePlace = annotation as? ArticlePlace {
                if articlePlace.articles.count == 1 {
                    let article = articlePlace.articles[0]
                    if let thumbnailURL = article.thumbnailURL  {
                        imageView.wmf_setImage(with: thumbnailURL, detectFaces: true, onGPU: true, failure: { (error) in
                            
                        }, success: {
                            
                        })
                    }
                } else {
                    countLabel.text = "\(articlePlace.articles.count)"
                }
            }
        }
    }
    

        
        let deltaLat = mapView.region.span.latitudeDelta
        let lowestPrecision = QuadKeyPrecision(deltaLatitude: deltaLat)
        let groupingPrecision = min(QuadKeyPrecision.maxPrecision, lowestPrecision + 3)
        
        guard groupingPrecision != currentGroupingPrecision else {
            return
