     }
     
     public func willDisplay(saveButton: SaveButton, for article: WMFArticle, with userInfo: Any? = nil) {
-        guard let key = article.inMemoryKey else {
+        guard let key = article.inMemoryKey, let databaseKey = article.key else {
             return
         }
         let tag = key.hash


class SaveButtonsController: NSObject, SaveButtonDelegate {
    
    var visibleSaveButtons = [Int: Set<SaveButton>]()
    var visibleArticleKeys = [Int: WMFInMemoryURLKey]()
    var visibleUserInfo = [Int: Any]()
    

        saveButton.tag = tag
        saveButton.addTarget(self, action: #selector(saveButtonPressed(sender:)), for: .touchUpInside)
        saveButton.saveButtonDelegate = self
        
        var saveButtons = visibleSaveButtons[tag] ?? []
        saveButtons.insert(saveButton)
        visibleSaveButtons[tag] = saveButtons
        
        var saveButtonTags = visibleSaveButtonTagsByDatabaseKey[databaseKey] ?? []
        saveButtonTags.insert(tag)
        visibleSaveButtonTagsByDatabaseKey[databaseKey] = saveButtonTags
        
        visibleArticleKeys[tag] = key
        visibleUserInfo[tag] = userInfo
    }
    
    public func didEndDisplaying(saveButton: SaveButton, for article: WMFArticle) {
        guard let key = article.inMemoryKey, let databaseKey = article.key else {
            return
        }
        let tag = key.hash
