         }
     }
 
+    /// Connnect another input after initialization // Deprecated
+    ///
+    /// - parameter input: AKNode to connect
+    /// - parameter bus: what channel of the mixer to connect on.
+    /// If you use this it is up to your application to keep track of what inputs are in use to make sure you
+    /// don't overwrite an existing channel with an active node that is active.
+
+    //swiftlint:disable line_length
+    @available(*, deprecated, message: "use connect(to:AKNode) or connect(to:AKNode, bus:Int) from the upstream node instead")
+    open func connect(_ input: AKNode?, bus: Int? = nil) {
+        input?.connect(to: self, bus: bus ?? nextInput.bus)
+    }
+    //swiftlint:enable line_length
+
 }


    /// Initialize the mixer node with no inputs, to be connected later
    public override init() {
        super.init()
        initialize()
    }

    /// Initialize the mixer node with multiple inputs
    ///
    /// - parameter inputs: A variadic list of AKNodes
    ///
    public init(_ inputs: AKNode?...) {
        super.init()
        initialize()
        for input in inputs {
            connect(input)
        }
    }

    /// Initialize the mixer node with multiple inputs
    ///
    /// - parameter inputs: An array of AKNodes
    ///
    public init(_ inputs: [AKNode]) {
        super.init()
        initialize()
        for input in inputs {
            connect(input)
        }
    }

    private func initialize() {
        mixerAU = AVAudioMixerNode()
        self.avAudioNode = mixerAU!
        AudioKit.engine.attach(self.avAudioNode)
    }

    /// Connnect another input after initialization
    ///
    /// - parameter input: AKNode to connect
    /// - parameter bus: what channel of the mixer to connect on. 
    /// If you use this it is up to your application to keep track of what inputs are in use to make sure you
    /// don't overwrite an existing channel with an active node that is active.
    open func connect(_ input: AKNode?, bus: Int? = nil) {
        guard mixerAU != nil else { return }

        var wasRunning = false
        if AudioKit.engine.isRunning {
            wasRunning = true
            AudioKit.stop()
        }

        let chan = bus ?? mixerAU!.nextAvailableInputBus

        if let existingInput = input {
            existingInput.connectionPoints.append(AVAudioConnectionPoint(node: mixerAU!, bus: chan))
            connectionCounter += 1

            AKLog("AKMixer.connect() input: \(existingInput) on bus \(chan), Mixer now has \(mixerAU!.numberOfInputs) total inputs and \(connectionCounter) recent connections.")

        }
        if wasRunning {
            AudioKit.start()
        }

    }

    /// Function to start, play, or activate the node, all do the same thing
    open func start() {
        if isStopped {

//

/// AudioKit version of Apple's Mixer Node
open class AKMixer: AKNode, AKToggleable, AKInput {
    /// The internal mixer node
    fileprivate var mixerAU = AVAudioMixerNode()

    /// Output Volume (Default 1)
    open dynamic var volume: Double = 1.0 {
        didSet {
            volume = max(volume, 0)
            mixerAU.outputVolume = Float(volume)
        }
    }

