diff --git a/tests/data/DnB-loop-175BPM.wav b/tests/data/DnB-loop-175BPM.wav
new file mode 100644
index 0000000000000000000000000000000000000000..2c772739d8d7ce9063a3fe6320a246ec27d7b65f
Binary files /dev/null and b/tests/data/DnB-loop-175BPM.wav differ
diff --git a/tests/src/test_rapidPiPoTools.cpp b/tests/src/test_rapidPiPoTools.cpp
index 55f8709a521fdcb90afcfa3fca74738e7bd40b51..fd5e06bad2433a6824be38acb36f56b9ebe02e89 100644
--- a/tests/src/test_rapidPiPoTools.cpp
+++ b/tests/src/test_rapidPiPoTools.cpp
@@ -41,7 +41,7 @@ SCENARIO("Test rapidPiPoHost", "[signalProcessing]")
         //====================================================================//
 
         // instantiate PiPo related classes here :
-        rapidPiPoOwner pipoHost; // -> this class is located in rapidPiPoTools
+        rapidPiPoHost host; // -> this class is located in rapidPiPoTools
         
         // if we want to add some custom PiPos to our collection :
         // #include "myCustomPiPo.h"
@@ -49,45 +49,54 @@ SCENARIO("Test rapidPiPoHost", "[signalProcessing]")
         // now we can write :
         // pipoHost.setChain("myCustomPiPo");
 
-#include "PiPoMaximChroma.h"
+//#include "PiPoMaximChroma.h"
         // this one is not part of the default collection :
-        PiPoCollection::addToCollection("chroma", new PiPoCreator<PiPoMaximChroma>);
+        // PiPoCollection::addToCollection("chroma", new PiPoCreator<PiPoMaximChroma>);
         
-        pipoHost.setChain("slice:fft:sum:scale:onseg");
+        host.setGraph("slice:fft:sum:scale:onseg");
         
-        pipoHost.setAttr("slice.size", 1024);
-        pipoHost.setAttr("slice.hop", 256);
-        pipoHost.setAttr("slice.norm", "power");
-        pipoHost.setAttr("fft.mode", "power");
-        pipoHost.setAttr("fft.weighting", "itur468");
-        pipoHost.setAttr("scale.inmin", 1.);
-        pipoHost.setAttr("scale.inmax", 10.);
-        pipoHost.setAttr("scale.outmin", 0.);
-        pipoHost.setAttr("scale.outmax", 10.);
-        pipoHost.setAttr("scale.func", "log");
-        pipoHost.setAttr("scale.base", 10.);
-        pipoHost.setAttr("onseg.duration", 1.);
-        pipoHost.setAttr("onseg.min", 0.);
-        pipoHost.setAttr("onseg.max", 1.);
-        pipoHost.setAttr("onseg.mean", 0.);
-        pipoHost.setAttr("onseg.stddev", 0.);
-        pipoHost.setAttr("onseg.startisonset", 1.);
-        pipoHost.setAttr("onseg.threshold", 9.);
-        pipoHost.setAttr("onseg.offthresh", -120.);
+        host.setAttr("slice.size", 1024);
+        host.setAttr("slice.hop", 256);
+        host.setAttr("slice.norm", "power");
+        host.setAttr("fft.mode", "power");
+        host.setAttr("fft.weighting", "itur468");
+        host.setAttr("scale.inmin", 1.);
+        host.setAttr("scale.inmax", 10.);
+        host.setAttr("scale.outmin", 0.);
+        host.setAttr("scale.outmax", 10.);
+        host.setAttr("scale.func", "log");
+        host.setAttr("scale.base", 10.);
+        host.setAttr("onseg.duration", 1.);
+        host.setAttr("onseg.min", 0.);
+        host.setAttr("onseg.max", 1.);
+        host.setAttr("onseg.mean", 0.);
+        host.setAttr("onseg.stddev", 0.);
+        host.setAttr("onseg.startisonset", 1.);
+        host.setAttr("onseg.threshold", 9.);
+        host.setAttr("onseg.offthresh", -120.);
         
         // set another chain :
         // pipoHost.setChain("chroma");
         
         WHEN("file is processed")
         {
-
-            std::vector<std::string> labels;
-            pipoHost.streamAttributes(true, 44100, 0, 1, 1, labels, false, 0, 1);
+            rapidPiPoStreamAttributes sa;
+            sa.hasTimeTags = true;
+            sa.rate = 44100;
+            sa.offset = 0;
+            sa.width = 1,
+            sa.height = 1,
+            sa.labels = std::vector<std::string>();
+            sa.hasVarSize = false;
+            sa.domain = 0;
+            sa.maxFrames = 1;
+            
+            host.setInputStreamAttributes(sa);
             
             float value;
             for (unsigned int i = 0; i < buffer.length; ++i) {
                 value = buffer.play();
-                pipoHost.frames((double)i, 0.0, &value, 1, 1);
+                host.frames((double)i, 0.0, &value, 1, 1);
             }
 
             THEN("compare results of actual processing and same file processed in another envrironment")
diff --git a/tests/test_project.xcodeproj/project.pbxproj b/tests/test_project.xcodeproj/project.pbxproj
index 345f99a363c14636d82caf872fa0969d01fc51f3..d631d3766a0a9283f83e660628efa8b091097600 100644
--- a/tests/test_project.xcodeproj/project.pbxproj
+++ b/tests/test_project.xcodeproj/project.pbxproj
@@ -44,6 +44,16 @@
 		311BA30C1EDC6FD000244DAC /* xmmJson.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 311BA2F71EDC6F0F00244DAC /* xmmJson.cpp */; };
 		311BA30D1EDC709900244DAC /* jsoncpp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5E081ED8450E00E9FAFA /* jsoncpp.cpp */; };
 		311BA30F1EDC711E00244DAC /* trainingData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EC01ED8459300E9FAFA /* trainingData.cpp */; };
