     
     // MARK: funcs
         
-    override public func avcaptureDictionary() -> [String: Any]? {
+    public func avcaptureDictionary() -> [String: Any]? {
         if let options = self.options {
             return options
         } else {


// MARK: - AudioConfiguration

public class NextLevelAudioConfiguration: NextLevelConfiguration {
    
    public var bitRate: UInt64          // AVEncoderBitRateKey
    
    public var sampleRate: Float64?     // AVSampleRateKey
    
    public var channelsCount: Int?      // AVNumberOfChannelsKey
    
    public var format: AudioFormatID    // AVFormatIDKey

    // MARK: - class func
    
    public class func audioConfiguration(fromSampleBuffer sampleBuffer: CMSampleBuffer) -> NextLevelAudioConfiguration {
        // TODO
        return NextLevelAudioConfiguration()
    }
    
    // MARK: - object lifecycle
    
    override init() {
        self.bitRate = 128000
        self.sampleRate = 44100
        self.channelsCount = 2
        self.format = kAudioFormatMPEG4AAC
        super.init()
    }

    // MARK: funcs
    
    override public func avcaptureDictionary() -> [String: Any]? {
        if let options = self.options {
            return options
        } else {
            var config: [String: Any] = [AVEncoderBitRateKey:self.bitRate]
            
            if let sampleRate = self.sampleRate {
                config[AVSampleRateKey] = sampleRate
            }
            
            if let channels = self.channelsCount {
                config[AVNumberOfChannelsKey] = channels
            }
            
            config[AVFormatIDKey] = self.format

    
    // MARK: func
    
    public func avcaptureDictionary(withSampleBuffer sampleBuffer: CMSampleBuffer?) -> [String: Any]? {
        if let options = self.options {
            return options
        } else {
