diff --git a/ipaacalib/cpp/CMakeLists.txt b/ipaacalib/cpp/CMakeLists.txt
index 3d4c8a0a0a192dea088aff70be2994715e86b1d8..037c76e684e20cbdc2b4f682aaf054f61a52dd11 100644
--- a/ipaacalib/cpp/CMakeLists.txt
+++ b/ipaacalib/cpp/CMakeLists.txt
@@ -25,13 +25,13 @@ include_directories(${PROTOBUF_INCLUDE_DIRS})
 #set(RSBLIBS rsc rsbcore)
 
 # add for for each new rsb version
-include_directories( ${PROJECT_SOURCE_DIR}/../../deps/include/rsc0.8 )
-include_directories( ${PROJECT_SOURCE_DIR}/../../deps/include/rsb0.8 )
+include_directories( ${PROJECT_SOURCE_DIR}/../../deps/include/rsc0.9 )
+include_directories( ${PROJECT_SOURCE_DIR}/../../deps/include/rsb0.9 )
 # change for each new rsb version
 if (DEFINED APPLE)
-set(RSBLIBS rsc.0.8 rsb.0.8)
+set(RSBLIBS rsc0.9 rsb.0.9)
 else(DEFINED APPLE)
-set(RSBLIBS ${PROJECT_SOURCE_DIR}/../../deps/lib/librsc.so.0.8 ${PROJECT_SOURCE_DIR}/../../deps/lib/librsb.so.0.8 )
+set(RSBLIBS ${PROJECT_SOURCE_DIR}/../../deps/lib/librsc0.9.so ${PROJECT_SOURCE_DIR}/../../deps/lib/librsb.so.0.9 )
 endif(DEFINED APPLE)
 
 #set(LIBS ${LIBS} ${BOOSTLIBS} ${PROTOLIBS} ${RSBLIBS})
diff --git a/ipaacalib/cpp/include/ipaaca/ipaaca.h b/ipaacalib/cpp/include/ipaaca/ipaaca.h
index d33783ac737cce666930cd80a1c68d83a676db95..057ff191995fcbc14cd4033ba729be485ad828ba 100644
--- a/ipaacalib/cpp/include/ipaaca/ipaaca.h
+++ b/ipaacalib/cpp/include/ipaaca/ipaaca.h
@@ -459,6 +459,7 @@ class Initializer
 {
 	public:
 		static void initialize_ipaaca_rsb_if_needed();
+		static void initialize_updated_default_config();
 		static bool initialized();
 	protected:
 		static bool _initialized;
diff --git a/ipaacalib/cpp/src/ipaaca.cc b/ipaacalib/cpp/src/ipaaca.cc
index 541b96c9ce681437594b5d43a2e84182d5feab31..32264161d4abf28389ad35163d07530e1e019916 100644
--- a/ipaacalib/cpp/src/ipaaca.cc
+++ b/ipaacalib/cpp/src/ipaaca.cc
@@ -32,6 +32,7 @@
 
 #include <ipaaca/ipaaca.h>
 #include <cstdlib>
+#include <glob.h>
 
 namespace ipaaca {
 
@@ -57,6 +58,9 @@ bool Initializer::initialized() { return _initialized; }
 void Initializer::initialize_ipaaca_rsb_if_needed()
 {
 	if (_initialized) return;
+
+	initialize_updated_default_config();
+
 	// RYT FIXME This configuration stuff has been simply removed in rsb!
 	//ParticipantConfig config = ParticipantConfig::fromConfiguration();
 	//getFactory().setDefaultParticipantConfig(config);
@@ -86,6 +90,35 @@ void Initializer::initialize_ipaaca_rsb_if_needed()
 	//IPAACA_TODO("initialize all converters")
 }
 
+void Initializer::initialize_updated_default_config()
+{
+	// quick hack to iterate through the pwd parents
+	// and find the closest rsb plugin dir
+	//
+	// but only if not yet defined
+	const char* plugin_path = getenv("RSB_PLUGINS_CPP_PATH");
+	if (!plugin_path) {
+		LOG_IPAACA_CONSOLE("RSB_PLUGINS_CPP_PATH not set; looking here and up to 7 dirs up.")
+		std::string pathstr = "./";
+		for (int i=0; i<   8 /* depth EIGHT (totally arbitrary..) */  ; i++) {
+			std::string where_str = pathstr+"deps/lib/rsb*/plugins";
+			const char* where = where_str.c_str();
+			glob_t g;
+			glob(where, 0, NULL, &g);
+			if (g.gl_pathc>0) {
+				const char* found_path = g.gl_pathv[0];
+				LOG_IPAACA_CONSOLE("Found an RSB plugin dir which will be used automatically: " << found_path)
+				setenv("RSB_PLUGINS_CPP_PATH", found_path, 1);
+				break;
+			} // else keep going
+			globfree(&g);
+			pathstr += "../";
+		}
+	} else {
+		LOG_IPAACA_CONSOLE("RSB_PLUGINS_CPP_PATH already defined: " << plugin_path)
+	}
+}
+
 std::string generate_uuid_string()
 {
 	uuid_t uuidt;