+		311BA3101EDC746F00244DAC /* test_rapidPiPoTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EE11ED8480D00E9FAFA /* test_rapidPiPoTools.cpp */; };
+		311BA3111EDC747A00244DAC /* rapidPiPoHost.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 311BA2AC1EDC6AED00244DAC /* rapidPiPoHost.cpp */; };
+		311BA3161EDC74E000244DAC /* libpipo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 311BA3141EDC74C400244DAC /* libpipo.a */; };
+		311BA31A1EDC7ADE00244DAC /* fft.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5A0E1ED8450C00E9FAFA /* fft.cpp */; };
+		311BA31B1EDC7ADE00244DAC /* maxiBark.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5A121ED8450C00E9FAFA /* maxiBark.cpp */; };
+		311BA31C1EDC7ADE00244DAC /* maxiFFT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5A141ED8450C00E9FAFA /* maxiFFT.cpp */; };
+		311BA31D1EDC7ADE00244DAC /* maxiMFCC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5A191ED8450C00E9FAFA /* maxiMFCC.cpp */; };
+		311BA31E1EDC7ADE00244DAC /* maximilian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5A1F1ED8450C00E9FAFA /* maximilian.cpp */; };
+		311BA3211EDC7B2400244DAC /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 311BA3201EDC7B2400244DAC /* Accelerate.framework */; };
+		311BA3241EDC7BA800244DAC /* DnB-loop-175BPM.wav in CopyFiles */ = {isa = PBXBuildFile; fileRef = 311BA3231EDC7BA400244DAC /* DnB-loop-175BPM.wav */; };
 		BE2C5E941ED8450E00E9FAFA /* classification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5DEA1ED8450E00E9FAFA /* classification.cpp */; };
 		BE2C5E951ED8450E00E9FAFA /* knnClassification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5DF31ED8450E00E9FAFA /* knnClassification.cpp */; };
 		BE2C5E961ED8450E00E9FAFA /* modelSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5DF51ED8450E00E9FAFA /* modelSet.cpp */; };
