diff --git a/src/ITAFilterbankIIR.cpp b/src/ITAFilterbankIIR.cpp
index 7aa163afe75e7c1b624b10ea2ae41138fc901a71..7214070802840d3b9ceef51736f4e1ce4fdfd548 100644
--- a/src/ITAFilterbankIIR.cpp
+++ b/src/ITAFilterbankIIR.cpp
@@ -5,7 +5,9 @@
 
 #include <DspFilters/Dsp.h>
 
-const int iOrder = 16;
+const int iOrder = 4;
+
+typedef Dsp::Filter ITAIIRFilter;
 
 class CITAFilterbankIIRImpl : public CITAFilterbankIIR
 {
@@ -14,7 +16,7 @@ public:
 	~CITAFilterbankIIRImpl();
 	void Process( const float* pfInputData, float* pfOutputData );
 private:
-	Dsp::Butterworth::BandShelf< iOrder > m_oFilterInstance;
+	ITAIIRFilter* m_pFilterInstance;
 	float* m_vpfIn[ 1 ];
 	int m_iBlockLength;
 };
@@ -25,22 +27,41 @@ CITAFilterbankIIR* CITAFilterbankIIR::Create( const int iBlockLength, const doub
 }
 
 CITAFilterbankIIRImpl::CITAFilterbankIIRImpl( const int iBlockLength, const double dSampleRate )
+	: m_pFilterInstance( NULL )
 {
-	float fCenterFrequency = 500.0f;
-	float fFrequencyWidth = 20.0f;
-	m_oFilterInstance.setup( iOrder, dSampleRate, fCenterFrequency, fFrequencyWidth, 3.0f );
+	//m_pFilterInstance = new Dsp::SmoothedFilterDesign< Dsp::RBJ::Design::BandPass1, 1 >( 1024 );
+	//m_pFilterInstance = new Dsp::SmoothedFilterDesign< Dsp::Butterworth::BandPass< iOrder >, 1, Dsp::DirectFormII >( 1024 );
+	float fCenterFrequency = 4000.0f;
+	float fFrequencyWidth = 800.0f;
+	//m_oFilterInstance.setup( iOrder, dSampleRate, fCenterFrequency, fFrequencyWidth, 3.0f );
+	/*
+	Dsp::Params params;
+	params[ 0 ] = dSampleRate; // sample rate
+	params[ 1 ] = iOrder;
+	params[ 2 ] = 1000.0;
+	params[ 3 ] = 120.0f;
+	//m_pFilterInstance->setParams( params );
+	*/
+
+	m_pFilterInstance = new Dsp::SmoothedFilterDesign< Dsp::Butterworth::Design::BandPass< iOrder >, 1, Dsp::DirectFormII >( 1024 );
+	Dsp::Params params;
+	params[ 0 ] = 44100; // sample rate
+	params[ 1 ] = iOrder; // order
+	params[ 2 ] = fCenterFrequency; // center frequency
+	params[ 3 ] = fFrequencyWidth; // band width
+	m_pFilterInstance->setParams( params );
 
 	m_iBlockLength = iBlockLength;
 }
 
 CITAFilterbankIIRImpl::~CITAFilterbankIIRImpl()
 {
+	delete m_pFilterInstance;
 }
 
 void CITAFilterbankIIRImpl::Process( const float* pfInputData, float* pfOutputData )
 {
 	fm_copy( pfOutputData, pfInputData, m_iBlockLength );
 	m_vpfIn[ 0 ] = pfOutputData;
-	Dsp::Butterworth::BandShelf::StateType oState;
-	m_oFilterInstance.process( m_iBlockLength, m_vpfIn, oState );
+	m_pFilterInstance->process( m_iBlockLength, m_vpfIn );
 }
diff --git a/tests/ITADSPFilterbankIIRTest.m b/tests/ITADSPFilterbankIIRTest.m
index eca1c80b6d0f638367c3180534ac57a7f08be274..590beed1fb267f5728f58a8dabf27d4619d4d9d1 100644
--- a/tests/ITADSPFilterbankIIRTest.m
+++ b/tests/ITADSPFilterbankIIRTest.m
@@ -3,8 +3,8 @@ iir_io = ita_merge( ita_read( 'IIR_in.wav' ), ita_read( 'IIR_out.wav' ) );
 
 %% prepare
 iir_io_io_snipped = ita_time_crop( iir_io, [ 1 512 ], 'samples' );
-iir_io_io_snipped.comment = 'IIR Bessel bandpass 8th order';
+iir_io_io_snipped.comment = 'IIR filterbank test';
 iir_io_io_snipped.channelNames = { 'Dirac signal in', 'System response signal after IIR filtering' };
 
 %% plot
-iir_io_io_snipped.pf
\ No newline at end of file
+iir_io_io_snipped.pfp