     
     private let engine = Engine.shared
     private let show = Show.shared
-    lazy private var dataSource = makeDataSource()
+    private var dataSource: UICollectionViewDiffableDataSource<Int, Sting>?
     private var cuedSting: Sting? {
         didSet { if let sting = cuedSting { scrollTo(sting) } }
     }

    
    // MARK: UICollectionViewDelegate
    override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        guard let sting = dataSource.itemIdentifier(for: indexPath) else { return }
        engine.play(sting)
    }
    
    override func collectionView(_ collectionView: UICollectionView, contextMenuConfigurationForItemAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? {
        UIContextMenuConfiguration(identifier: nil, previewProvider: nil) { suggestedActions in
            guard let sting = self.dataSource.itemIdentifier(for: indexPath) else { return nil }
            
            let edit = UIAction(title: "Edit", image: UIImage(systemName: "waveform")) { action in
                self.performSegue(withIdentifier: "Edit Sting", sender: sting)

        var snapshot = NSDiffableDataSourceSnapshot<Int, Sting>()
        snapshot.appendSections([0])
        snapshot.appendItems(show.stings)
        dataSource?.apply(snapshot)
    }
    
    func reloadItems(_ identifiers: [Sting]) {
        guard let dataSource = dataSource else { return }
        #warning("Is there a better way to do this?")
        let uniqueIdentifiers = Array(Set(identifiers))
        var snapshot = dataSource.snapshot()
