     
     private func removeList(at indexPath: IndexPath) {
         let listBeingDeleted = lists[indexPath.row].copy
-        self.lists.remove(at: indexPath.row)
-        self.deleteRow(at: indexPath)
+        lists.remove(at: indexPath.row)
+        listsThatHavePlace.removeValue(forKey: indexPath.row)
+        deleteRow(at: indexPath)
         DatabaseRequests.shared.deleteList(list: listBeingDeleted, completionHandler: nil)
     }
     
-    private func createAndSaveNewList(with name: String) {
+    private func createAndSaveNewList(with name: String, creatingNewPlace: Bool) {
         let list = List(name: name, placeID: place.id)
         if let list = list {
             self.lists.append(list)
-            insertRow(at: IndexPath(row: self.lists.count - 1, section: 0))
-            DatabaseRequests.shared.createOrUpdateList(list: list)
+            let indexPath = IndexPath(row: self.lists.count - 1, section: 0)
+            insertRow(at: indexPath)
+            addPlaceToDatabase(from: indexPath, list: list, creatingNewList: creatingNewPlace)
         }
     }
     
-    private func updateListOnDatabase(list: List) {
-        list.placeIDs.append(place.id)
+    private func updateListOnDatabase(isAdding: Bool, for indexPath: IndexPath, list: List, creatingNewList: Bool) {
+        if isAdding {
+            list.placeIDs.append(place.id)
+            addPlaceToDatabase(from: indexPath, list: list, creatingNewList: creatingNewList)
+        } else {
+            // kinda inefficient? Was sleepy while doing this...
+            for (index, placeID) in list.placeIDs.enumerated() {
+                if placeID == place.id {
+                    list.placeIDs.remove(at: index)
+                    removePlaceFromDatabase(indexPath: indexPath, list: list)
+                    return
+                }
+            }
+        }
+    }
+    
+    private func removePlaceFromDatabase(indexPath: IndexPath, list: List) {
         DatabaseRequests.shared.createOrUpdateList(list: list)
+        configCheckMark(shouldCheckMark: false, indexPath: indexPath)
+    }
+    
+    private func addPlaceToDatabase(from indexPath: IndexPath, list: List, creatingNewList: Bool) {
+        if creatingNewList {
+            DatabaseRequests.shared.createOrUpdateList(list: list) { error in
+                if let error = error {
+                    _ = SweetAlert().showAlert("Error", subTitle: error.localizedDescription, style: .error)
+                } else {
+                    _ = SweetAlert().showAlert("Success!", subTitle: "Successfully added '\(list.name)' to your lists.", style: .success)
+                }
+            }
+        } else {
+            DatabaseRequests.shared.createOrUpdateList(list: list)
+        }
+        configCheckMark(shouldCheckMark: true, indexPath: indexPath)
     }
     
     private func deleteRow(at indexPath: IndexPath) {

    // MARK: - Stored Properties
    
    private var lists = [List]()
    internal var place: Place!
    private var alertVC: UIAlertController!
    

        self.tableView.endUpdates()
    }
    
    private func configCheckMark(shouldCheckMark: Bool, indexPath: IndexPath) {
        // Checkmark Configuration
        guard let cell = tableView.cellForRow(at: indexPath) else { return }
        cell.accessoryType = shouldCheckMark ? .checkmark : .none
        listsThatHavePlace[indexPath.row] = shouldCheckMark
    }
    
}
