 
     public static let ComponentDescription = AudioComponentDescription(appleEffect: kAudioUnitSubType_DynamicsProcessor)
 
-    internal var internalEffect = AVAudioUnitEffect()
-    internal var internalAU: AudioUnit? = nil
+    private var internalEffect = AVAudioUnitEffect()
+    private var au: AUWrapper
+    private var mixer: AKMixer
 
-    fileprivate var mixer: AKMixer
-
-    fileprivate var internalCompressionAmount:AudioUnitParameterValue = 0.0
-    fileprivate var internalInputAmplitude:AudioUnitParameterValue = 0.0
-    fileprivate var internalOutputAmplitude:AudioUnitParameterValue = 0.0
+    private var internalCompressionAmount:AudioUnitParameterValue = 0.0
+    private var internalInputAmplitude:AudioUnitParameterValue = 0.0
+    private var internalOutputAmplitude:AudioUnitParameterValue = 0.0
 
     /// Expansion Ratio (rate) ranges from 1 to 50.0 (Default: 2)
     open var expansionRatio: Double = 2 {
         didSet {
             expansionRatio = (1...50).clamp(expansionRatio)
-            AudioUnitSetParameter(
-                internalAU!,
-                kDynamicsProcessorParam_ExpansionRatio,
-                kAudioUnitScope_Global, 0,
-                Float(expansionRatio), 0)
+            au[kDynamicsProcessorParam_ExpansionRatio] = expansionRatio
         }
     }
 

        }
    }

    fileprivate var lastKnownMix: Double = 100
    fileprivate var inputGain: AKMixer?
    fileprivate var effectGain: AKMixer?

    /// Tells whether the node is processing (ie. started, playing, or active)
    open var isStarted = true

    open var masterGain: Double = 0 {
        didSet {
            masterGain = (-40...40).clamp(masterGain)
            au[kDynamicsProcessorParam_MasterGain] = masterGain
        }
    }

    /// Compression Amount (dB) read only
    open var compressionAmount: Double {
        return au[kDynamicsProcessorParam_CompressionAmount]
    }

    /// Input Amplitude (dB) read only
    open var inputAmplitude: Double {
        return au[kDynamicsProcessorParam_InputAmplitude]
    }

    /// Output Amplitude (dB) read only
    open var outputAmplitude: Double {
        return au[kDynamicsProcessorParam_OutputAmplitude]
    }

    /// Dry/Wet Mix (Default 100)
