         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)
         }

            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 {

    public var imageSize: CGSize = .zero
    public var wavesColor: UIColor = .black

    /// Drawing more pixels than shown to get antialiasing, 1.0 = no overdraw, 2.0 = twice as many pixels
    fileprivate var horizontalTargetOverdraw: CGFloat = 3.0
    
