             delegate?.waveformViewWillLoad?(self)
             
             // TODO: weak self here?
-            // TODO: need to cancel previous loads? Can use nsoperation with block to cancel?
             FDAudioContext.load(fromAudioURL: audioURL) { audioContext in
                 DispatchQueue.main.async {
                     if audioContext == nil {

        var channelCount = 1
        let formatDesc = audioContext.assetTrack.formatDescriptions
        for item in formatDesc {
            // TODO: handle error here
            guard let fmtDesc = CMAudioFormatDescriptionGetStreamBasicDescription(item as! CMAudioFormatDescription) else { return nil }    // TODO: Can the forced downcast in here be safer?
            channelCount = Int(fmtDesc.pointee.mChannelsPerFrame)
        }

    }
}

final public class FDWaveformRenderOperation: Operation {
    
    // TODO: document and clean up