@@ -100,6 +110,7 @@
 			dstPath = "";
 			dstSubfolderSpec = 16;
 			files = (
+				311BA3241EDC7BA800244DAC /* DnB-loop-175BPM.wav in CopyFiles */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -164,6 +175,9 @@
 		311BA2F81EDC6F0F00244DAC /* xmmJson.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmJson.hpp; path = xmm/src/core/common/xmmJson.hpp; sourceTree = "<group>"; };
 		311BA2F91EDC6F0F00244DAC /* xmmMatrix.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmMatrix.hpp; path = xmm/src/core/common/xmmMatrix.hpp; sourceTree = "<group>"; };
 		311BA2FC1EDC6F1900244DAC /* xmm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = xmm.h; path = xmm/src/xmm.h; sourceTree = "<group>"; };
+		311BA3141EDC74C400244DAC /* libpipo.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libpipo.a; path = pipo/bin/osx/libpipo.a; sourceTree = "<group>"; };
+		311BA3201EDC7B2400244DAC /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; };
+		311BA3231EDC7BA400244DAC /* DnB-loop-175BPM.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = "DnB-loop-175BPM.wav"; path = "data/DnB-loop-175BPM.wav"; sourceTree = "<group>"; };
 		31D7B72C1E6B048100917757 /* test_rapidPiPoTools */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = test_rapidPiPoTools; sourceTree = BUILT_PRODUCTS_DIR; };
 		BE2C5A0A1ED8450C00E9FAFA /* .gitignore */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = .gitignore; sourceTree = "<group>"; };
 		BE2C5A0B1ED8450C00E9FAFA /* beat2.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = beat2.wav; sourceTree = "<group>"; };
@@ -264,6 +278,8 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				311BA3211EDC7B2400244DAC /* Accelerate.framework in Frameworks */,
+				311BA3161EDC74E000244DAC /* libpipo.a in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -273,6 +289,7 @@
 		311BA2A41EDC698600244DAC /* pipo */ = {
 			isa = PBXGroup;
 			children = (
+				311BA3121EDC74B300244DAC /* lib */,
 				311BA2B51EDC6C6F00244DAC /* host */,
 				311BA2B01EDC6C5A00244DAC /* include */,
 			);
@@ -440,6 +457,38 @@
 			name = kmeans;
 			sourceTree = "<group>";
 		};
+		311BA3121EDC74B300244DAC /* lib */ = {
+			isa = PBXGroup;
+			children = (
+				311BA3131EDC74B800244DAC /* osx */,
+			);
+			name = lib;
+			sourceTree = "<group>";
+		};
+		311BA3131EDC74B800244DAC /* osx */ = {
+			isa = PBXGroup;
+			children = (
+				311BA3141EDC74C400244DAC /* libpipo.a */,
+			);
+			name = osx;
+			sourceTree = "<group>";
+		};
+		311BA31F1EDC7B2400244DAC /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				311BA3201EDC7B2400244DAC /* Accelerate.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		311BA3221EDC7B9A00244DAC /* data */ = {
+			isa = PBXGroup;
+			children = (
+				311BA3231EDC7BA400244DAC /* DnB-loop-175BPM.wav */,
+			);
+			name = data;
+			sourceTree = "<group>";
+		};
 		BE2C5A081ED8450C00E9FAFA /* dependencies */ = {
 			isa = PBXGroup;
 			children = (
@@ -601,6 +650,7 @@
 		BE2C5EDC1ED8480D00E9FAFA /* tests */ = {
 			isa = PBXGroup;
 			children = (
+				311BA3221EDC7B9A00244DAC /* data */,
 				BE2C5EDD1ED8480D00E9FAFA /* src */,
 			);
 			name = tests;
@@ -626,6 +676,7 @@
 				BE2C5EBB1ED8459300E9FAFA /* src */,
 				BE2C5A081ED8450C00E9FAFA /* dependencies */,
 				BE325F321DB50BE100F199A8 /* Products */,
+				311BA31F1EDC7B2400244DAC /* Frameworks */,
 			);
 			sourceTree = "<group>";
 		};
@@ -854,6 +905,13 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				311BA31A1EDC7ADE00244DAC /* fft.cpp in Sources */,
+				311BA31B1EDC7ADE00244DAC /* maxiBark.cpp in Sources */,
+				311BA31C1EDC7ADE00244DAC /* maxiFFT.cpp in Sources */,
+				311BA31D1EDC7ADE00244DAC /* maxiMFCC.cpp in Sources */,
+				311BA31E1EDC7ADE00244DAC /* maximilian.cpp in Sources */,
+				311BA3101EDC746F00244DAC /* test_rapidPiPoTools.cpp in Sources */,
+				311BA3111EDC747A00244DAC /* rapidPiPoHost.cpp in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -929,6 +987,7 @@
 		31D7B72A1E6B048100917757 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/../dependencies/pipo/bin/**";
 				MACOSX_DEPLOYMENT_TARGET = 10.11;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 			};
@@ -937,6 +996,7 @@
 		31D7B72B1E6B048100917757 /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/../dependencies/pipo/bin/**";
 				MACOSX_DEPLOYMENT_TARGET = 10.11;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 			};