commit d81c4f8b38b0513d0c0f54fb6931b7d9638251a3
Author: Matthias Barth <mbarth@techfak.uni-bielefeld.de>
Date:   Wed Dec 23 08:38:23 2020 +0100

    Removed RSB support

diff --git a/client/cpp/CMakeLists.txt b/client/cpp/CMakeLists.txt
index 352816d..0eb05c8 100644
--- a/client/cpp/CMakeLists.txt
+++ b/client/cpp/CMakeLists.txt
@@ -31,47 +31,6 @@ SET(DATADIR    "${PREFIX}/share/hlrc_client")
 #######################################
 FIND_PACKAGE(hlrc_server)
 
-#######################################
-#allow forced disable of RSB
-option(IGNORE_RSB "IGNORE_RSB" OFF)
-
-#######################################
-# check if we have RSB support:
-IF (IGNORE_RSB)
-    MESSAGE(INFO "RSB disabled per command line flag IGNORE_RSB")
-ELSE (IGNORE_RSB)
-FIND_PACKAGE(RSB 0.11 QUIET)
-IF (RSB_FOUND)
-    #RSB
-    SET(CMAKE_INSTALL_RPATH "\$ORIGIN/../lib:\$ORIGIN/")
-    FIND_PACKAGE(RSC 0.11 REQUIRED)
-    FIND_PACKAGE(RSB 0.11 REQUIRED)
-    #RST
-    FIND_PACKAGE(RST REQUIRED COMPONENTS sandbox)
-    INCLUDE_DIRECTORIES(BEFORE SYSTEM ${RST_INCLUDE_DIRS})
-    ADD_DEFINITIONS(${RST_CFLAGS} ${RSTSANDBOX_CFLAGS})
-
-    INCLUDE_DIRECTORIES(BEFORE SYSTEM ${RSB_INCLUDE_DIRS})
-    LIST(INSERT CMAKE_MODULE_PATH 0 ${RSC_CMAKE_MODULE_PATH})
-    #RSB
-    SET(CMAKE_INSTALL_RPATH "\$ORIGIN/../lib:\$ORIGIN/")
-    FIND_PACKAGE(RSC 0.11 REQUIRED)
-    FIND_PACKAGE(RSB 0.11 REQUIRED)
-    #RST
-    FIND_PACKAGE(RST REQUIRED COMPONENTS sandbox)
-    INCLUDE_DIRECTORIES(BEFORE SYSTEM ${RST_INCLUDE_DIRS})
-    ADD_DEFINITIONS(${RST_CFLAGS} ${RSTSANDBOX_CFLAGS})
-
-    INCLUDE_DIRECTORIES(BEFORE SYSTEM ${RSB_INCLUDE_DIRS})
-    LIST(INSERT CMAKE_MODULE_PATH 0 ${RSC_CMAKE_MODULE_PATH})
-
-    message(STATUS "RSB Support is ON")
-    add_definitions(-DRSB_SUPPORT=1)
-ELSE(RSB_FOUND)
-    message(STATUS "RSB not found.")
-ENDIF(RSB_FOUND)
-ENDIF(IGNORE_RSB)
-
 ################################################################
 # check for ROS support:
 find_package(catkin QUIET)
@@ -118,7 +77,6 @@ SET(LIB_CLASSES
     src/RobotController.cpp
     src/Middleware.cpp
     src/MiddlewareROS.cpp
-    src/MiddlewareRSB.cpp
 )
 
 add_library(${HLRC_CLIENT_LIBNAME} SHARED
@@ -142,7 +100,7 @@ IF (ROS_FOUND)
     add_dependencies(${HLRC_CLIENT_LIBNAME} ${catkin_EXPORTED_TARGETS})
 ENDIF (ROS_FOUND)
 
-target_link_libraries(${HLRC_CLIENT_LIBNAME} ${RSB_LIBRARIES} ${RST_LIBRARIES} ${catkin_LIBRARIES})
+target_link_libraries(${HLRC_CLIENT_LIBNAME} ${catkin_LIBRARIES})
 
 #build & install demo
 #ADD_EXECUTABLE(testMarkerTracker example/testMarkerTracker.cc)
@@ -173,7 +131,7 @@ configure_file("${CMAKECONFIGVERSION_FILENAME}.in" "${CMAKECONFIGVERSION_FILENAM
 INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKECONFIGVERSION_FILENAME}" DESTINATION "${DATADIR}")
 
 #ADD_EXECUTABLE(${PROJECT_NAME} main.cpp ${SRC_FILES})
-#TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${RSB_LIBRARIES} ${RST_LIBRARIES} ${OpenCV_LIBS} ${Boost_LIBRARIES} ${Boost_LIBS} ${BART_LIBRARIES} )
+#TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OpenCV_LIBS} ${Boost_LIBRARIES} ${Boost_LIBS} ${BART_LIBRARIES} )
 
 #build & install examples
 ADD_EXECUTABLE(${PROJECT_NAME}_example_random_gaze examples/random_gaze/main.cpp)
diff --git a/client/cpp/examples/random_gaze/main.cpp b/client/cpp/examples/random_gaze/main.cpp
index 7321375..33ea315 100644
--- a/client/cpp/examples/random_gaze/main.cpp
+++ b/client/cpp/examples/random_gaze/main.cpp
@@ -39,7 +39,7 @@ float rand_float(float min, float max) {
 int main(int argc, char** argv) {
 	if (argc != 3) {
 		printf("usage: %s <middleware> <robot scope>\n", argv[0]);
-		printf("       <middleware> is either ROS or RSB\n");
+		printf("       <middleware> is  ROS\n");
 		printf("       <robot scope> e.g. /flobi or /icub\n\n");
 		exit(EXIT_FAILURE);
 	}
diff --git a/client/cpp/examples/speech_test/main.cpp b/client/cpp/examples/speech_test/main.cpp
index 4fb7aec..0ac20b1 100644
--- a/client/cpp/examples/speech_test/main.cpp
+++ b/client/cpp/examples/speech_test/main.cpp
@@ -33,7 +33,7 @@
 #define BLOCKING true
 
 int main(int argc, char** argv) {
-	RobotController* robot_controller = new RobotController("RSB", "/flobi");
+	RobotController* robot_controller = new RobotController("ROS", "/flobi");
 
 	int count = 0;
 
diff --git a/client/cpp/include/MiddlewareROS.h b/client/cpp/include/MiddlewareROS.h
index b4b4b47..d4fafcf 100644
--- a/client/cpp/include/MiddlewareROS.h
+++ b/client/cpp/include/MiddlewareROS.h
@@ -52,7 +52,7 @@ class MiddlewareROS : public Middleware {
 #ifndef ROS_SUPPORT
 public:
 	MiddlewareROS(std::string scope) : Middleware(scope) {
-		printf("> ERROR: hlrc was compiled without ROS middleware support. Please use MiddlewareRSB() instead!\n\n");
+		printf("> ERROR: hlrc was compiled without ROS middleware support.\n\n");
 		exit(EXIT_FAILURE);
 	}
 
diff --git a/client/cpp/include/MiddlewareRSB.h b/client/cpp/include/MiddlewareRSB.h
deleted file mode 100644
index 2dc7983..0000000
--- a/client/cpp/include/MiddlewareRSB.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * This file is part of hlrc
- *
- * Copyright(c) sschulz <AT> techfak.uni-bielefeld.de
- * http://opensource.cit-ec.de/projects/hlrc
- *
- * This file may be licensed under the terms of the
- * GNU General Public License Version 3 (the ``GPL''),
- * or (at your option) any later version.
- *
- * Software distributed under the License is distributed
- * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
- * express or implied. See the GPL for the specific language
- * governing rights and limitations.
- *
- * You should have received a copy of the GPL along with this
- * program. If not, go to http://www.gnu.org/licenses/gpl.html
- * or write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The development of this software was supported by the
- * Excellence Cluster EXC 277 Cognitive Interaction Technology.
- * The Excellence Cluster EXC 277 is a grant of the Deutsche
- * Forschungsgemeinschaft (DFG) in the context of the German
- * Excellence Initiative.
- *
- */
-
-#pragma once
-#include "Middleware.h"
-#ifdef RSB_SUPPORT
-#define BOOST_SIGNALS_NO_DEPRECATION_WARNING // mute warnings from RSB
-#include <rsb/Factory.h>
-#include <rsb/Informer.h>
-#include <rsb/Listener.h>
-
-#if USE_INPROTK_SYNTHESIS
-#include <rst/communicationpatterns/TaskState.pb.h>
-#endif
-#endif
-
-class MiddlewareRSB : public Middleware {
-#ifndef RSB_SUPPORT
-public:
-	MiddlewareRSB(std::string scope) : Middleware(scope) {
-		printf("> ERROR: hlrc was compiled without RSB middleware support. Please use MiddlewareROS() instead!\n\n");
-		exit(EXIT_FAILURE);
-	}
-
-	void init(){};
-	void publish_default_emotion(RobotEmotion e, bool blocking){};
-	void publish_current_emotion(RobotEmotion e, bool blocking){};
-	void publish_gaze_target(RobotGaze g, bool blocking){};
-	void publish_lookat_target(float x, float y, float z, const std::string frame_id, bool blocking, float roll){};
-	void publish_mouth_target(RobotMouth m, bool blocking){};
-	void publish_head_animation(RobotHeadAnimation a, bool blocking){};
-	void publish_speech(std::string text, bool blocking){};
-
-#else
-public:
-	MiddlewareRSB(std::string scope);
-
-protected:
-	void init();
-	void publish_current_emotion(RobotEmotion e, bool blocking);
-	void publish_default_emotion(RobotEmotion e, bool blocking);
-	void publish_gaze_target(RobotGaze target, bool blocking);
-	void publish_lookat_target(float x, float y, float z, const std::string frame_id, bool blocking, float roll);
-	void publish_mouth_target(RobotMouth target, bool blocking);
-	void publish_head_animation(RobotHeadAnimation a, bool blocking);
-	void publish_speech(std::string text, bool blocking);
-
-private:
-	void publish_emotion(std::string scope_target, RobotEmotion e, bool blocking);
-
-	// rsb::patterns::RemoteServerPtr inprotk_server;
-	rsb::patterns::RemoteServerPtr hlrc_server;
-	// rsb::patterns::LocalServerPtr inprotk_server;
-#if USE_INPROTK_SYNTHESIS
-	rsb::Informer<rst::communicationpatterns::TaskState>::Ptr inprotk_informer;
-	rsb::ListenerPtr inprotk_listener;
-	rsb::ListenerPtr hack_listener;
-
-	std::mutex pending_tasks_mutex;
-	std::vector<std::shared_ptr<rst::communicationpatterns::TaskState> > pending_tasks;
-	unsigned int say_task_active;
-	unsigned int say_task_done;
-
-	std::mutex current_saytask_mutex;
-	std::string current_saytask;
-	std::string get_current_saytask();
-	void set_current_saytask(std::string text);
-
-	void check_for_inprotk();
-	void incoming_hack(std::shared_ptr<std::string> finished_task);
-#endif
-#endif
-};
diff --git a/client/cpp/src/MiddlewareRSB.cpp b/client/cpp/src/MiddlewareRSB.cpp
deleted file mode 100644
index 12c0e59..0000000
--- a/client/cpp/src/MiddlewareRSB.cpp
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * This file is part of hlrc
- *
- * Copyright(c) sschulz <AT> techfak.uni-bielefeld.de
- * http://opensource.cit-ec.de/projects/hlrc
- *
- * This file may be licensed under the terms of the
- * GNU General Public License Version 3 (the ``GPL''),
- * or (at your option) any later version.
- *
- * Software distributed under the License is distributed
- * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
- * express or implied. See the GPL for the specific language
- * governing rights and limitations.
- *
- * You should have received a copy of the GPL along with this
- * program. If not, go to http://www.gnu.org/licenses/gpl.html
- * or write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The development of this software was supported by the
- * Excellence Cluster EXC 277 Cognitive Interaction Technology.
- * The Excellence Cluster EXC 277 is a grant of the Deutsche
- * Forschungsgemeinschaft (DFG) in the context of the German
- * Excellence Initiative.
- *
- */
-
-#ifdef RSB_SUPPORT
-
-#include "MiddlewareRSB.h"
-#include <rsb/converter/Repository.h>
-#include <rsb/converter/ProtocolBufferConverter.h>
-
-#include <rst/animation/EmotionExpression.pb.h>
-#include <rst/animation/BinocularHeadGaze.pb.h>
-#include <rst/animation/HeadAnimation.pb.h>
-#include <rst/audition/Utterance.pb.h>
-#include <rst/audition/SoundChunk.pb.h>
-#include <boost/algorithm/string.hpp>
-#include <boost/range/algorithm_ext/erase.hpp>
-
-using namespace std;
-using namespace rsb;
-using namespace rsb::patterns;
-
-MiddlewareRSB::MiddlewareRSB(string scope) : Middleware(scope) {
-	printf("> new MiddlewareRSB() on base scope '%s'\n", base_scope.c_str());
-	init();
-}
-
-void MiddlewareRSB::init(void) {
-	printf("> MiddlewareRSB::init() registering converters\n");
-
-	try {
-		// converter for EmotionState
-		rsb::converter::Converter<string>::Ptr emotionStateConverter(
-		   new rsb::converter::ProtocolBufferConverter<rst::animation::EmotionExpression>());
-		rsb::converter::converterRepository<string>()->registerConverter(emotionStateConverter);
-
-		// converter for Utterance
-		// rsb::converter::Converter<string>::Ptr UtteranceConverter(new
-		// rsb::converter::ProtocolBufferConverter<rst::audition::Utterance>());
-		// rsb::converter::converterRepository<string>()->registerConverter(UtteranceConverter);
-
-		// converter for GazeTarget
-		rsb::converter::Converter<string>::Ptr gazeTargetConverter(
-		   new rsb::converter::ProtocolBufferConverter<rst::animation::BinocularHeadGaze>());
-		rsb::converter::converterRepository<string>()->registerConverter(gazeTargetConverter);
-
-		// converter for MouthTarget
-		/// rsb::converter::Converter<string>::Ptr mouthTargetConverter(new
-		/// rsb::converter::ProtocolBufferConverter<rst::robot::MouthTarget>());
-		/// rsb::converter::converterRepository<string>()->registerConverter(mouthTargetConverter);
-
-		// converter for Animation
-		rsb::converter::Converter<string>::Ptr animationConverter(
-		   new rsb::converter::ProtocolBufferConverter<rst::animation::HeadAnimation>());
-		rsb::converter::converterRepository<string>()->registerConverter(animationConverter);
-	}
-	catch (std::invalid_argument e) {
-		printf("> converters already registered\n");
-	}
-
-	// first get a factory instance that is used to create RSB domain objects
-	Factory& factory = getFactory();
-
-	// get server
-	string scope = base_scope + "/set/";
-	hlrc_server = factory.createRemoteServer(scope);
-
-	printf("> init done\n");
-}
-
-void MiddlewareRSB::publish_emotion(string scope_target, RobotEmotion e, bool blocking) {
-	std::shared_ptr<rst::animation::EmotionExpression> request(new rst::animation::EmotionExpression());
-
-	switch (e.value) {
-		default:
-			printf("> WANRING: invalid emotion id %d. defaulting to NEUTRAL\n", e.value);
-			// fall through:
-		case (RobotEmotion::NEUTRAL):
-			request->set_emotion(rst::animation::EmotionExpression::NEUTRAL);
-			break;
-		case (RobotEmotion::HAPPY):
-			request->set_emotion(rst::animation::EmotionExpression::HAPPY);
-			break;
-		case (RobotEmotion::SAD):
-			request->set_emotion(rst::animation::EmotionExpression::SAD);
-			break;
-		case (RobotEmotion::ANGRY):
-			request->set_emotion(rst::animation::EmotionExpression::ANGRY);
-			break;
-		case (RobotEmotion::SURPRISED):
-			request->set_emotion(rst::animation::EmotionExpression::SURPRISED);
-			break;
-		case (RobotEmotion::FEAR):
-			request->set_emotion(rst::animation::EmotionExpression::FEAR);
-			break;
-	}
-
-	request->set_duration(e.time_ms);
-
-	if (blocking) {
-		hlrc_server->call<rst::animation::EmotionExpression>(scope_target, request);
-	}
-	else {
-		hlrc_server->callAsync<rst::animation::EmotionExpression>(scope_target, request);
-	}
-}
-
-void MiddlewareRSB::publish_current_emotion(RobotEmotion e, bool blocking) {
-	publish_emotion("currentEmotion", e, blocking);
-}
-
-void MiddlewareRSB::publish_default_emotion(RobotEmotion e, bool blocking) {
-	publish_emotion("defaultEmotion", e, blocking);
-}
-
-void MiddlewareRSB::publish_gaze_target(RobotGaze incoming_target, bool blocking) {
-	std::shared_ptr<rst::animation::BinocularHeadGaze> request(new rst::animation::BinocularHeadGaze());
-
-	std::shared_ptr<rst::geometry::SphericalDirectionFloat> target(new rst::geometry::SphericalDirectionFloat());
-	target->set_azimuth(incoming_target.pan);
-	target->set_elevation(incoming_target.tilt);
-	request->set_allocated_target(target.get());
-
-	request->set_eye_vergence(incoming_target.vergence);
-
-	std::shared_ptr<rst::geometry::SphericalDirectionFloat> offset(new rst::geometry::SphericalDirectionFloat());
-	offset->set_azimuth(incoming_target.pan_offset);
-	offset->set_elevation(incoming_target.tilt_offset);
-	request->set_allocated_offset(offset.get());
-
-	if (blocking) {
-		hlrc_server->call<rst::animation::BinocularHeadGaze>("gaze", request);
-	}
-	else {
-		hlrc_server->callAsync<rst::animation::BinocularHeadGaze>("gaze", request);
-	}
-}
-
-void MiddlewareRSB::publish_lookat_target(float x, float y, float z, const std::string frame_id, bool blocking, float roll) {
-	std::cerr << "not yet implemented" << std::endl;
-}
-
-void MiddlewareRSB::publish_mouth_target(RobotMouth target, bool blocking) {
-	/*
-	    std::shared_ptr<rst::robot::MouthTarget> request(new rst::robot::MouthTarget());
-
-	    request->set_position_left(  target.position_left);
-	    request->set_position_center(target.position_center);
-	    request->set_position_right( target.position_right);
-
-	    request->set_opening_left(  target.opening_left);
-	    request->set_opening_center(target.opening_center);
-	    request->set_opening_right( target.opening_right);
-
-	    if (blocking){
-	        hlrc_server->call<rst::robot::MouthTarget>("mouth", request);
-	    }else{
-	        hlrc_server->callAsync<rst::robot::MouthTarget>("mouth", request);
-	    }
-	*/
-	printf("> ERROR: mouth targets not yet implemented in RSB middleware!\n");
-}
-
-void MiddlewareRSB::publish_head_animation(RobotHeadAnimation a, bool blocking) {
-	std::shared_ptr<rst::animation::HeadAnimation> request(new rst::animation::HeadAnimation());
-
-	switch (a.value) {
-		default:
-			printf("> WANRING: invalid animation id %d. defaulting to IDLE", a.value);
-			// fall through:
-		case (RobotHeadAnimation::IDLE):
-			request->set_animation(rst::animation::HeadAnimation::IDLE);
-			break;
-		case (RobotHeadAnimation::HEAD_NOD):
-			request->set_animation(rst::animation::HeadAnimation::HEAD_NOD);
-			break;
-		case (RobotHeadAnimation::HEAD_SHAKE):
-			request->set_animation(rst::animation::HeadAnimation::HEAD_SHAKE);
-			break;
-		case (RobotHeadAnimation::EYEBLINK_L):
-			request->set_animation(rst::animation::HeadAnimation::EYEBLINK_LEFT);
-			break;
-		case (RobotHeadAnimation::EYEBLINK_R):
-			request->set_animation(rst::animation::HeadAnimation::EYEBLINK_RIGHT);
-			break;
-		case (RobotHeadAnimation::EYEBLINK_BOTH):
-			request->set_animation(rst::animation::HeadAnimation::EYEBLINK_BOTH);
-			break;
-		case (RobotHeadAnimation::EYEBROWS_RAISE):
-			request->set_animation(rst::animation::HeadAnimation::EYEBROWS_RAISE);
-			break;
-		case (RobotHeadAnimation::EYEBROWS_LOWER):
-			request->set_animation(rst::animation::HeadAnimation::EYEBROWS_LOWER);
-			break;
-		case (RobotHeadAnimation::ENGAGEMENT_LEFT):
-			request->set_animation(rst::animation::HeadAnimation::ENGAGEMENT_LEFT);
-			break;
-		case (RobotHeadAnimation::ENGAGEMENT_RIGHT):
-			request->set_animation(rst::animation::HeadAnimation::ENGAGEMENT_RIGHT);
-			break;
-	}
-
-	request->set_repetitions(a.repetitions);
-	request->set_emphasis_scale(a.scale);
-	request->set_duration_each(a.time_ms);
-
-	if (blocking) {
-		hlrc_server->call<rst::animation::HeadAnimation>("animation", request);
-	}
-	else {
-		hlrc_server->callAsync<rst::animation::HeadAnimation>("animation", request);
-	}
-}
-
-void MiddlewareRSB::publish_speech(string text, bool blocking) {
-	// say it
-	std::shared_ptr<std::string> request(new string(text));
-
-	if (blocking) {
-		hlrc_server->call<std::string>("speech", request);
-	}
-	else {
-		hlrc_server->callAsync<std::string>("speech", request);
-	}
-}
-
-#endif
diff --git a/client/cpp/src/RobotController.cpp b/client/cpp/src/RobotController.cpp
index a08c871..0b196cb 100644
--- a/client/cpp/src/RobotController.cpp
+++ b/client/cpp/src/RobotController.cpp
@@ -29,7 +29,6 @@
 #include "RobotController.h"
 #include "Middleware.h"
 #include "MiddlewareROS.h"
-#include "MiddlewareRSB.h"
 
 using namespace std;
 
@@ -38,12 +37,8 @@ RobotController::RobotController(string mw_name, string base_scope) {
 		// intantiate ROS mw
 		middleware = new MiddlewareROS(base_scope);
 	}
-	else if (mw_name == "RSB") {
-		// intantiate RSB mw
-		middleware = new MiddlewareRSB(base_scope);
-	}
 	else {
-		printf("ERROR: invalid middleware requested (%s). supported: {ROS, RSB}\n\n", mw_name.c_str());
+		printf("ERROR: invalid middleware requested (%s). supported: {ROS}\n\n", mw_name.c_str());
 		exit(EXIT_FAILURE);
 	}
 }
diff --git a/client/java/COPYING b/client/java/COPYING
deleted file mode 100644
index 94a9ed0..0000000
--- a/client/java/COPYING
+++ /dev/null
@@ -1,674 +0,0 @@
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
-  The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works.  By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users.  We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors.  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
-  To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights.  Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received.  You must make sure that they, too, receive
-or can get the source code.  And you must show them these terms so they
-know their rights.
-
-  Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
-  For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software.  For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
-  Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so.  This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software.  The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable.  Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products.  If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
-  Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary.  To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                       TERMS AND CONDITIONS
-
-  0. Definitions.
-
-  "This License" refers to version 3 of the GNU General Public License.
-
-  "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
-  "The Program" refers to any copyrightable work licensed under this
-License.  Each licensee is addressed as "you".  "Licensees" and
-"recipients" may be individuals or organizations.
-
-  To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy.  The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
-  A "covered work" means either the unmodified Program or a work based
-on the Program.
-
-  To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy.  Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
-  To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies.  Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
-  An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License.  If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
-  1. Source Code.
-
-  The "source code" for a work means the preferred form of the work
-for making modifications to it.  "Object code" means any non-source
-form of a work.
-
-  A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
-  The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form.  A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
-  The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities.  However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work.  For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
-  The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
-  The Corresponding Source for a work in source code form is that
-same work.
-
-  2. Basic Permissions.
-
-  All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met.  This License explicitly affirms your unlimited
-permission to run the unmodified Program.  The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work.  This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
-  You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force.  You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright.  Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
-  Conveying under any other circumstances is permitted solely under
-the conditions stated below.  Sublicensing is not allowed; section 10
-makes it unnecessary.
-
-  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-  No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
-  When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
-  4. Conveying Verbatim Copies.
-
-  You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
-  You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
-  5. Conveying Modified Source Versions.
-
-  You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
-    a) The work must carry prominent notices stating that you modified
-    it, and giving a relevant date.
-
-    b) The work must carry prominent notices stating that it is
-    released under this License and any conditions added under section
-    7.  This requirement modifies the requirement in section 4 to
-    "keep intact all notices".
-
-    c) You must license the entire work, as a whole, under this
-    License to anyone who comes into possession of a copy.  This
-    License will therefore apply, along with any applicable section 7
-    additional terms, to the whole of the work, and all its parts,
-    regardless of how they are packaged.  This License gives no
-    permission to license the work in any other way, but it does not
-    invalidate such permission if you have separately received it.
-
-    d) If the work has interactive user interfaces, each must display
-    Appropriate Legal Notices; however, if the Program has interactive
-    interfaces that do not display Appropriate Legal Notices, your
-    work need not make them do so.
-
-  A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit.  Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
-  6. Conveying Non-Source Forms.
-
-  You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
-    a) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by the
-    Corresponding Source fixed on a durable physical medium
-    customarily used for software interchange.
-
-    b) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by a
-    written offer, valid for at least three years and valid for as
-    long as you offer spare parts or customer support for that product
-    model, to give anyone who possesses the object code either (1) a
-    copy of the Corresponding Source for all the software in the
-    product that is covered by this License, on a durable physical
-    medium customarily used for software interchange, for a price no
-    more than your reasonable cost of physically performing this
-    conveying of source, or (2) access to copy the
-    Corresponding Source from a network server at no charge.
-
-    c) Convey individual copies of the object code with a copy of the
-    written offer to provide the Corresponding Source.  This
-    alternative is allowed only occasionally and noncommercially, and
-    only if you received the object code with such an offer, in accord
-    with subsection 6b.
-
-    d) Convey the object code by offering access from a designated
-    place (gratis or for a charge), and offer equivalent access to the
-    Corresponding Source in the same way through the same place at no
-    further charge.  You need not require recipients to copy the
-    Corresponding Source along with the object code.  If the place to
-    copy the object code is a network server, the Corresponding Source
-    may be on a different server (operated by you or a third party)
-    that supports equivalent copying facilities, provided you maintain
-    clear directions next to the object code saying where to find the
-    Corresponding Source.  Regardless of what server hosts the
-    Corresponding Source, you remain obligated to ensure that it is
-    available for as long as needed to satisfy these requirements.
-
-    e) Convey the object code using peer-to-peer transmission, provided
-    you inform other peers where the object code and Corresponding
-    Source of the work are being offered to the general public at no
-    charge under subsection 6d.
-
-  A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
-  A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling.  In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage.  For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product.  A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
-  "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source.  The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
-  If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information.  But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
-  The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed.  Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
-  Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
-  7. Additional Terms.
-
-  "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law.  If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
-  When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it.  (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.)  You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
-  Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
-    a) Disclaiming warranty or limiting liability differently from the
-    terms of sections 15 and 16 of this License; or
-
-    b) Requiring preservation of specified reasonable legal notices or
-    author attributions in that material or in the Appropriate Legal
-    Notices displayed by works containing it; or
-
-    c) Prohibiting misrepresentation of the origin of that material, or
-    requiring that modified versions of such material be marked in
-    reasonable ways as different from the original version; or
-
-    d) Limiting the use for publicity purposes of names of licensors or
-    authors of the material; or
-
-    e) Declining to grant rights under trademark law for use of some
-    trade names, trademarks, or service marks; or
-
-    f) Requiring indemnification of licensors and authors of that
-    material by anyone who conveys the material (or modified versions of
-    it) with contractual assumptions of liability to the recipient, for
-    any liability that these contractual assumptions directly impose on
-    those licensors and authors.
-
-  All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10.  If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term.  If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
-  If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
-  Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
-  8. Termination.
-
-  You may not propagate or modify a covered work except as expressly
-provided under this License.  Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
-  However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
-  Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
-  Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License.  If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
-  9. Acceptance Not Required for Having Copies.
-
-  You are not required to accept this License in order to receive or
-run a copy of the Program.  Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance.  However,
-nothing other than this License grants you permission to propagate or
-modify any covered work.  These actions infringe copyright if you do
-not accept this License.  Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
-  10. Automatic Licensing of Downstream Recipients.
-
-  Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License.  You are not responsible
-for enforcing compliance by third parties with this License.
-
-  An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations.  If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
-  You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License.  For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
-  11. Patents.
-
-  A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based.  The
-work thus licensed is called the contributor's "contributor version".
-
-  A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version.  For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
-  Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
-  In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement).  To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
-  If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients.  "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
-  If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
-  A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License.  You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
-  Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
-  12. No Surrender of Others' Freedom.
-
-  If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all.  For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
-  13. Use with the GNU Affero General Public License.
-
-  Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work.  The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
-  14. Revised Versions of this License.
-
-  The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-  Each version is given a distinguishing version number.  If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation.  If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
-  If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
-  Later license versions may give you additional or different
-permissions.  However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
-  15. Disclaimer of Warranty.
-
-  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. Limitation of Liability.
-
-  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
-  17. Interpretation of Sections 15 and 16.
-
-  If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
-                     END OF TERMS AND CONDITIONS
-
-            How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
-  If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
-    <program>  Copyright (C) <year>  <name of author>
-    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
-  You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
-  The GNU General Public License does not permit incorporating your program
-into proprietary programs.  If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.  But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/client/java/README.md b/client/java/README.md
deleted file mode 100644
index 1139cbe..0000000
--- a/client/java/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# [h]igh [l]evel [r]obot [c]ontrol client java (hlrc_client_java)
-
-this is the high level robot control client code in java.
-
diff --git a/client/java/nbactions.xml b/client/java/nbactions.xml
deleted file mode 100644
index 6b3597e..0000000
--- a/client/java/nbactions.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<actions>
-        <action>
-            <actionName>run</actionName>
-            <packagings>
-                <packaging>jar</packaging>
-            </packagings>
-            <goals>
-                <goal>process-classes</goal>
-                <goal>org.codehaus.mojo:exec-maven-plugin:1.2.1:exec</goal>
-            </goals>
-            <properties>
-                <exec.args>-classpath %classpath de.uni-bielefeld.cit-ec.opensource.hlrc.main.Cmd --idle</exec.args>
-                <exec.executable>java</exec.executable>
-            </properties>
-        </action>
-        <action>
-            <actionName>debug</actionName>
-            <packagings>
-                <packaging>jar</packaging>
-            </packagings>
-            <goals>
-                <goal>process-classes</goal>
-                <goal>org.codehaus.mojo:exec-maven-plugin:1.2.1:exec</goal>
-            </goals>
-            <properties>
-                <exec.args>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address} -classpath %classpath de.uni-bielefeld.cit-ec.opensource.hlrc.main.Cmd --idle</exec.args>
-                <exec.executable>java</exec.executable>
-                <jpda.listen>true</jpda.listen>
-            </properties>
-        </action>
-        <action>
-            <actionName>profile</actionName>
-            <packagings>
-                <packaging>jar</packaging>
-            </packagings>
-            <goals>
-                <goal>process-classes</goal>
-                <goal>org.codehaus.mojo:exec-maven-plugin:1.2.1:exec</goal>
-            </goals>
-            <properties>
-                <exec.args>-classpath %classpath de.uni-bielefeld.cit-ec.opensource.hlrc.main.Cmd --idle</exec.args>
-                <exec.executable>java</exec.executable>
-            </properties>
-        </action>
-    </actions>
diff --git a/client/java/pom.xml b/client/java/pom.xml
deleted file mode 100644
index 4f07161..0000000
--- a/client/java/pom.xml
+++ /dev/null
@@ -1,121 +0,0 @@
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>de.citec.csra</groupId>
-    <artifactId>hlrc-client</artifactId>
-    <version>0.1-SNAPSHOT</version>
-    <packaging>jar</packaging>
-    <name>High Level Robot Control java client</name>
-    <url>http://maven.apache.org</url>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.1</version>
-                <configuration>
-                    <source>1.7</source>
-                    <target>1.7</target>
-                    <showDeprecation>true</showDeprecation>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>appassembler-maven-plugin</artifactId>
-                <version>1.8</version>
-                <configuration>
-                    <programs>
-                        <program>
-                            <mainClass>de.uni-bielefeld.cit-ec.opensource.hlrc.main.Cmd</mainClass>
-                            <id>hlrc-client</id>
-                            
-                        </program>
-                    </programs>
-                    <!--                    <assembleDirectory>${project.build.directory}/dist</assembleDirectory>
-                    <repositoryName>lib</repositoryName>
-                    <repositoryLayout>flat</repositoryLayout>-->
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>assemble</id>
-                        <goals>
-                            <goal>assemble</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-    <licenses>
-        <license>
-            <name>GPLv3</name>
-            <url>http://www.gnu.org/licenses/gpl.html</url>
-        </license>
-    </licenses>
-    <organization>
-        <name>Citec, Bielefeld University</name>
-        <url>http://www.cit-ec.de/</url>
-    </organization>
-    <developers>
-        <developer>
-            <id>flier</id>
-            <name>Florian Lier</name>
-            <email>flier@techfak.uni-bielefeld.de</email>
-            <url>https://www.cit-ec.de/de/users/flier</url>
-            <roles>
-                <role>architect</role>
-                <role>developer</role>
-            </roles>
-            <timezone>+1</timezone>
-        </developer>
-    </developers>
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    </properties>
-    <dependencies>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-            <version>1.7.7</version>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-simple</artifactId>
-            <version>1.7.7</version>
-        </dependency>            
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.11</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>rsb</groupId>
-            <artifactId>rsb</artifactId>
-            <version>[0.11.0,)</version>
-        </dependency>
-        <dependency>
-            <groupId>rsb</groupId>
-            <artifactId>rst-sandbox-csra</artifactId>
-            <version>0.11-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-cli</groupId>
-            <artifactId>commons-cli</artifactId>
-            <version>1.2</version>
-        </dependency>
-	<dependency>
-            <groupId>commons-lang</groupId>
-            <artifactId>commons-lang</artifactId>
-            <version>2.6</version>
-        </dependency>
-    </dependencies>
-    <distributionManagement>
-        <repository>
-            <id>citec</id>
-            <name>CITEC Maven Repository Server</name>
-            <url>https://repo.cit-ec.uni-bielefeld.de/content/repositories/releases/</url>
-            <layout>default</layout>
-        </repository>
-    </distributionManagement>
-</project>
diff --git a/client/java/src/main/java/de/uni-bielefeld/cit-ec/opensource/hlrc/client/Emotions.java b/client/java/src/main/java/de/uni-bielefeld/cit-ec/opensource/hlrc/client/Emotions.java
deleted file mode 100644
index 8851add..0000000
--- a/client/java/src/main/java/de/uni-bielefeld/cit-ec/opensource/hlrc/client/Emotions.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-* This file is part of hlrc
-*
-* Copyright(c) {flier,sschulz} <AT> techfak.uni-bielefeld.de
-* http://opensource.cit-ec.de/projects/hlrc
-*
-* This file may be licensed under the terms of the
-* GNU General Public License Version 3 (the ``GPL''),
-* or (at your option) any later version.
-*
-* Software distributed under the License is distributed
-* on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
-* express or implied. See the GPL for the specific language
-* governing rights and limitations.
-*
-* You should have received a copy of the GPL along with this
-* program. If not, go to http://www.gnu.org/licenses/gpl.html
-* or write to the Free Software Foundation, Inc.,
-* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-*
-* The development of this software was supported by the
-* Excellence Cluster EXC 277 Cognitive Interaction Technology.
-* The Excellence Cluster EXC 277 is a grant of the Deutsche
-* Forschungsgemeinschaft (DFG) in the context of the German
-* Excellence Initiative.
-*
-*/
-
-package de.uni_bielefeld.cit_ec.opensource.hlrc.client;
-
-public enum Emotions {
-    NEUTRAL,
-    HAPPY,	
-    SAD,	
-    ANGRY,
-    SURPRISED,	
-    FEAR
-}
diff --git a/client/java/src/main/java/de/uni-bielefeld/cit-ec/opensource/hlrc/client/HeadAnimations.java b/client/java/src/main/java/de/uni-bielefeld/cit-ec/opensource/hlrc/client/HeadAnimations.java
deleted file mode 100644
index 17c2314..0000000
--- a/client/java/src/main/java/de/uni-bielefeld/cit-ec/opensource/hlrc/client/HeadAnimations.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-* This file is part of hlrc
-*
-* Copyright(c) {flier,sschulz} <AT> techfak.uni-bielefeld.de
-* http://opensource.cit-ec.de/projects/hlrc
-*
-* This file may be licensed under the terms of the
-* GNU General Public License Version 3 (the ``GPL''),
-* or (at your option) any later version.
-*
-* Software distributed under the License is distributed
-* on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
-* express or implied. See the GPL for the specific language
-* governing rights and limitations.
-*
-* You should have received a copy of the GPL along with this
-* program. If not, go to http://www.gnu.org/licenses/gpl.html
-* or write to the Free Software Foundation, Inc.,
-* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-*
-* The development of this software was supported by the
-* Excellence Cluster EXC 277 Cognitive Interaction Technology.
-* The Excellence Cluster EXC 277 is a grant of the Deutsche
-* Forschungsgemeinschaft (DFG) in the context of the German
-* Excellence Initiative.
-*
-*/
-
-package de.uni_bielefeld.cit_ec.opensource.hlrc.client;
-
-public enum HeadAnimations {
-    IDLE,
-    HEAD_NOD,
-    HEAD_SHAKE,
-    EYEBLINK_L,
-    EYEBLINK_R,
-    EYEBLINK_BOTH,
-    EYEBROWS_RAISE,
-    EYEBROWS_LOWER
-}
\ No newline at end of file
diff --git a/client/java/src/main/java/de/uni-bielefeld/cit-ec/opensource/hlrc/client/MiddlewareRSB.java b/client/java/src/main/java/de/uni-bielefeld/cit-ec/opensource/hlrc/client/MiddlewareRSB.java
deleted file mode 100644
index 2f214a2..0000000
--- a/client/java/src/main/java/de/uni-bielefeld/cit-ec/opensource/hlrc/client/MiddlewareRSB.java
+++ /dev/null
@@ -1,358 +0,0 @@
-/*
-* This file is part of hlrc
-*
-* Copyright(c) {flier,sschulz} <AT> techfak.uni-bielefeld.de
-* http://opensource.cit-ec.de/projects/hlrc
-*
-* This file may be licensed under the terms of the
-* GNU General Public License Version 3 (the ``GPL''),
-* or (at your option) any later version.
-*
-* Software distributed under the License is distributed
-* on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
-* express or implied. See the GPL for the specific language
-* governing rights and limitations.
-*
-* You should have received a copy of the GPL along with this
-* program. If not, go to http://www.gnu.org/licenses/gpl.html
-* or write to the Free Software Foundation, Inc.,
-* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-*
-* The development of this software was supported by the
-* Excellence Cluster EXC 277 Cognitive Interaction Technology.
-* The Excellence Cluster EXC 277 is a grant of the Deutsche
-* Forschungsgemeinschaft (DFG) in the context of the German
-* Excellence Initiative.
-*
-*/
-
-package de.uni_bielefeld.cit_ec.opensource.hlrc.client;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeoutException;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.sound.sampled.AudioFormat;
-import javax.sound.sampled.AudioFormat.Encoding;
-
-import rsb.Factory;
-import rsb.RSBException;
-import rsb.converter.DefaultConverterRepository;
-import rsb.converter.ProtocolBufferConverter;
-import rsb.patterns.RemoteServer;
-
-import rst.audition.PhonemeType.Phoneme;
-import rst.audition.SoundChunkType.SoundChunk;
-import rst.audition.UtteranceType.Utterance;
-import rst.robot.AnimationType.Animation;
-import rst.robot.AnimationType.Animation.AnimationType_t;
-import rst.robot.EmotionStateType.EmotionState;
-import rst.robot.EmotionStateType.EmotionState.EmotionType;
-import rst.robot.GazeTargetType.GazeTarget;
-
-import com.google.protobuf.ByteString;
-
-// Create _abstract_ middleware class and function _interface_ for 
-// future integration of additional Middleware implementations...
-
-import rsb.Factory;
-import rsb.Informer;
-
-
-public class MiddlewareRSB {
-
-    final RemoteServer server;
-    final String robotname;
-    static Map<Emotions, EmotionType> emo_map;
-    static Map<HeadAnimations, AnimationType_t> han_map;
-    
-    public class RSBInformer {
-
-    final Factory factory;
-    final Informer<Object> informer;
-        
-    public RSBInformer(String scope) throws Throwable {
-
-        // Get a factory instance to create RSB objects.
-        factory = Factory.getInstance();
-
-        // Create an informer on scope "/exmaple/informer".
-        informer = factory.createInformer(scope);
-
-        // Activate the informer to be ready for work
-        informer.activate();
-
-    }
-    
-    public void pushMsg(){
-        try {
-            // Send and event using a method that accepts the data and
-            // automatically creates an appropriate event internally.
-            this.informer.send("TODO");
-        } catch (RSBException ex) {
-            Logger.getLogger(MiddlewareRSB.class.getName()).log(Level.SEVERE, null, ex);
-        }
-    }
-    
-    public void closeInf() throws InterruptedException {
-        try {
-            // As there is no explicit removal model in java, always manually
-            // deactivate the informer if it is not needed anymore
-            this.informer.deactivate();
-        } catch (RSBException ex) {
-            Logger.getLogger(MiddlewareRSB.class.getName()).log(Level.SEVERE, null, ex);
-        }
-    }
-    
-}
-    
-    
-    @SuppressWarnings("unchecked")
-	public MiddlewareRSB(String robotname) {
-        
-        this.robotname = robotname;
-            
-        server = Factory.getInstance().createRemoteServer(this.robotname+"/set/");
-        System.out.println("--> Robot: Talking to "+this.robotname);
-        try {
-            server.activate();
-        } catch (RSBException ex) {
-            Logger.getLogger(MiddlewareRSB.class.getName()).log(Level.SEVERE, null, ex);
-        }
-
-        {
-            final ProtocolBufferConverter<EmotionState> converter = new ProtocolBufferConverter<>(EmotionState.getDefaultInstance());
-            DefaultConverterRepository.getDefaultConverterRepository().addConverter(converter);
-        }
-        {
-            final ProtocolBufferConverter<GazeTarget> converter = new ProtocolBufferConverter<>(GazeTarget.getDefaultInstance());
-            DefaultConverterRepository.getDefaultConverterRepository().addConverter(converter);
-        }
-        {
-            final ProtocolBufferConverter<Animation> converter = new ProtocolBufferConverter<>(Animation.getDefaultInstance());
-            DefaultConverterRepository.getDefaultConverterRepository().addConverter(converter);
-        }
-        {
-            final ProtocolBufferConverter<Utterance> converter = new ProtocolBufferConverter<>(Utterance.getDefaultInstance());
-            DefaultConverterRepository.getDefaultConverterRepository().addConverter(converter);
-        }
-        {
-            final ProtocolBufferConverter<SoundChunk> converter = new ProtocolBufferConverter<>(SoundChunk.getDefaultInstance());
-            DefaultConverterRepository.getDefaultConverterRepository().addConverter(converter);
-        }
-        {
-            final ProtocolBufferConverter<Phoneme> converter = new ProtocolBufferConverter<>(Phoneme.getDefaultInstance());
-            DefaultConverterRepository.getDefaultConverterRepository().addConverter(converter);
-        }
-
-        emo_map = new HashMap();
-        emo_map.put(Emotions.SAD,       EmotionType.SAD);
-        emo_map.put(Emotions.ANGRY,     EmotionType.ANGRY);
-        emo_map.put(Emotions.FEAR,      EmotionType.FEAR);
-        emo_map.put(Emotions.NEUTRAL,   EmotionType.NEUTRAL);
-        emo_map.put(Emotions.SURPRISED, EmotionType.SURPRISED);
-        emo_map.put(Emotions.HAPPY,     EmotionType.HAPPY);
-
-        han_map = new HashMap();
-        han_map.put(HeadAnimations.HEAD_NOD,       AnimationType_t.HEAD_NOD);
-        han_map.put(HeadAnimations.HEAD_SHAKE,     AnimationType_t.HEAD_SHAKE);
-        han_map.put(HeadAnimations.IDLE,           AnimationType_t.IDLE);
-        han_map.put(HeadAnimations.EYEBLINK_R,     AnimationType_t.EYEBLINK_R);
-        han_map.put(HeadAnimations.EYEBLINK_L,     AnimationType_t.EYEBLINK_L);
-        han_map.put(HeadAnimations.EYEBLINK_BOTH,  AnimationType_t.EYEBLINK_BOTH);
-        han_map.put(HeadAnimations.EYEBROWS_LOWER, AnimationType_t.EYEBROWS_LOWER);
-        han_map.put(HeadAnimations.EYEBROWS_RAISE, AnimationType_t.EYEBROWS_RAISE);
-    }
-
-    private SoundChunk compileSoundChunk(AudioFormat audio, byte[] data) {
-       SoundChunk.Builder sc = SoundChunk.newBuilder();
-        ByteString bs = ByteString.copyFrom(data);
-        boolean isbig = audio.isBigEndian();
-        sc.setChannels(audio.getChannels());
-        sc.setData(bs);
-        sc.setRate((int) audio.getSampleRate());
-
-        if (isbig) {
-            sc.setEndianness(SoundChunk.EndianNess.ENDIAN_BIG);
-        } else {
-            sc.setEndianness(SoundChunk.EndianNess.ENDIAN_LITTLE);
-        }
-
-        sc.setSampleCount(data.length / audio.getFrameSize());
-        Encoding enc = audio.getEncoding();
-
-        if (enc.equals(Encoding.PCM_SIGNED)) {
-            int size = audio.getSampleSizeInBits();
-            if (size == 8) {
-                sc.setSampleType(SoundChunk.SampleType.SAMPLE_S8);
-            } else if (size == 16) {
-                sc.setSampleType(SoundChunk.SampleType.SAMPLE_S16);
-            } else if (size == 24) {
-                sc.setSampleType(SoundChunk.SampleType.SAMPLE_S24);
-            } else {
-                System.err.println("Audio Sample Size Not Valid");
-            }
-        } else if (enc.equals(Encoding.PCM_UNSIGNED)) {
-            int size = audio.getSampleSizeInBits();
-            if (size == 8) {
-                sc.setSampleType(SoundChunk.SampleType.SAMPLE_U8);
-            } else if (size == 16) {
-                sc.setSampleType(SoundChunk.SampleType.SAMPLE_U16);
-            } else if (size == 24) {
-                sc.setSampleType(SoundChunk.SampleType.SAMPLE_U24);
-            } else {
-                System.err.println("Audio Sample Size not valid");
-                // This is too rigorous, maybe.
-                // System.exit(-1);
-            }
-        } else {
-            System.err.println("Audio Encoding is invalid");
-        }
-        return sc.build();
-    }
-
-    public void deactivateServer() throws InterruptedException {
-        try {
-            this.server.deactivate();
-        } catch (RSBException ex) {
-            Logger.getLogger(MiddlewareRSB.class.getName()).log(Level.SEVERE, null, ex);
-        }
-    }
-
-    // OBSOLETE
-    /*
-     public MouthAnimation createMouthAnimationMessage(int duration, boolean active) {
-     MouthAnimation.Builder ma = MouthAnimation.newBuilder();
-     ma.setDuration(duration);
-     ma.setActive(active);
-     return ma.build();
-     }
-     */
-    
-    public Utterance createSetSpeak(SoundChunk soundchunck, ArrayList tuList, String text) {
-        Utterance.Builder ut = Utterance.newBuilder();
-        ut.setAudio(soundchunck);
-        for (int i=0; i< tuList.size();i++) {
-        	Phoneme.Builder ph = Phoneme.newBuilder();
-        	Tuple t = (Tuple) tuList.get(i);
-        	ph.setSymbol(t.s);
-            ph.setDuration(t.d);
-            ut.addPhonemes(i, ph);
-            
-        }
-        System.out.println("Phonem count " + ut.getPhonemesCount() + " Phonem list " + ut.getPhonemesList());
-        ut.setText(text);
-        return ut.build();
-    }
-
-    public Animation createHeadAnimationMessage(HeadAnimations ani, int duration, int repetition, float scale) {
-        Animation.Builder ha = Animation.newBuilder();
-        ha.setRepetitions(repetition);
-        ha.setTarget(han_map.get(ani));
-        ha.setDurationEach(duration);
-        ha.setScale(scale);
-        return ha.build();
-    }
-
-    public EmotionState createCurrentEmotionMessage(Emotions emo, int duration) {
-        EmotionState.Builder es = EmotionState.newBuilder();
-        es.setDuration(duration);
-        es.setValue(emo_map.get(emo));
-        return es.build();
-    }
-
-    public EmotionState createDefaultEmotionMessage(Emotions emo) {
-        EmotionState.Builder es = EmotionState.newBuilder();
-        es.setValue(emo_map.get(emo));
-        return es.build();
-    }
-
-    public GazeTarget createGazeTargetMessage(float pan, float tilt, float roll) {
-        GazeTarget.Builder gt = GazeTarget.newBuilder();
-        gt.setPan(pan);
-        gt.setTilt(tilt);
-        gt.setRoll(roll);
-        return gt.build();
-    }
-
-    public void setSpeak(AudioFormat audio, byte[] bs, ArrayList tu, String text, boolean blocking) throws ExecutionException, TimeoutException {
-        SoundChunk sc;
-        sc = compileSoundChunk(audio, bs);
-        if (blocking) {
-            try {
-                server.call("utterance", createSetSpeak(sc, tu, text));
-                // System.out.println("Server replied: " + server.call("utterance", createSetSpeak(sc, tu)));
-            } catch (RSBException ex) {
-                Logger.getLogger(MiddlewareRSB.class.getName()).log(Level.SEVERE, null, ex);
-            }
-        } else {
-            try {             
-                server.callAsync("utterance", createSetSpeak(sc, tu, text));
-                // System.out.println("Set Mouth Animation non-blocking, not wating for reply");
-            } catch (RSBException ex) {
-                Logger.getLogger(MiddlewareRSB.class.getName()).log(Level.SEVERE, null, ex);
-            }
-        }
-    }
-    
-    public void setCurrentEmotion(Emotions emo, int duration, boolean blocking) throws ExecutionException, TimeoutException {
-        try {
-            if (blocking) {
-                server.call("currentEmotion", createCurrentEmotionMessage(emo, duration));
-                // System.out.println("Server replied: " + server.call("currentEmotion", createEmotionMessage(emo, duration)));
-            } else {        
-                server.callAsync("currentEmotion", createCurrentEmotionMessage(emo, duration));
-                // System.out.println("Set Emotion non-blocking, not wating for reply");
-            }
-
-        } catch (RSBException ex) {
-            Logger.getLogger(MiddlewareRSB.class.getName()).log(Level.SEVERE, null, ex);
-        }
-    }
-
-    public void setGazeTarget(float pan, float tilt, float roll, boolean blocking) throws ExecutionException, TimeoutException {
-        try {
-            if (blocking) {
-                server.call("gaze", createGazeTargetMessage(pan, tilt, roll));
-                // System.out.println("Server replied: " + server.call("gaze", createGazeTargetMessage(pan, tilt, roll)));
-            } else {               
-                server.callAsync("gaze", createGazeTargetMessage(pan, tilt, roll));
-                // System.out.println("Set Gaze non-blocking, not wating for reply");
-            }
-        } catch (RSBException ex) {
-            Logger.getLogger(MiddlewareRSB.class.getName()).log(Level.SEVERE, null, ex);
-        }
-    }
-
-    public void setDefaultEmotion(Emotions emo, boolean blocking) throws ExecutionException, TimeoutException {
-        try {
-            if (blocking) {
-                server.call("defaultEmotion", createDefaultEmotionMessage(emo));
-                // System.out.println("Server replied: " + server.call("defaultEmotion", createDefaultEmotionMessage(emo)));
-            } else {              
-                server.callAsync("defaultEmotion", createDefaultEmotionMessage(emo));
-                // System.out.println("Set Default Emotion non-blocking, not wating for reply");
-            }
-        } catch (RSBException ex) {
-            Logger.getLogger(MiddlewareRSB.class.getName()).log(Level.SEVERE, null, ex);
-        }
-    }
-
-    public void setHeadAnimation(HeadAnimations ani, int duration, int repetitions, float scale, boolean blocking) throws ExecutionException, TimeoutException {
-        try {
-            if (blocking) {
-                server.call("animation", createHeadAnimationMessage(ani, duration, repetitions, scale));
-                // System.out.println("Server replied: " + server.call("animation", createHeadAnimationMessage(ani, duration, repetitions, scale)));
-            } else {
-                server.callAsync("animation", createHeadAnimationMessage(ani, duration, repetitions, scale));
-                // System.out.println("Set Head Animation non-blocking, not wating for reply");
-            }
-        } catch (RSBException ex) {
-            Logger.getLogger(MiddlewareRSB.class.getName()).log(Level.SEVERE, null, ex);
-        }
-    }
-}
diff --git a/client/java/src/main/java/de/uni-bielefeld/cit-ec/opensource/hlrc/client/RobotController.java b/client/java/src/main/java/de/uni-bielefeld/cit-ec/opensource/hlrc/client/RobotController.java
deleted file mode 100644
index 9106263..0000000
--- a/client/java/src/main/java/de/uni-bielefeld/cit-ec/opensource/hlrc/client/RobotController.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
-* This file is part of hlrc
-*
-* Copyright(c) {flier,sschulz} <AT> techfak.uni-bielefeld.de
-* http://opensource.cit-ec.de/projects/hlrc
-*
-* This file may be licensed under the terms of the
-* GNU General Public License Version 3 (the ``GPL''),
-* or (at your option) any later version.
-*
-* Software distributed under the License is distributed
-* on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
-* express or implied. See the GPL for the specific language
-* governing rights and limitations.
-*
-* You should have received a copy of the GPL along with this
-* program. If not, go to http://www.gnu.org/licenses/gpl.html
-* or write to the Free Software Foundation, Inc.,
-* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-*
-* The development of this software was supported by the
-* Excellence Cluster EXC 277 Cognitive Interaction Technology.
-* The Excellence Cluster EXC 277 is a grant of the Deutsche
-* Forschungsgemeinschaft (DFG) in the context of the German
-* Excellence Initiative.
-*
-*/
-
-package de.uni_bielefeld.cit_ec.opensource.hlrc.client;
-
-import java.util.ArrayList;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeoutException;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import javax.sound.sampled.AudioFormat;
-
-public class RobotController {
-
-    private final String name;
-    private final String middlwarename;
-    public final MiddlewareRSB mw;
-
-    
-    /**
-    * 
-    * Create a new RobotController
-    * 
-    * @param name String robot name i.e. "/home/wardrobe/flobi", "/home/kitchen/flobi"
-    * @param middleware String what Middleware Layer to use
-    *
-    */
-    public RobotController(String name, String middleware) {
-        this.name = name;
-        this.middlwarename = middleware;
-        if (middleware.toUpperCase().equals("RSB")) {
-            System.out.println("--> RobotController: "+name+" using middleware: "+middleware+ " has been initialized");
-            this.mw = new MiddlewareRSB(this.name);
-        } else {
-            System.out.println("Only RSB Supported for now. Sorry.");
-            this.mw = new MiddlewareRSB(this.name);
-        }
-    }
-
-    /**
-    * 
-    * Start the RobotController's mouth animation 
-    * 
-    * @param audio Java std auto format
-    * @param bytes Byte Array containing the actual audio stream
-    * @param tuList A list of Tupel phoneme plus duration 
-    * @param blocking invoke the command blocking or non blocking TRUE/FALSE
-    *
-    */
-
-    public void setSpeak(AudioFormat audio, byte[] bytes, ArrayList tuList, String text, boolean blocking) {
-        try {
-            // System.out.println(">> Sending Set Speak: Blocking: " + blocking);
-            mw.setSpeak(audio, bytes, tuList, text, blocking);
-        } catch (ExecutionException | TimeoutException ex) {
-            Logger.getLogger(RobotController.class.getName()).log(Level.SEVERE, null, ex);
-        }
-        
-    }
-
-    public void setGazeTarget(float pan, float tilt, float roll, boolean blocking) {
-        try {
-            // System.out.println(">> Sending Gaze: pan|tilt|roll: " + pan + " / " + tilt + " / " + roll + " / Blocking: " + blocking);
-            mw.setGazeTarget(pan, tilt, roll, blocking);
-        } catch (ExecutionException | TimeoutException ex) {
-            Logger.getLogger(RobotController.class.getName()).log(Level.SEVERE, null, ex);
-        }
-    }
-    
-     /**
-    * 
-    * set robots emotion
-    * 
-    * @param  emo      set the desired EMOTION
-    * @param  duration the length of the animation in MILLISECONDS
-    * @param  blocking invoke the command blocking or non blocking TRUE/FALSE
-    *
-    */
-    public void setCurrentEmotion(Emotions emo, int duration, boolean blocking) {
-        try {
-            // System.out.println(">> Sending Emotion: " + emo + " / duration: " + duration + " / Blocking: " + blocking);
-            mw.setCurrentEmotion(emo, duration, blocking);
-        } catch (ExecutionException | TimeoutException ex) {
-            Logger.getLogger(RobotController.class.getName()).log(Level.SEVERE, null, ex);
-        }
-    }
-
-    public void setDefaultEmotion(Emotions emo, boolean blocking) {
-        try {
-            // System.out.println(">> Sending Default Emotion: " + emo + " / Blocking: " + blocking);
-            mw.setDefaultEmotion(emo, blocking);
-        } catch (ExecutionException | TimeoutException ex) {
-            Logger.getLogger(RobotController.class.getName()).log(Level.SEVERE, null, ex);
-        }
-    }
-
-    public void setHeadAnimation(HeadAnimations ani, int duration, int repetitions, float scale, boolean blocking) {
-        try {
-            // System.out.println(">> Sending Animation: " + ani + " / Duration: " + duration + " / Repetitions: " + repetitions + " / Blocking: " + blocking);
-            mw.setHeadAnimation(ani, duration, repetitions, scale, blocking);
-        } catch (ExecutionException | TimeoutException ex) {
-            Logger.getLogger(RobotController.class.getName()).log(Level.SEVERE, null, ex);
-        }
-    }
-
-    /*
-    public void getMouthAnimation() {
-        System.out.println("Get Mouth Animation - Not implemented.");
-    }
-
-    public void getEmotion() {
-        System.out.println("Get Emotion - Not implemented.");
-    }
-
-    public void getGazeTarget() {
-        System.out.println("Get Gaze Target - Not implemented");
-    }
-
-    public void getDefaultEmotion() {
-        System.out.println("Get Default Emotion - Not implemented");
-    }
-
-    public void getHeadAnimation() {
-        System.out.println("Get Head Animation - Not implemented");
-    }
-    */
-    
-    public String getRobotControllerName() {
-        return this.name;
-    }
-    
-    public String getMiddleware() {
-        return this.middlwarename;
-    }
-
-}
diff --git a/client/java/src/main/java/de/uni-bielefeld/cit-ec/opensource/hlrc/client/Tuple.java b/client/java/src/main/java/de/uni-bielefeld/cit-ec/opensource/hlrc/client/Tuple.java
deleted file mode 100644
index c60c72d..0000000
--- a/client/java/src/main/java/de/uni-bielefeld/cit-ec/opensource/hlrc/client/Tuple.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-* This file is part of hlrc
-*
-* Copyright(c) {flier,sschulz} <AT> techfak.uni-bielefeld.de
-* http://opensource.cit-ec.de/projects/hlrc
-*
-* This file may be licensed under the terms of the
-* GNU General Public License Version 3 (the ``GPL''),
-* or (at your option) any later version.
-*
-* Software distributed under the License is distributed
-* on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
-* express or implied. See the GPL for the specific language
-* governing rights and limitations.
-*
-* You should have received a copy of the GPL along with this
-* program. If not, go to http://www.gnu.org/licenses/gpl.html
-* or write to the Free Software Foundation, Inc.,
-* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-*
-* The development of this software was supported by the
-* Excellence Cluster EXC 277 Cognitive Interaction Technology.
-* The Excellence Cluster EXC 277 is a grant of the Deutsche
-* Forschungsgemeinschaft (DFG) in the context of the German
-* Excellence Initiative.
-*
-*/
-
-package de.uni_bielefeld.cit_ec.opensource.hlrc.client;
-
-/**
- *
- * @param <Symbol>
- * @param <double>
- * 
- */
-public class Tuple { 
-  protected final String s; 
-  protected final int d; 
-  
-  public Tuple(String phone, int d) { 
-    this.s = phone; 
-    this.d = d; 
-  } 
-  
-} 
\ No newline at end of file
diff --git a/client/java/src/main/java/de/uni-bielefeld/cit-ec/opensource/hlrc/examples/SimpleExample.java b/client/java/src/main/java/de/uni-bielefeld/cit-ec/opensource/hlrc/examples/SimpleExample.java
deleted file mode 100644
index eef6cf7..0000000
--- a/client/java/src/main/java/de/uni-bielefeld/cit-ec/opensource/hlrc/examples/SimpleExample.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-* This file is part of hlrc_client_java
-*
-* Copyright(c) {flier,sschulz} <AT> techfak.uni-bielefeld.de
-* http://opensource.cit-ec.de/projects/hlrc_server
-*
-* This file may be licensed under the terms of the
-* GNU General Public License Version 3 (the ``GPL''),
-* or (at your option) any later version.
-*
-* Software distributed under the License is distributed
-* on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
-* express or implied. See the GPL for the specific language
-* governing rights and limitations.
-*
-* You should have received a copy of the GPL along with this
-* program. If not, go to http://www.gnu.org/licenses/gpl.html
-* or write to the Free Software Foundation, Inc.,
-* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-*
-* The development of this software was supported by the
-* Excellence Cluster EXC 277 Cognitive Interaction Technology.
-* The Excellence Cluster EXC 277 is a grant of the Deutsche
-* Forschungsgemeinschaft (DFG) in the context of the German
-* Excellence Initiative.
-*
-*/
-
-package de.uni_bielefeld.cit_ec.opensource.hlrc.examples;
-
-import de.uni_bielefeld.cit_ec.opensource.hlrc.client.Emotions;
-import de.uni_bielefeld.cit_ec.opensource.hlrc.client.RobotController;
-
-public class SimpleExample {
-    
-    public SimpleExample(String robotname, String middleware) {
-        String name = robotname;
-        String mw = middleware;
-        // Create a new Robot
-        RobotController r = new RobotController(name, mw);
-        
-        // Do something HIGH LEVEL with ease!
-        r.setCurrentEmotion(Emotions.SAD, 1000, true);
-        // r.setGazeTarget(70.0f, 50.0f, 40.0f, true);
-    }
-
-    public static void main(String [] args) {
-            SimpleExample se = new SimpleExample("/home/kitchen/flobi", "RSB");
-    }
-    
-}
-
diff --git a/client/java/src/main/java/de/uni-bielefeld/cit-ec/opensource/hlrc/main/Cmd.java b/client/java/src/main/java/de/uni-bielefeld/cit-ec/opensource/hlrc/main/Cmd.java
deleted file mode 100644
index 226d17b..0000000
--- a/client/java/src/main/java/de/uni-bielefeld/cit-ec/opensource/hlrc/main/Cmd.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
-* This file is part of hlrc_client_java
-*
-* Copyright(c) {flier,sschulz} <AT> techfak.uni-bielefeld.de
-* http://opensource.cit-ec.de/projects/hlrc_server
-*
-* This file may be licensed under the terms of the
-* GNU General Public License Version 3 (the ``GPL''),
-* or (at your option) any later version.
-*
-* Software distributed under the License is distributed
-* on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
-* express or implied. See the GPL for the specific language
-* governing rights and limitations.
-*
-* You should have received a copy of the GPL along with this
-* program. If not, go to http://www.gnu.org/licenses/gpl.html
-* or write to the Free Software Foundation, Inc.,
-* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-*
-* The development of this software was supported by the
-* Excellence Cluster EXC 277 Cognitive Interaction Technology.
-* The Excellence Cluster EXC 277 is a grant of the Deutsche
-* Forschungsgemeinschaft (DFG) in the context of the German
-* Excellence Initiative.
-*
-*/
-
-package de.uni_bielefeld.cit_ec.opensource.hlrc.main;
-
-import de.uni_bielefeld.cit_ec.opensource.hlrc.client.HeadAnimations;
-import de.uni_bielefeld.cit_ec.opensource.hlrc.client.Emotions;
-import de.uni_bielefeld.cit_ec.opensource.hlrc.client.RobotController;
-
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.apache.commons.cli.BasicParser;
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.CommandLineParser;
-import org.apache.commons.cli.HelpFormatter;
-import org.apache.commons.cli.Options;
-import org.apache.commons.cli.ParseException;
-
-import rsb.RSBException;
-
-public class Cmd {
-
-    public static void main(String[] args) throws RSBException {
-
-        try {
-            
-            RobotController robot;
-            CommandLineParser parser = new BasicParser();
-            CommandLine line;
-            
-            Options lvOptions = new Options();
-            lvOptions.addOption("de", "default",       false, "set the robot's default emotion");
-            lvOptions.addOption("ga", "gaze",          false, "make the robot look somewhere");
-            lvOptions.addOption("rg", "resetgaze",     false, "make the robot look towards you");
-            lvOptions.addOption("sa", "sad",           false, "make robot look sad");
-            lvOptions.addOption("ha", "happy",         false, "make robot look happy");
-            lvOptions.addOption("ne", "neutral",       false, "make the robot look neutral");
-            lvOptions.addOption("an", "angry",         false, "make the robot look angry");
-            lvOptions.addOption("su", "surprised",     false, "make the robot look surprised");
-            lvOptions.addOption("fe", "fear",          false, "make the robot look afraid");
-            lvOptions.addOption("id", "idle",          false, "make robot look idle");
-            lvOptions.addOption("no", "nodding",       false, "make the robot nodding his head");
-            lvOptions.addOption("he", "headshake",     false, "make the robot shake his head");
-            lvOptions.addOption("er", "eyeblinkright", false, "make the robot's right eye blink");
-            lvOptions.addOption("el", "eyeblinkleft",  false, "make the robot's left eye blink");
-            lvOptions.addOption("br", "eyebrowsraise", false, "make the robot's brows raise");
-            lvOptions.addOption("bl", "eyebrowslower", false, "make the robot's brows lower");
-            lvOptions.addOption("eb", "eyeblinkboth",  false, "make both robot's eyes blink");
-            lvOptions.addOption("r",  "robotname",     true,  "set the robot name i.e. /home/kitchen/flobi");
-            lvOptions.addOption("h", "help",           false, "show help");
-            
-            System.out.println("-- High Level Control Client successfully initialized --");
-            
-            try {
-                line = parser.parse(lvOptions, args);
-            } catch (ParseException ex) {
-                // Logger.getLogger(Cmd.class.getName()).log(Level.SEVERE, null, ex);
-                System.out.println("--> Unrecognized Option. Exiting...");
-                return;
-            }
-            if (line.hasOption("help")) {
-                HelpFormatter lvFormater = new HelpFormatter();
-                lvFormater.printHelp("High Level Control Client", lvOptions);
-                return;
-            }
-            
-            if (line.getOptionValue("robotname") != null) {
-                robot = new RobotController(line.getOptionValue("robotname"), "RSB");
-            } else {
-                System.out.println("--> You need to provide a robot name, see --help");
-                return;
-            }
-            
-            if (line.hasOption("gaze")) {
-                robot.setGazeTarget(35.0f, 20.0f, 10.0f, true);
-            }else if (line.hasOption("resetgaze")) {
-                robot.setGazeTarget(0.0f, 0.0f, 0.0f, true);
-            }else if (line.hasOption("idle")) {
-                robot.setHeadAnimation(HeadAnimations.IDLE, 1000, 1, 1.0f ,true);
-            }else if (line.hasOption("nodding")) {
-                robot.setHeadAnimation(HeadAnimations.HEAD_NOD, 1000, 1, 1.0f, true);
-            }
-            else if (line.hasOption("headshake")) {
-                robot.setHeadAnimation(HeadAnimations.HEAD_SHAKE, 1000, 1, 1.0f, true);
-            }
-            else if (line.hasOption("eyeblinkright")) {
-                robot.setHeadAnimation(HeadAnimations.EYEBLINK_R, 1000, 1, 1.0f, true);
-            }
-            else if (line.hasOption("eyeblinkleft")) {
-                robot.setHeadAnimation(HeadAnimations.EYEBLINK_L, 1000, 1, 1.0f, true);
-            }
-            else if (line.hasOption("eyeblinkboth")) {
-                robot.setHeadAnimation(HeadAnimations.EYEBLINK_BOTH, 1000, 1, 1.0f, true);
-            }
-            else if (line.hasOption("eyebrowsraise")) {
-                robot.setHeadAnimation(HeadAnimations.EYEBROWS_RAISE, 1000, 1, 1.0f, true);
-            }
-            else if (line.hasOption("eyebrowslower")) {
-                robot.setHeadAnimation(HeadAnimations.EYEBROWS_LOWER, 1000, 1, 1.0f, true);
-            }
-            else if (line.hasOption("default")) {
-                robot.setDefaultEmotion(Emotions.NEUTRAL, true);
-            }
-            else if (line.hasOption("sad")) {
-                robot.setCurrentEmotion(Emotions.SAD, 1000, true);
-            }
-            else if (line.hasOption("happy")) {
-                robot.setCurrentEmotion(Emotions.HAPPY, 1000, true);
-            }
-            else if (line.hasOption("neutral")) {
-                robot.setCurrentEmotion(Emotions.NEUTRAL, 1000, true);
-            }
-            else if (line.hasOption("angry")) {
-                robot.setCurrentEmotion(Emotions.ANGRY, 1000, true);
-            }
-            else if (line.hasOption("surprised")) {
-                robot.setCurrentEmotion(Emotions.SURPRISED, 1000, true);
-            }
-            else if (line.hasOption("fear")) {
-                robot.setCurrentEmotion(Emotions.FEAR, 1000, true);
-            }else{
-                System.out.println("--> Invalid Command "+line.toString());
-            }
-            
-            // This is currently mandatory due to
-            // the RSB RemoteServer implementation
-            robot.mw.deactivateServer();
-        } catch (InterruptedException ex) {
-            // Logger.getLogger(Cmd.class.getName()).log(Level.SEVERE, null, ex);
-            System.out.println("Unrecognized Option. Exiting...");
-        }
-    }
-}
diff --git a/client/java/src/test/java/HlrcClientTests.java b/client/java/src/test/java/HlrcClientTests.java
deleted file mode 100644
index 5d400b2..0000000
--- a/client/java/src/test/java/HlrcClientTests.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
-* This file is part of hlrc_client_java
-*
-* Copyright(c) {flier,sschulz} <AT> techfak.uni-bielefeld.de
-* http://opensource.cit-ec.de/projects/hlrc_server
-*
-* This file may be licensed under the terms of the
-* GNU General Public License Version 3 (the ``GPL''),
-* or (at your option) any later version.
-*
-* Software distributed under the License is distributed
-* on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
-* express or implied. See the GPL for the specific language
-* governing rights and limitations.
-*
-* You should have received a copy of the GPL along with this
-* program. If not, go to http://www.gnu.org/licenses/gpl.html
-* or write to the Free Software Foundation, Inc.,
-* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-*
-* The development of this software was supported by the
-* Excellence Cluster EXC 277 Cognitive Interaction Technology.
-* The Excellence Cluster EXC 277 is a grant of the Deutsche
-* Forschungsgemeinschaft (DFG) in the context of the German
-* Excellence Initiative.
-*
-*/
-
-import de.uni_bielefeld.cit_ec.opensource.hlrc.client.HeadAnimations;
-import de.uni_bielefeld.cit_ec.opensource.hlrc.client.Emotions;
-import de.uni_bielefeld.cit_ec.opensource.hlrc.client.RobotController;
-
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-
-/**
- *
- * @author flier
- */
-public class HlrcClientTests {
-    
-    RobotController r;
-    
-    public HlrcClientTests() {
-        //
-    }
-    
-    @BeforeClass
-    public static void setUpClass() {
-        System.out.println("* HLRC CLIENT TESTS: @BeforeClass method");
-    }
-    
-    @AfterClass
-    public static void tearDownClass() {
-        System.out.println("* HLRC CLIENT TESTS: @AfterClass method");
-    }
-    
-    @Before
-    public void setUp() {
-        this.r = new RobotController("/home/kitchen/flobi", "RSB");
-        System.out.println("* HLRC CLIENT TESTS: @Before method");
-    }
-    
-    @After
-    public void tearDown() {
-        System.out.println("* HLRC CLIENT TESTS: @After method");
-    }
-
-    @Test
-    public void testConstructor() {
-        System.out.println("Constructor");
-        
-        assertEquals("TestRobot", this.r.getRobotControllerName());
-        assertEquals("RSB", r.getMiddleware());
-    }
-    
-    @Test
-    public void testGazeMsgCreation() {
-        System.out.println("RPC Calls");
-        this.r.mw.createGazeTargetMessage(70.0f, 50.0f, 40.0f);
-    }
-    
-    @Test
-    public void testHeadMsgCreation() {
-        System.out.println("Head Message");
-        this.r.mw.createHeadAnimationMessage(HeadAnimations.HEAD_NOD, 1000, 1, 1.0f);
-    }
-    
-    @Test
-    public void testEmotionCreation() {
-        System.out.println("Emotion Message");
-        this.r.mw.createCurrentEmotionMessage(Emotions.SAD, 1000);
-    }
-    
-}
diff --git a/client/python/hlrc_client/MiddlewareRSB.py b/client/python/hlrc_client/MiddlewareRSB.py
deleted file mode 100644
index 110f0bf..0000000
--- a/client/python/hlrc_client/MiddlewareRSB.py
+++ /dev/null
@@ -1,293 +0,0 @@
-"""
-This file is part of hlrc
-
-Copyright(c) sschulz <AT> techfak.uni-bielefeld.de
-http://opensource.cit-ec.de/projects/hlrc
-
-This file may be licensed under the terms of the
-GNU General Public License Version 3 (the ``GPL''),
-or (at your option) any later version.
-
-Software distributed under the License is distributed
-on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
-express or implied. See the GPL for the specific language
-governing rights and limitations.
-
-You should have received a copy of the GPL along with this
-program. If not, go to http://www.gnu.org/licenses/gpl.html
-or write to the Free Software Foundation, Inc.,
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-The development of this software was supported by the
-Excellence Cluster EXC 277 Cognitive Interaction Technology.
-The Excellence Cluster EXC 277 is a grant of the Deutsche
-Forschungsgemeinschaft (DFG) in the context of the German
-Excellence Initiative.
-"""
-
-from .Middleware import *
-import errno
-
-import rsb
-import rsb.converter
-import rst
-import rstsandbox
-
-from rst.animation.EmotionExpression_pb2 import EmotionExpression
-from rst.animation.HeadAnimation_pb2 import HeadAnimation
-from rst.animation.BinocularHeadGaze_pb2 import BinocularHeadGaze
-from rst.geometry.SphericalDirectionFloat_pb2 import SphericalDirectionFloat
-
-
-class MiddlewareRSB(Middleware):
-    #######################################################################
-    def __init__(self, scope, loglevel=logging.WARNING):
-        """initialise
-        :param scope: base scope we want to listen on
-        """
-        # init base settings
-        Middleware.__init__(self, scope, loglevel)
-        self.EmotionExpression_converter = None
-        self.HeadAnimation_converter = None
-        self.BinocularHeadGaze_converter = None
-        #call mw init
-        self.server = None
-        self.init_middleware()
-
-    def __del__(self):
-        """destructor
-        """
-        self.logger.debug("destructor of MiddlewareROS called")
-
-    #######################################################################
-    def init_middleware(self):
-        """initialise middleware
-        """
-        # mute rsb logging:
-        logging.getLogger("rsb").setLevel(logging.ERROR)
-
-        #initialise RSB stuff
-        self.logger.info(
-            "initialising RSB middleware connection on scope %s, registering rst converters..." % (self.base_scope))
-
-        self.EmotionExpression_converter = rsb.converter.ProtocolBufferConverter(messageClass=EmotionExpression)
-        rsb.converter.registerGlobalConverter(self.EmotionExpression_converter)
-
-        self.HeadAnimation_converter = rsb.converter.ProtocolBufferConverter(messageClass=HeadAnimation)
-        rsb.converter.registerGlobalConverter(self.HeadAnimation_converter)
-
-        self.BinocularHeadGaze_converter = rsb.converter.ProtocolBufferConverter(messageClass=BinocularHeadGaze)
-        rsb.converter.registerGlobalConverter(self.BinocularHeadGaze_converter)
-
-        try:
-            self.server = rsb.createRemoteServer(self.base_scope + '/set')
-        except ValueError:
-            self.logger.error("ERROR: invalid scope given. server deactivated")
-            self.server.deactivate()
-            sys.exit(errno.EINVAL)
-
-    #######################################################################
-    def publish_emotion(self, em_type, emotion, blocking):
-        """publish an emotion via mw
-        :param em_type: type of emotion (RobotEmotion::TYPE_DEFAULT or RobotEmotion::TYPE_CURRENT)
-        :param emotion: emotion to set
-        :param blocking: True if this call should block until execution finished on robot
-        """
-
-        # create emotion & fill it with values:
-        rsb_em = EmotionExpression()
-        rsb_em.emotion = self.convert_emotiontype_to_rsbval(emotion.value)
-        rsb_em.duration = int(emotion.time_ms)
-
-        # with rsb.createRemoteServer(self.base_scope + '/{current,default}Emotion') as server:
-        self.logger.debug("calling the emotion rpc (%s)..." % ("BLOCKING" if blocking else "NON-BLOCKING"))
-
-        if (blocking):
-            #blocking rpc call:
-            if (em_type == EmotionExpression.TYPE_DEFAULT):
-                result = self.server.defaultEmotion(rsb_em)
-            else:
-                result = self.server.currentEmotion(rsb_em)
-            self.logger.debug("server reply: '%s'" % result)
-        else:
-            if (em_type == EmotionExpression.TYPE_DEFAULT):
-                future = self.server.defaultEmotion.async(rsb_em)
-            else:
-                future = self.server.currentEmotion.async(rsb_em)
-            self.logger.debug("server reply: '%s'" % future)
-            #we could block here for a incoming result with a timeout in s
-            #print '> server reply: "%s"' % future.get(timeout = 10);
-        self.logger.debug("emotion rpc done")
-
-    def publish_head_animation(self, animation, blocking):
-        """publish an head HeadAnimation via mw
-        :param HeadAnimation: HeadAnimation to set
-        :param blocking: True if this call should block until execution finished on robot
-        """
-
-        self.logger.debug("calling the HeadAnimation rpc (%s)..." % ("BLOCKING" if blocking else "NON-BLOCKING"))
-
-        # create HeadAnimation & fill it with values:
-        rsb_ani = HeadAnimation()
-
-        #select ani
-        rsb_ani.animation = self.convert_HeadAnimationtype_to_rsbval(animation.value)
-        rsb_ani.repetitions = animation.repetitions
-        rsb_ani.duration_each = animation.time_ms
-        rsb_ani.emphasis_scale = animation.scale
-
-        if blocking:
-            #blocking:
-            result = self.server.animation(rsb_ani)
-            self.logger.debug("server reply: '%s'" % result)
-        else:
-            future = self.server.animation.async(rsb_ani)
-            #we can block here for a incoming result with a timeout in s
-            #print '> server reply: "%s"' % future.get(timeout = 10);
-
-        self.logger.debug("HeadAnimation rpc done")
-
-    def publish_default_emotion(self, emotion, blocking):
-        self.publish_emotion(RobotEmotion.TYPE_DEFAULT, emotion, blocking)
-
-    def publish_current_emotion(self, emotion, blocking):
-        self.publish_emotion(RobotEmotion.TYPE_CURRENT, emotion, blocking)
-
-    def publish_gaze_target(self, gaze, blocking):
-        """publish a gaze target via mw
-        :param gaze: gaze to set
-        :param blocking: True if this call should block until execution finished on robot
-        """
-        self.logger.debug("calling the gaze rpc (%s)..." % ("BLOCKING" if blocking else "NON-BLOCKING"))
-
-        # create gaze target & fill it with values:
-        hg = BinocularHeadGaze()
-
-        hg.target.elevation = gaze.tilt
-        hg.target.azimuth = gaze.pan
-        hg.eye_vergence = gaze.vergence
-
-        hg.offset.elevation = gaze.tilt_offset
-        hg.offset.azimuth = gaze.pan_offset
-
-        if blocking:
-            # blocking:
-            result = self.server.gaze(hg)
-            self.logger.debug("server reply blocking: '%s'" % result)
-        else:
-            future = self.server.gaze.async(hg)
-            self.logger.debug("server reply non-blocking: '%s'" % future)
-            # we can block here for a incoming result with a timeout in s
-            #print '> server reply: "%s"' % future.get(timeout = 10);
-
-        self.logger.debug("gaze rpc done")
-
-    def publish_speech(self, text, blocking):
-        """publish a tts request via mw
-        :param text: text to synthesize and speak
-        :param blocking: True if this call should block until execution finished on robot
-        """
-        """
-        self.logger.debug("calling the speech rpc (%s)..." % ("BLOCKING" if blocking else "NON-BLOCKING"))
-
-        if (blocking):
-            # blocking:
-            result = self.server.speech(text)
-            self.logger.debug("server reply: '%s'" % result)
-        else:
-            future = self.server.speech.async(text)
-            # we can block here for a incoming result with a timeout in s
-            #print '> server reply: "%s"' % future.get(timeout = 10);
-
-        self.logger.debug("speech rpc done")
-        """
-        print("WARNING: Not IMPLEMENTED.")
-
-
-    #######################################################################
-    def is_running(self):
-        return True
-
-
-    #######################################################################
-    # some helpers
-    def convert_HeadAnimationtype_to_rsbval(self, value):
-        """convert RobotHeadAnimation.value to RSB HeadAnimation value
-        :param value: RobotHeadAnimation.* id to convert to rsb id
-        """
-        # NOTE: this convertion is important as the actual integer values of
-        #      thy python api and the protobuf might be different
-
-        if value == HeadAnimation.IDLE:
-            return HeadAnimation().IDLE
-        elif value == HeadAnimation.HEAD_NOD:
-            return HeadAnimation().HEAD_NOD
-        elif (value == HeadAnimation.HEAD_SHAKE):
-            return HeadAnimation().HEAD_SHAKE
-        elif (value == HeadAnimation.EYEBLINK_LEFT):
-            return HeadAnimation().EYEBLINK_LEFT
-        elif (value == HeadAnimation.EYEBLINK_RIGHT):
-            return HeadAnimation().EYEBLINK_RIGHT
-        elif (value == HeadAnimation.EYEBLINK_BOTH):
-            return HeadAnimation().EYEBLINK_BOTH
-        elif (value == HeadAnimation.EYEBROWS_RAISE):
-            return HeadAnimation().EYEBROWS_RAISE
-        elif (value == HeadAnimation.EYEBROWS_LOWER):
-            return HeadAnimation().EYEBROWS_LOWER
-        else:
-            self.logger.error("invalid HeadAnimation type %d\n" % (value))
-            return HeadAnimation().NEUTRAL
-
-    def convert_emotiontype_to_rsbval(self, value):
-        """convert RobotEmotion.value to RSB HeadAnimation value
-        :param value: RobotEmotion.* id to convert to rsb id
-        """
-        # NOTE: this convertion is important as the actual integer values of
-        #      thy python api and the protobuf might be different
-
-        if (value == RobotEmotion.NEUTRAL):
-            return EmotionExpression().NEUTRAL
-        elif (value == RobotEmotion.HAPPY):
-            return EmotionExpression().HAPPY
-        elif (value == RobotEmotion.SAD):
-            return EmotionExpression().SAD
-        elif (value == RobotEmotion.ANGRY):
-            return EmotionExpression().ANGRY
-        elif (value == RobotEmotion.SURPRISED):
-            return EmotionExpression().SURPRISED
-        elif (value == RobotEmotion.FEAR):
-            return EmotionExpression().FEAR
-        else:
-            self.logger.error("invalid emotion type %d\n" % (value))
-            return EmotionExpression().NEUTRAL
-
-    """
-    def publish_mouth_target(self, mouth, blocking):
-        publish a mouth target via mw
-        :param mouth: mouth value to set
-        :param blocking: True if this call should block until execution finished on robot
-
-        self.logger.debug("calling the mouth rpc (%s)..." % ("BLOCKING" if blocking else "NON-BLOCKING"))
-
-        #create mouth state & fill it with values:
-        rsb_mouth = MouthTarget()
-
-        #fill proto
-        rsb_mouth.opening_left   = mouth.opening_left
-        rsb_mouth.opening_center = mouth.opening_center
-        rsb_mouth.opening_right  = mouth.opening_right
-        rsb_mouth.position_left  = mouth.position_left
-        rsb_mouth.position_center = mouth.position_center
-        rsb_mouth.position_right = mouth.position_right
-
-        if (blocking):
-            #blocking:
-            result = self.server.mouth(rsb_mouth)
-            self.logger.debug("server reply: '%s'" % result)
-        else:
-            future = self.server.mouth.async(rsb_mouth)
-            #we can block here for a incoming result with a timeout in s
-            #print '> server reply: "%s"' % future.get(timeout = 10);
-
-        self.logger.debug("mouth rpc done")
-    """
diff --git a/client/python/hlrc_client/RobotController.py b/client/python/hlrc_client/RobotController.py
index 6149cf6..2b0c26b 100644
--- a/client/python/hlrc_client/RobotController.py
+++ b/client/python/hlrc_client/RobotController.py
@@ -32,7 +32,7 @@ import errno
 class RobotController:
     def __init__(self, mw_name, scope, loglevel=logging.WARNING, timeout=None):
         """initialise
-        :param mw_name: which mw to use, currentyl ROS and RSB are supported
+        :param mw_name: which mw to use, currentyl ROS is supported
         :param scope: base scope we want to listen on
         :param  loglevel: optional log level
         """
@@ -48,18 +48,7 @@ class RobotController:
 
         self.middleware = None
 
-        if (self.mw.upper() == "RSB"):
-            self.logger.info("creating new middleware connection via RSB")
-            try:
-                from .MiddlewareRSB import MiddlewareRSB
-            except ImportError as e:
-                self.logger.error("failed to import RSB or the necessary data types: {}".format(e))
-                sys.exit(errno.EINVAL)
-
-            # import worked, safe to intantiate RSB mw now
-            self.middleware = MiddlewareRSB(self.scope, self.loglevel)
-
-        elif (self.mw.upper() == "ROS"):
+        if (self.mw.upper() == "ROS"):
             self.logger.info("creating new middleware connection via ROS")
             try:
                 from .MiddlewareROS import MiddlewareROS
@@ -67,10 +56,10 @@ class RobotController:
                 self.logger.error("failed to import ROS or the necessary data types: {}".format(e))
                 sys.exit(errno.EINVAL)
 
-            # import worked, safe to instantiate RSB mw now
+            # import worked, safe to instantiate ROS mw now
             self.middleware = MiddlewareROS(self.scope, self.loglevel, timeout)
         else:
-            self.logger.error("invalid middleware requested (%s). supported: {ROS, RSB}\n\n" % (self.mw))
+            self.logger.error("invalid middleware requested (%s). supported: {ROS}\n\n" % (self.mw))
             sys.exit(errno.EINVAL)
 
     def __del__(self):
diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt
index fb89fbe..f550ad4 100644
--- a/server/CMakeLists.txt
+++ b/server/CMakeLists.txt
@@ -10,47 +10,7 @@ set(CMAKE_CXX_EXTENSIONS OFF)
 INCLUDE(FindPkgConfig)
 
 #######################################
-#allow forced disable of RSB
-option(IGNORE_RSB "IGNORE_RSB" OFF)
 
-#######################################
-# check if we have RSB support:
-IF (IGNORE_RSB)
-    MESSAGE(INFO "RSB disabled per command line flag IGNORE_RSB")
-ELSE (IGNORE_RSB)
-FIND_PACKAGE(RSB 0.11 QUIET)
-IF (RSB_FOUND)
-    #RSB
-    SET(CMAKE_INSTALL_RPATH "\$ORIGIN/../lib:\$ORIGIN/")
-    FIND_PACKAGE(RSC 0.11 REQUIRED)
-    FIND_PACKAGE(RSB 0.11 REQUIRED)
-    #RST
-    FIND_PACKAGE(RST REQUIRED COMPONENTS sandbox)
-    INCLUDE_DIRECTORIES(BEFORE SYSTEM ${RST_INCLUDE_DIRS})
-    ADD_DEFINITIONS(${RST_CFLAGS} ${RSTSANDBOX_CFLAGS})
-
-    INCLUDE_DIRECTORIES(BEFORE SYSTEM ${RSB_INCLUDE_DIRS})
-    LIST(INSERT CMAKE_MODULE_PATH 0 ${RSC_CMAKE_MODULE_PATH})
-    #RSB
-    SET(CMAKE_INSTALL_RPATH "\$ORIGIN/../lib:\$ORIGIN/")
-    FIND_PACKAGE(RSC 0.11 REQUIRED)
-    FIND_PACKAGE(RSB 0.11 REQUIRED)
-    #RST
-    FIND_PACKAGE(RST REQUIRED COMPONENTS sandbox)
-    INCLUDE_DIRECTORIES(BEFORE SYSTEM ${RST_INCLUDE_DIRS})
-    ADD_DEFINITIONS(${RST_CFLAGS} ${RSTSANDBOX_CFLAGS})
-
-    INCLUDE_DIRECTORIES(BEFORE SYSTEM ${RSB_INCLUDE_DIRS})
-    LIST(INSERT CMAKE_MODULE_PATH 0 ${RSC_CMAKE_MODULE_PATH})
-
-    message(STATUS "RSB Support is ON")
-    add_definitions(-DRSB_SUPPORT=1)
-ELSE(RSB_FOUND)
-    message(STATUS "RSB not found.")
-ENDIF (RSB_FOUND)
-ENDIF(IGNORE_RSB)
-
-################################################################
 # check for ROS support:
 find_package(catkin QUIET)
 IF (catkin_FOUND)
@@ -127,18 +87,16 @@ include_directories(include ${catkin_INCLUDE_DIRS} ${EIGEN3_INCLUDE_DIRS} ${humo
 link_directories(${catkin_LIBRARY_DIRS} ${AO_LIBRARY_DIRS} ${humotion_LIBRARY_DIRS})
 
 #build dummy list of header files
-file(GLOB DUMMY_HEADER_LIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} include/*.h include/RSB/*.h include/ROS/*.h)
+file(GLOB DUMMY_HEADER_LIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} include/*.h include/ROS/*.h)
 
 # declare library
 add_executable(${PROJECT_NAME}
     src/main.cpp
-    src/MiddlewareRSB.cpp
     src/MiddlewareROS.cpp
     src/Arbiter.cpp
     src/Utterance.cpp
     src/Animation.cpp
     src/AudioPlayer.cpp
-    src/AudioPlayerRSB.cpp
     src/AudioPlayerLibAO.cpp
     src/MouthConfig.cpp
     src/EmotionState.cpp
@@ -151,7 +109,7 @@ add_executable(${PROJECT_NAME}
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
 
 #create example:
-target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES} ${RSB_LIBRARIES}  ${catkin_LIBRARIES} ${RST_LIBRARIES} ${humotion_LIBRARIES} ${AO_LIBRARIES})
+target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES} ${catkin_LIBRARIES} ${humotion_LIBRARIES} ${AO_LIBRARIES})
 set_property(TARGET ${PROJECT_NAME} PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE)
 
 
diff --git a/server/include/AudioPlayerRSB.h b/server/include/AudioPlayerRSB.h
deleted file mode 100644
index fbf8269..0000000
--- a/server/include/AudioPlayerRSB.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * This file is part of hlrc_server
- *
- * Copyright(c) sschulz <AT> techfak.uni-bielefeld.de
- * http://opensource.cit-ec.de/projects/hlrc_server
- *
- * This file may be licensed under the terms of the
- * GNU General Public License Version 3 (the ``GPL''),
- * or (at your option) any later version.
- *
- * Software distributed under the License is distributed
- * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
- * express or implied. See the GPL for the specific language
- * governing rights and limitations.
- *
- * You should have received a copy of the GPL along with this
- * program. If not, go to http://www.gnu.org/licenses/gpl.html
- * or write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The development of this software was supported by the
- * Excellence Cluster EXC 277 Cognitive Interaction Technology.
- * The Excellence Cluster EXC 277 is a grant of the Deutsche
- * Forschungsgemeinschaft (DFG) in the context of the German
- * Excellence Initiative.
- *
- */
-
-#pragma once
-#include "AudioPlayer.h"
-
-#ifdef RSB_SUPPORT
-
-#define BOOST_SIGNALS_NO_DEPRECATION_WARNING 1
-#include <rsb/Informer.h>
-#include <rst/audition/SoundChunk.pb.h>
-
-class AudioPlayerRSB : public AudioPlayer {
-public:
-	AudioPlayerRSB(std::string driver);
-	~AudioPlayerRSB();
-
-	void playback_thread();
-	void play(std::shared_ptr<AudioData> audio);
-	bool is_playing();
-
-private:
-	boost::thread* playback_thread_ptr;
-	void publish_audio_data();
-	rsb::Informer<rst::audition::SoundChunk>::DataPtr audio_data_ptr;
-	rsb::Informer<rst::audition::SoundChunk>::Ptr informer;
-};
-
-#endif
diff --git a/server/include/MiddlewareROS.h b/server/include/MiddlewareROS.h
index fb57f49..595d451 100644
--- a/server/include/MiddlewareROS.h
+++ b/server/include/MiddlewareROS.h
@@ -58,7 +58,7 @@ class MiddlewareROS : public Middleware {
 #ifndef ROS_SUPPORT
 public:
 	MiddlewareROS(Arbiter* a, std::string _base_scope) : Middleware(a, _base_scope) {
-		printf("> ERROR: hlrc was compiled without ROS middleware support. Please use MiddlewareRSB() instead!\n\n");
+		printf("> ERROR: hlrc was compiled without ROS middleware support.");
 		exit(EXIT_FAILURE);
 	}
 
diff --git a/server/include/MiddlewareRSB.h b/server/include/MiddlewareRSB.h
deleted file mode 100644
index 1a6490d..0000000
--- a/server/include/MiddlewareRSB.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * This file is part of hlrc_server
- *
- * Copyright(c) sschulz <AT> techfak.uni-bielefeld.de
- * http://opensource.cit-ec.de/projects/hlrc_server
- *
- * This file may be licensed under the terms of the
- * GNU General Public License Version 3 (the ``GPL''),
- * or (at your option) any later version.
- *
- * Software distributed under the License is distributed
- * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
- * express or implied. See the GPL for the specific language
- * governing rights and limitations.
- *
- * You should have received a copy of the GPL along with this
- * program. If not, go to http://www.gnu.org/licenses/gpl.html
- * or write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The development of this software was supported by the
- * Excellence Cluster EXC 277 Cognitive Interaction Technology.
- * The Excellence Cluster EXC 277 is a grant of the Deutsche
- * Forschungsgemeinschaft (DFG) in the context of the German
- * Excellence Initiative.
- *
- */
-
-#pragma once
-#include "Middleware.h"
-#ifdef RSB_SUPPORT
-#define BOOST_SIGNALS_NO_DEPRECATION_WARNING 1
-#include <rsb/Listener.h>
-#include <rsb/patterns/LocalServer.h>
-#include <rsb/patterns/RemoteServer.h>
-#endif
-
-class MiddlewareRSB : public Middleware {
-#ifndef RSB_SUPPORT
-public:
-	MiddlewareRSB(Arbiter* a, std::string _base_scope) : Middleware(a, _base_scope) {
-		printf("> ERROR: hlrc was compiled without RSB middleware support. Please use MiddlewareROS() instead!\n\n");
-		exit(EXIT_FAILURE);
-	}
-
-	~MiddlewareRSB() {
-	}
-	void init(){};
-	void tick(){};
-	std::shared_ptr<Utterance> tts_call(std::string text) {
-		return std::shared_ptr<Utterance>(new Utterance());
-	}
-
-#else
-public:
-	MiddlewareRSB(Arbiter* a, std::string _base_scope);
-	~MiddlewareRSB();
-	void init();
-	void tick();
-	std::shared_ptr<Utterance> tts_call(std::string text);
-
-private:
-	void init_callbacks();
-	void init_callback(std::string name, rsb::patterns::LocalServer::CallbackPtr callback_ptr);
-
-	rsb::patterns::LocalServerPtr server;
-	rsb::patterns::LocalServerPtr server_parallel;
-	rsb::patterns::RemoteServerPtr tts_server;
-	rsb::ListenerPtr speak_listener;
-#endif
-};
diff --git a/server/include/ROS/MouthCallbackWrapperROS.h b/server/include/ROS/MouthCallbackWrapperROS.h
index 76f6e1b..a71e2e7 100644
--- a/server/include/ROS/MouthCallbackWrapperROS.h
+++ b/server/include/ROS/MouthCallbackWrapperROS.h
@@ -50,7 +50,6 @@ public:
 		humotion::MouthState mouth_state;
 
 		// fill in mouth
-		//#include "RSB/SpeechCallbackWrapper.h".opening_left   = request->opening_left;
 		mouth_state.opening_center = request->opening_center;
 		mouth_state.opening_right = request->opening_right;
 
diff --git a/server/include/ROS/UtteranceCallbackWrapperROS.h b/server/include/ROS/UtteranceCallbackWrapperROS.h
index 9d48eec..08a54f0 100644
--- a/server/include/ROS/UtteranceCallbackWrapperROS.h
+++ b/server/include/ROS/UtteranceCallbackWrapperROS.h
@@ -114,8 +114,8 @@ public:
 			default:
 				printf("> invalid sample type %d in SoundChunk! ignoring request!\n", sound_chunk.sample_type);
 				return false;
-				// throw runtime_error("UtteranceRSB::convert_audio_data() unsupported sample type in soundchunk");
-		}
+            // throw runtime_error("UtteranceROS::convert_audio_data() unsupported sample type in soundchunk");
+      }
 
 		// bitrate
 		audio_data->sample_rate = sound_chunk.rate;
@@ -129,7 +129,7 @@ public:
 		}
 		else {
 			printf("> invalid SoundChunk byte_format");
-			throw std::runtime_error("UtteranceRSB::convert_audio_data() unsupported byte_format in soundchunk");
+			throw std::runtime_error("UtteranceROS::convert_audio_data() unsupported byte_format in soundchunk");
 		}
 
 		// number of channels
diff --git a/server/include/RSB/AnimationCallbackWrapper.h b/server/include/RSB/AnimationCallbackWrapper.h
deleted file mode 100644
index b0dde6d..0000000
--- a/server/include/RSB/AnimationCallbackWrapper.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * This file is part of hlrc_server
- *
- * Copyright(c) sschulz <AT> techfak.uni-bielefeld.de
- * http://opensource.cit-ec.de/projects/hlrc_server
- *
- * This file may be licensed under the terms of the
- * GNU General Public License Version 3 (the ``GPL''),
- * or (at your option) any later version.
- *
- * Software distributed under the License is distributed
- * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
- * express or implied. See the GPL for the specific language
- * governing rights and limitations.
- *
- * You should have received a copy of the GPL along with this
- * program. If not, go to http://www.gnu.org/licenses/gpl.html
- * or write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The development of this software was supported by the
- * Excellence Cluster EXC 277 Cognitive Interaction Technology.
- * The Excellence Cluster EXC 277 is a grant of the Deutsche
- * Forschungsgemeinschaft (DFG) in the context of the German
- * Excellence Initiative.
- *
- */
-
-#pragma once
-#include "CallbackWrapper.h"
-#include "Animation.h"
-
-// callback handler incoming animation requests:
-class AnimationCallbackWrapper : public CallbackWrapper<rst::animation::HeadAnimation> {
-public:
-	AnimationCallbackWrapper(Middleware* mw) : CallbackWrapper(mw) {
-	}
-
-	void call(const std::string& method_name, std::shared_ptr<rst::animation::HeadAnimation> input) {
-		printf("> incomint animation (method = %s)\n", method_name.c_str());
-
-		// fetch animation passed by rsb:
-		rst::animation::HeadAnimation* rst_ani = input.get();
-		std::shared_ptr<Animation> ani(new Animation());
-
-		switch ((int)rst_ani->animation()) {
-			case (rst_ani->IDLE):
-				ani->target = Animation::IDLE;
-				break;
-			case (rst_ani->HEAD_NOD):
-				ani->target = Animation::HEAD_NOD;
-				break;
-			case (rst_ani->HEAD_SHAKE):
-				ani->target = Animation::HEAD_SHAKE;
-				break;
-			case (rst_ani->EYEBLINK_LEFT):
-				ani->target = Animation::EYEBLINK_L;
-				break;
-			case (rst_ani->EYEBLINK_RIGHT):
-				ani->target = Animation::EYEBLINK_R;
-				break;
-			case (rst_ani->EYEBLINK_BOTH):
-				ani->target = Animation::EYEBLINK_BOTH;
-				break;
-			case (rst_ani->EYEBROWS_RAISE):
-				ani->target = Animation::EYEBROWS_RAISE;
-				break;
-			case (rst_ani->EYEBROWS_LOWER):
-				ani->target = Animation::EYEBROWS_LOWER;
-				break;
-			case (rst_ani->ENGAGEMENT_LEFT):
-				ani->target = Animation::ENGAGEMENT_LEFT;
-				break;
-			case (rst_ani->ENGAGEMENT_RIGHT):
-				ani->target = Animation::ENGAGEMENT_RIGHT;
-				break;
-			default:
-				ani->target = Animation::IDLE;
-				printf("> unhandled animatin target %d\n", (int)rst_ani->animation());
-				throw std::runtime_error("AnimationCallback: invalid animation id");
-				return;
-		}
-		ani->repetitions = rst_ani->repetitions();
-		ani->duration_each = rst_ani->duration_each();
-		ani->scale = rst_ani->emphasis_scale();
-
-		printf("> new Animation: %s\n", ani->as_string().c_str());
-
-		// send to application
-		mw->animation_callback(ani);
-	}
-};
diff --git a/server/include/RSB/CallbackWrapper.h b/server/include/RSB/CallbackWrapper.h
deleted file mode 100644
index 64e48f7..0000000
--- a/server/include/RSB/CallbackWrapper.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * This file is part of hlrc_server
- *
- * Copyright(c) sschulz <AT> techfak.uni-bielefeld.de
- * http://opensource.cit-ec.de/projects/hlrc_server
- *
- * This file may be licensed under the terms of the
- * GNU General Public License Version 3 (the ``GPL''),
- * or (at your option) any later version.
- *
- * Software distributed under the License is distributed
- * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
- * express or implied. See the GPL for the specific language
- * governing rights and limitations.
- *
- * You should have received a copy of the GPL along with this
- * program. If not, go to http://www.gnu.org/licenses/gpl.html
- * or write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The development of this software was supported by the
- * Excellence Cluster EXC 277 Cognitive Interaction Technology.
- * The Excellence Cluster EXC 277 is a grant of the Deutsche
- * Forschungsgemeinschaft (DFG) in the context of the German
- * Excellence Initiative.
- *
- */
-
-#pragma once
-#include "Middleware.h"
-//#include <rst/robot/MouthTarget.pb.h>
-#include <rst/animation/EmotionExpression.pb.h>
-#include <rst/animation/BinocularHeadGaze.pb.h>
-#include <rst/animation/HeadAnimation.pb.h>
-#include <rst/audition/Utterance.pb.h>
-#include <rst/audition/SoundChunk.pb.h>
-#include <rsb/Factory.h>
-
-template <typename T>
-class CallbackWrapper : public rsb::patterns::LocalServer::Callback<T, void> {
-public:
-	CallbackWrapper(Middleware* _mw) {
-		mw = _mw;
-	}
-
-	~CallbackWrapper() {
-	}
-
-	virtual void call(const std::string&, std::shared_ptr<T> param) = 0;
-
-protected:
-	Middleware* mw;
-};
diff --git a/server/include/RSB/EmotionCallbackWrapper.h b/server/include/RSB/EmotionCallbackWrapper.h
deleted file mode 100644
index fbfd423..0000000
--- a/server/include/RSB/EmotionCallbackWrapper.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * This file is part of hlrc_server
- *
- * Copyright(c) sschulz <AT> techfak.uni-bielefeld.de
- * http://opensource.cit-ec.de/projects/hlrc_server
- *
- * This file may be licensed under the terms of the
- * GNU General Public License Version 3 (the ``GPL''),
- * or (at your option) any later version.
- *
- * Software distributed under the License is distributed
- * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
- * express or implied. See the GPL for the specific language
- * governing rights and limitations.
- *
- * You should have received a copy of the GPL along with this
- * program. If not, go to http://www.gnu.org/licenses/gpl.html
- * or write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The development of this software was supported by the
- * Excellence Cluster EXC 277 Cognitive Interaction Technology.
- * The Excellence Cluster EXC 277 is a grant of the Deutsche
- * Forschungsgemeinschaft (DFG) in the context of the German
- * Excellence Initiative.
- *
- */
-
-#pragma once
-#include "CallbackWrapper.h"
-
-// callback handler incoming emotion requests:
-class EmotionCallbackWrapper : public CallbackWrapper<rst::animation::EmotionExpression> {
-public:
-	EmotionCallbackWrapper(Middleware* mw) : CallbackWrapper(mw) {
-	}
-
-	void call(const std::string& method_name, std::shared_ptr<rst::animation::EmotionExpression> input) {
-		printf("> incoming emotion (%s = %d)\n", method_name.c_str(), (int)input->emotion());
-
-		EmotionState emotion_state;
-		rst::animation::EmotionExpression* emotion = input.get();
-
-		// extract data & copy it to our datatype (might be good when we allow multiple middlewares in the feature)
-		switch ((int)emotion->emotion()) {
-			case (rst::animation::EmotionExpression_Emotion_NEUTRAL):
-				emotion_state.value = EmotionConfig::NEUTRAL;
-				break;
-			case (rst::animation::EmotionExpression_Emotion_HAPPY):
-				emotion_state.value = EmotionConfig::HAPPY;
-				break;
-			case (rst::animation::EmotionExpression_Emotion_SAD):
-				emotion_state.value = EmotionConfig::SAD;
-				break;
-			case (rst::animation::EmotionExpression_Emotion_ANGRY):
-				emotion_state.value = EmotionConfig::ANGRY;
-				break;
-			case (rst::animation::EmotionExpression_Emotion_SURPRISED):
-				emotion_state.value = EmotionConfig::SURPRISED;
-				break;
-			case (rst::animation::EmotionExpression_Emotion_FEAR):
-				emotion_state.value = EmotionConfig::FEAR;
-				break;
-			default:
-				printf("> invalid EmotionExpression emotion value. exiting\n");
-				exit(EXIT_FAILURE);
-		}
-
-		emotion_state.duration = emotion->duration();
-
-		// send to application
-		if (method_name == "defaultEmotion") {
-			// set default emotion:
-			mw->default_emotion_callback(emotion_state);
-		}
-		else if (method_name == "currentEmotion") {
-			// set current emotion:
-			mw->current_emotion_callback(emotion_state);
-		}
-		else {
-			printf("> invalid method called '%s'\n", method_name.c_str());
-			exit(EXIT_FAILURE);
-		}
-	}
-};
diff --git a/server/include/RSB/GazeCallbackWrapper.h b/server/include/RSB/GazeCallbackWrapper.h
deleted file mode 100644
index f930cb3..0000000
--- a/server/include/RSB/GazeCallbackWrapper.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * This file is part of hlrc_server
- *
- * Copyright(c) sschulz <AT> techfak.uni-bielefeld.de
- * http://opensource.cit-ec.de/projects/hlrc_server
- *
- * This file may be licensed under the terms of the
- * GNU General Public License Version 3 (the ``GPL''),
- * or (at your option) any later version.
- *
- * Software distributed under the License is distributed
- * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
- * express or implied. See the GPL for the specific language
- * governing rights and limitations.
- *
- * You should have received a copy of the GPL along with this
- * program. If not, go to http://www.gnu.org/licenses/gpl.html
- * or write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The development of this software was supported by the
- * Excellence Cluster EXC 277 Cognitive Interaction Technology.
- * The Excellence Cluster EXC 277 is a grant of the Deutsche
- * Forschungsgemeinschaft (DFG) in the context of the German
- * Excellence Initiative.
- *
- */
-
-#pragma once
-#include "CallbackWrapper.h"
-
-// callback handler incoming gaze requests:
-class GazeCallbackWrapper : public CallbackWrapper<rst::animation::BinocularHeadGaze> {
-public:
-	GazeCallbackWrapper(Middleware* mw) : CallbackWrapper(mw) {
-	}
-	void call(const std::string& method_name, std::shared_ptr<rst::animation::BinocularHeadGaze> input) {
-		rst::animation::BinocularHeadGaze* gaze = input.get();
-		// printf("> incoming gaze (p=%3.1f t=%3.1f r=%3.1f / v=%3.1f)\n", gaze->pan(), gaze->tilt(), gaze->roll(), gaze->vergence());
-
-		humotion::GazeState gaze_state;
-
-		// fill in gaze
-		gaze_state.pan = gaze->target().azimuth();
-		gaze_state.tilt = gaze->target().elevation();
-		gaze_state.roll = 0.0;
-
-		// RSB supports only absolute targets for now...
-		gaze_state.timestamp = 123.45; // FIXME!!
-		gaze_state.gaze_type = humotion::GazeState::GAZETYPE_ABSOLUTE;
-
-		// vergence
-		gaze_state.vergence = (gaze->has_eye_vergence()) ? gaze->eye_vergence() : 0.0;
-
-		// offsets
-		gaze_state.pan_offset = (gaze->has_offset()) ? gaze->offset().azimuth() : 0.0;
-		gaze_state.tilt_offset = (gaze->has_offset()) ? gaze->offset().elevation() : 0.0;
-
-		// send to application:
-		mw->gaze_callback(gaze_state);
-	}
-};
diff --git a/server/include/RSB/MouthCallbackWrapper.h b/server/include/RSB/MouthCallbackWrapper.h
deleted file mode 100644
index 20ada55..0000000
--- a/server/include/RSB/MouthCallbackWrapper.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * This file is part of hlrc_server
- *
- * Copyright(c) sschulz <AT> techfak.uni-bielefeld.de
- * http://opensource.cit-ec.de/projects/hlrc_server
- *
- * This file may be licensed under the terms of the
- * GNU General Public License Version 3 (the ``GPL''),
- * or (at your option) any later version.
- *
- * Software distributed under the License is distributed
- * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
- * express or implied. See the GPL for the specific language
- * governing rights and limitations.
- *
- * You should have received a copy of the GPL along with this
- * program. If not, go to http://www.gnu.org/licenses/gpl.html
- * or write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The development of this software was supported by the
- * Excellence Cluster EXC 277 Cognitive Interaction Technology.
- * The Excellence Cluster EXC 277 is a grant of the Deutsche
- * Forschungsgemeinschaft (DFG) in the context of the German
- * Excellence Initiative.
- *
- */
-
-#pragma once
-#include "CallbackWrapper.h"
-#if 0
-DISABLED MOUTH TARGET IN RSB FOR NOW
-//callback handler incoming gaze requests:
-class MouthCallbackWrapper : public CallbackWrapper<rst::robot::MouthTarget>{
-    public:
-        MouthCallbackWrapper(Middleware *mw) : CallbackWrapper(mw){}
-        void call(const std::string& method_name, std::shared_ptr<rst::robot::MouthTarget> input){
-            rst::robot::MouthTarget *mouth = input.get();
-
-            humotion::MouthState mouth_state;
-
-            //fill in mouth
-            mouth_state.opening_left   = mouth->opening_left();
-            mouth_state.opening_center = mouth->opening_center();
-            mouth_state.opening_right  = mouth->opening_right();
-
-            mouth_state.position_left   = mouth->position_left();
-            mouth_state.position_center = mouth->position_center();
-            mouth_state.position_right  = mouth->position_right();
-
-            //send to application:
-            mw->mouth_callback(mouth_state);
-        }
-};
-#endif
diff --git a/server/include/RSB/SpeechCallbackWrapper.h b/server/include/RSB/SpeechCallbackWrapper.h
deleted file mode 100644
index b70668f..0000000
--- a/server/include/RSB/SpeechCallbackWrapper.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * This file is part of hlrc_server
- *
- * Copyright(c) sschulz <AT> techfak.uni-bielefeld.de
- * http://opensource.cit-ec.de/projects/hlrc_server
- *
- * This file may be licensed under the terms of the
- * GNU General Public License Version 3 (the ``GPL''),
- * or (at your option) any later version.
- *
- * Software distributed under the License is distributed
- * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
- * express or implied. See the GPL for the specific language
- * governing rights and limitations.
- *
- * You should have received a copy of the GPL along with this
- * program. If not, go to http://www.gnu.org/licenses/gpl.html
- * or write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The development of this software was supported by the
- * Excellence Cluster EXC 277 Cognitive Interaction Technology.
- * The Excellence Cluster EXC 277 is a grant of the Deutsche
- * Forschungsgemeinschaft (DFG) in the context of the German
- * Excellence Initiative.
- *
- */
-
-#pragma once
-#include "CallbackWrapper.h"
-
-// callback handler incoming speech requests:
-class SpeechCallbackWrapper : public CallbackWrapper<std::string> {
-public:
-	SpeechCallbackWrapper(Middleware* mw) : CallbackWrapper(mw) {
-	}
-
-	void call(const std::string&, std::shared_ptr<std::string> _text) {
-		// send to application
-		std::string text = *_text.get();
-		//<voice effect=\"Rate(durScale:1.5) + TractScaler(durScale:1.1)\">" +
-
-		text = "<maryxml version=\"0.4\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
-		       "xmlns=\"http://mary.dfki.de/2002/MaryXML\" xml:lang=\"en_US\">" +
-		       text + "</maryxml>";
-		mw->speak_callback(text);
-	}
-};
diff --git a/server/include/RSB/UtteranceCallbackWrapper.h b/server/include/RSB/UtteranceCallbackWrapper.h
deleted file mode 100644
index 5763376..0000000
--- a/server/include/RSB/UtteranceCallbackWrapper.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * This file is part of hlrc_server
- *
- * Copyright(c) sschulz <AT> techfak.uni-bielefeld.de
- * http://opensource.cit-ec.de/projects/hlrc_server
- *
- * This file may be licensed under the terms of the
- * GNU General Public License Version 3 (the ``GPL''),
- * or (at your option) any later version.
- *
- * Software distributed under the License is distributed
- * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
- * express or implied. See the GPL for the specific language
- * governing rights and limitations.
- *
- * You should have received a copy of the GPL along with this
- * program. If not, go to http://www.gnu.org/licenses/gpl.html
- * or write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The development of this software was supported by the
- * Excellence Cluster EXC 277 Cognitive Interaction Technology.
- * The Excellence Cluster EXC 277 is a grant of the Deutsche
- * Forschungsgemeinschaft (DFG) in the context of the German
- * Excellence Initiative.
- *
- */
-
-#pragma once
-#include "CallbackWrapper.h"
-#include "UtteranceRSB.h"
-
-// callback handler incoming Utterance requests:
-class UtteranceCallbackWrapper : public CallbackWrapper<rst::audition::Utterance> {
-public:
-	UtteranceCallbackWrapper(Middleware* mw) : CallbackWrapper(mw) {
-	}
-	void call(const std::string&, std::shared_ptr<rst::audition::Utterance> param) {
-		// convert rsb utterance to out own:
-		rst::audition::Utterance* rst_utterance = param.get();
-		printf("> incoming utterance '%s' (%d phone symbols)\n", param->textual_representation().c_str(),
-		       (int)rst_utterance->phonemes().element().size());
-
-		std::shared_ptr<Utterance> utterance(new UtteranceRSB(*rst_utterance));
-
-		// send to application;
-		mw->utterance_callback(utterance);
-	}
-
-private:
-};
diff --git a/server/include/RSB/UtteranceRSB.h b/server/include/RSB/UtteranceRSB.h
deleted file mode 100644
index 06d31a0..0000000
--- a/server/include/RSB/UtteranceRSB.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * This file is part of hlrc_server
- *
- * Copyright(c) sschulz <AT> techfak.uni-bielefeld.de
- * http://opensource.cit-ec.de/projects/hlrc_server
- *
- * This file may be licensed under the terms of the
- * GNU General Public License Version 3 (the ``GPL''),
- * or (at your option) any later version.
- *
- * Software distributed under the License is distributed
- * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
- * express or implied. See the GPL for the specific language
- * governing rights and limitations.
- *
- * You should have received a copy of the GPL along with this
- * program. If not, go to http://www.gnu.org/licenses/gpl.html
- * or write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The development of this software was supported by the
- * Excellence Cluster EXC 277 Cognitive Interaction Technology.
- * The Excellence Cluster EXC 277 is a grant of the Deutsche
- * Forschungsgemeinschaft (DFG) in the context of the German
- * Excellence Initiative.
- *
- */
-
-#pragma once
-#include "AudioData.h"
-#include <rst/audition/SoundChunk.pb.h>
-#include <rst/audition/Utterance.pb.h>
-using namespace std;
-
-// converter from rsb utterance
-class UtteranceRSB : public Utterance {
-public:
-	UtteranceRSB(rst::audition::Utterance rst_utterance) {
-		// set text:
-		set_text(rst_utterance.textual_representation());
-
-		// convert soundchunk to audio data:
-		extract_audio_data(rst_utterance.audio());
-
-		// convert phonemes:
-		extract_phonemes(rst_utterance);
-	}
-
-	~UtteranceRSB(){};
-
-	void extract_audio_data(rst::audition::SoundChunk sound_chunk) {
-		// cout << sound_chunk.DebugString();
-
-		// extract data:
-		unsigned int audio_len = sound_chunk.data().length();
-		char* audio_data_char = (char*)sound_chunk.data().c_str();
-
-		// audio.samples = vector<char>(audio_data_char, audio_data_char+audio_len);
-		audio_data->samples.resize(audio_len);
-		audio_data->samples.assign(audio_data_char, audio_data_char + audio_len);
-
-		printf("audio samplesize is %d bytes\n", (unsigned int)audio_data->samples.size());
-
-		// extract format:
-		audio_data->sample_signed = true;
-		switch (sound_chunk.sample_type()) {
-			case (rst::audition::SoundChunk::SAMPLE_U8):
-				audio_data->sample_signed = false; // and fall through:
-			case (rst::audition::SoundChunk::SAMPLE_S8):
-				audio_data->sample_bit = 8;
-				break;
-
-			case (rst::audition::SoundChunk::SAMPLE_U16):
-				audio_data->sample_signed = false; // and fall through:
-			case (rst::audition::SoundChunk::SAMPLE_S16):
-				audio_data->sample_bit = 16;
-				break;
-
-			case (rst::audition::SoundChunk::SAMPLE_U24):
-				audio_data->sample_signed = false; // and fall through:
-			case (rst::audition::SoundChunk::SAMPLE_S24):
-				audio_data->sample_bit = 24;
-				break;
-
-			default:
-				printf("> invalid sample type %d in RST SoundChunk! ignoring request!\n", sound_chunk.sample_type());
-				throw runtime_error("UtteranceRSB::convert_audio_data() unsupported sample type in rst::audition::SoundChunk");
-		}
-
-		// bitrate
-		audio_data->sample_rate = sound_chunk.rate();
-
-		// endianness
-		if (sound_chunk.endianness() == rst::audition::SoundChunk::ENDIAN_LITTLE) {
-			audio_data->sample_big_endian = false;
-		}
-		else if (sound_chunk.endianness() == rst::audition::SoundChunk::ENDIAN_BIG) {
-			audio_data->sample_big_endian = true;
-		}
-		else {
-			printf("> invalid SoundChunk byte_format");
-			throw runtime_error("UtteranceRSB::convert_audio_data() unsupported byte_format in rst::audition::SoundChunk");
-		}
-
-		// number of channels
-		audio_data->sample_channels = sound_chunk.channels();
-
-		printf("> new AudioData: %s\n", audio_data->to_string().c_str());
-	}
-
-	void extract_phonemes(rst::audition::Utterance rst_utterance) {
-		// extract phoneme vector
-		phonemes_vector.clear();
-		for (int i = 0; i < rst_utterance.phonemes().element().size(); i++) {
-			rst::audition::Phoneme rst_phoneme = rst_utterance.phonemes().element().Get(i);
-			Utterance::symbol_duration_pair_t phoneme = make_pair(rst_phoneme.symbol(), rst_phoneme.duration());
-			phonemes_vector.push_back(phoneme);
-		}
-	}
-};
diff --git a/server/src/Arbiter.cpp b/server/src/Arbiter.cpp
index 5f38dde..b72df86 100644
--- a/server/src/Arbiter.cpp
+++ b/server/src/Arbiter.cpp
@@ -28,7 +28,6 @@
 
 #include "Arbiter.h"
 #include "AudioPlayerLibAO.h"
-#include "AudioPlayerRSB.h"
 #include <boost/algorithm/string/predicate.hpp>
 #include <mutex>
 #include <thread>
@@ -43,15 +42,6 @@ Arbiter::Arbiter(std::string audio_output) {
 		// allow none for no sound output
 		audio_player = NULL;
 	}
-	else if (iequals(audio_output.substr(0, 3), "rsb")) {
-#ifdef RSB_SUPPORT
-		audio_player = new AudioPlayerRSB(audio_output);
-#else
-		printf("> ERROR: hlc is compiled without RSB support, RSB audio transport not available, defaulting to libao (default "
-		       "output!)\n");
-		audio_player = new AudioPlayerLibAO("");
-#endif
-	}
 	else {
 		audio_player = new AudioPlayerLibAO(audio_output);
 	}
diff --git a/server/src/AudioPlayerRSB.cpp b/server/src/AudioPlayerRSB.cpp
deleted file mode 100644
index 6f1f4d7..0000000
--- a/server/src/AudioPlayerRSB.cpp
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * This file is part of hlrc_server
- *
- * Copyright(c) sschulz <AT> techfak.uni-bielefeld.de
- * http://opensource.cit-ec.de/projects/hlrc_server
- *
- * This file may be licensed under the terms of the
- * GNU General Public License Version 3 (the ``GPL''),
- * or (at your option) any later version.
- *
- * Software distributed under the License is distributed
- * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
- * express or implied. See the GPL for the specific language
- * governing rights and limitations.
- *
- * You should have received a copy of the GPL along with this
- * program. If not, go to http://www.gnu.org/licenses/gpl.html
- * or write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The development of this software was supported by the
- * Excellence Cluster EXC 277 Cognitive Interaction Technology.
- * The Excellence Cluster EXC 277 is a grant of the Deutsche
- * Forschungsgemeinschaft (DFG) in the context of the German
- * Excellence Initiative.
- *
- */
-
-#include "AudioPlayerRSB.h"
-
-#ifdef RSB_SUPPORT
-#include <rsb/converter/Repository.h>
-#include <rsb/converter/ProtocolBufferConverter.h>
-#include <rsb/Factory.h>
-#include <boost/make_shared.hpp>
-using namespace std;
-using namespace rsb;
-using namespace boost;
-
-// new audio player with gievn device type (default is pulse)
-AudioPlayerRSB::AudioPlayerRSB(string driver) : AudioPlayer(driver) {
-	assert(driver.length() > 3);
-
-	string scope = driver.substr(3);
-
-	printf("> using rsb for playback, scope = '%s'\n", scope.c_str());
-
-	printf("> registering converters\n");
-	rsb::converter::Converter<string>::Ptr soundChunkConverter(
-	   new rsb::converter::ProtocolBufferConverter<rst::audition::SoundChunk>());
-	rsb::converter::converterRepository<string>()->registerConverter(soundChunkConverter);
-
-	// first get a factory instance that is used to create RSB domain objects
-	Factory& factory = getFactory();
-
-	// create informer
-	informer = factory.createInformer<rst::audition::SoundChunk>(scope);
-
-	// start audio playback thread:
-	playback_thread_ptr = new boost::thread(boost::bind(&AudioPlayerRSB::playback_thread, this));
-}
-
-// this will return once we start playing
-void AudioPlayerRSB::play(std::shared_ptr<AudioData> _audio_data) {
-	audio_data = _audio_data;
-
-	printf("> AudioPlayerRSB: play() %d samples requested\n", (int)audio_data->samples.size());
-
-	// check if we can play this file:
-	while (playback_state != IDLE) {
-		printf("> player not ready yet, waiting for 10ms\n");
-		std::this_thread::sleep_for(std::chrono::milliseconds(10));
-	}
-
-	// ok, we can play the audio. copy/setup data:
-	// audio_data_ptr = std::shared_ptr<rst::audition::SoundChunk>(boost::make_shared<rst::audition::SoundChunk>(*audio_chunk));
-	playback_requested = true;
-}
-
-void AudioPlayerRSB::playback_thread() {
-	printf("> playback thread started\n");
-	playback_state = IDLE;
-
-	while (playback_state != EXITING) {
-		switch (playback_state) {
-			default:
-			case (INITIALIZING):
-				// waiting to be ready
-				break;
-
-			case (IDLE):
-				// nothing to do, wait here until we are triggered to play!
-				if (playback_requested) {
-					printf("> AudioPlayerRSB: loading\n");
-					playback_state = LOADING;
-				}
-				break;
-
-			case (LOADING):
-			{
-				// send the data
-				try {
-					publish_audio_data();
-				}
-				catch (std::exception e) {
-					printf(
-					   "> AudioPlayerRSB: WARNING: failed to call informer. audio playback probably failed\n> error message = %s",
-					   e.what());
-					playback_active = false;
-					playback_requested = false;
-					playback_state = IDLE;
-					break;
-				}
-
-				// add some delay to meet the delay until playback starts (FIXME: this should be determined!)
-				// std::this_thread::sleep_for(std::chrono::milliseconds(100));
-
-				// ok we can now play the data
-				printf("> AudioPlayer: playback started\n");
-				// mark request as beeing processed
-				playback_requested = false;
-				// enter actual playing state
-				playback_state = PLAYING;
-				playback_active = true;
-
-				// now we have to wait until the audio playback finished....
-				long sample_count = audio_data_ptr->sample_count();
-				int sampling_rate = audio_data_ptr->rate();
-				double playback_time = (double)sample_count / (double)sampling_rate;
-				printf("> AudioPlayerRSB estimated playbacktime to %5.3lf seconds. will wait now...", playback_time);
-				boost::this_thread::sleep(std::chrono::seconds(playback_time));
-				printf("> AudioPlayerRSB finished waiting...\n");
-				break;
-			}
-
-			case (PLAYING):
-				// when we reach this case, the playback finshed
-				playback_state = IDLE;
-				playback_active = false;
-				printf("> AudioPlayerRSB: finished playback");
-				break;
-
-			case (ERROR):
-				printf("> AudioPlayerRSB ERROR! exiting\n");
-				exit(EXIT_FAILURE);
-				break;
-		}
-
-		// 1ms delay to safe cpu time
-		std::this_thread::sleep_for(std::chrono::milliseconds(1));
-	}
-
-	// done
-	playback_state = CLOSED;
-}
-
-void AudioPlayerRSB::publish_audio_data() {
-	std::shared_ptr<rst::audition::SoundChunk> request(new rst::audition::SoundChunk());
-
-	request->set_channels(audio_data->sample_channels);
-	request->set_data(audio_data->samples.data());
-	/*
-	    if (audio_data.sample_big_endian){
-	        request->set_endianness(rst::audition::SoundChunk_EndianNess_ENDIAN_BIG);
-	    }else{
-	        request->set_endianness(rst::audition::SoundChunk_EndianNess_ENDIAN_LITTLE);
-	    }
-
-	    request->set_rate(audio_data.sample_rate);
-	    request->set_sample_count(audio_data.samples.size() / audio_data.sample_channels / (audio_data.sample_bit/8));
-
-	    switch (audio_data.sample_bit){
-	        case(8):
-	            request->set_sample_type(audio_data.sample_signed?(rst::audition::SoundChunk::SAMPLE_S8):(rst::audition::SoundChunk::SAMPLE_U8));
-	            break;
-	        case(16):
-	            request->set_sample_type(audio_data.sample_signed?(rst::audition::SoundChunk::SAMPLE_S16):(rst::audition::SoundChunk::SAMPLE_U16));
-	            break;
-	        case(24):
-	            request->set_sample_type(audio_data.sample_signed?(rst::audition::SoundChunk::SAMPLE_S24):(rst::audition::SoundChunk::SAMPLE_U24));
-	            break;
-	        default:
-	            throw runtime_error("AudioPlayerRSB::publish_audio_data() unsupported sample type bit width");
-	    }
-	*/
-	informer->publish(request);
-}
-
-AudioPlayerRSB::~AudioPlayerRSB() {
-}
-
-#endif
diff --git a/server/src/MiddlewareRSB.cpp b/server/src/MiddlewareRSB.cpp
deleted file mode 100644
index b6bb162..0000000
--- a/server/src/MiddlewareRSB.cpp
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * This file is part of hlrc_server
- *
- * Copyright(c) sschulz <AT> techfak.uni-bielefeld.de
- * http://opensource.cit-ec.de/projects/hlrc_server
- *
- * This file may be licensed under the terms of the
- * GNU General Public License Version 3 (the ``GPL''),
- * or (at your option) any later version.
- *
- * Software distributed under the License is distributed
- * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
- * express or implied. See the GPL for the specific language
- * governing rights and limitations.
- *
- * You should have received a copy of the GPL along with this
- * program. If not, go to http://www.gnu.org/licenses/gpl.html
- * or write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The development of this software was supported by the
- * Excellence Cluster EXC 277 Cognitive Interaction Technology.
- * The Excellence Cluster EXC 277 is a grant of the Deutsche
- * Forschungsgemeinschaft (DFG) in the context of the German
- * Excellence Initiative.
- *
- */
-
-#include "MiddlewareRSB.h"
-
-#ifdef RSB_SUPPORT
-#include <rsb/converter/Repository.h>
-#include <rsb/converter/ProtocolBufferConverter.h>
-#include <cstdio>
-
-// CallbackWrapper:
-#include "RSB/GazeCallbackWrapper.h"
-#include "RSB/MouthCallbackWrapper.h"
-#include "RSB/SpeechCallbackWrapper.h"
-#include "RSB/UtteranceCallbackWrapper.h"
-#include "RSB/EmotionCallbackWrapper.h"
-#include "RSB/AnimationCallbackWrapper.h"
-#include "RSB/UtteranceRSB.h"
-using namespace std;
-using namespace rsb;
-using namespace rsb::patterns;
-
-MiddlewareRSB::MiddlewareRSB(Arbiter* arbiter, std::string scope) : Middleware(arbiter, scope) {
-	init();
-}
-
-MiddlewareRSB::~MiddlewareRSB() {
-}
-
-void MiddlewareRSB::tick() {
-	// nothing to do
-}
-
-void MiddlewareRSB::init() {
-	printf("> registering converters\n");
-
-	// converter for EmotionState
-	try {
-		rsb::converter::Converter<string>::Ptr emotionStateConverter(
-		   new rsb::converter::ProtocolBufferConverter<rst::animation::EmotionExpression>());
-		rsb::converter::converterRepository<string>()->registerConverter(emotionStateConverter);
-	}
-	catch (...) {
-	}
-
-	// converter for SoundChunk
-	try {
-		rsb::converter::Converter<string>::Ptr SoundChunkConverter(
-		   new rsb::converter::ProtocolBufferConverter<rst::audition::SoundChunk>());
-		rsb::converter::converterRepository<string>()->registerConverter(SoundChunkConverter);
-	}
-	catch (...) {
-	}
-
-	// converter for Utterance
-	try {
-		rsb::converter::Converter<string>::Ptr UtteranceConverter(
-		   new rsb::converter::ProtocolBufferConverter<rst::audition::Utterance>());
-		rsb::converter::converterRepository<string>()->registerConverter(UtteranceConverter);
-	}
-	catch (...) {
-	}
-
-	// converter for GazeTarget
-	try {
-		rsb::converter::Converter<string>::Ptr gazeTargetConverter(
-		   new rsb::converter::ProtocolBufferConverter<rst::animation::BinocularHeadGaze>());
-		rsb::converter::converterRepository<string>()->registerConverter(gazeTargetConverter);
-	}
-	catch (...) {
-	}
-
-	// converter for MouthTarget
-	// rsb::converter::Converter<string>::Ptr mouthTargetConverter(new
-	// rsb::converter::ProtocolBufferConverter<rst::robot::MouthTarget>());
-	// rsb::converter::converterRepository<string>()->registerConverter(mouthTargetConverter);
-
-	// converter for Animation
-	try {
-		rsb::converter::Converter<string>::Ptr animationConverter(
-		   new rsb::converter::ProtocolBufferConverter<rst::animation::HeadAnimation>());
-		rsb::converter::converterRepository<string>()->registerConverter(animationConverter);
-	}
-	catch (...) {
-	}
-
-	// first get a factory instance that is used to create RSB domain objects
-	Factory& factory = getFactory();
-
-	// scope to listen on:
-	string scope = base_scope + "/set/";
-
-	// get server
-	server = factory.createLocalServer(scope);
-
-	// get tts server:
-	string tts_scope = base_scope + "/tts_provider";
-	printf("> registering remote server on %s\n", tts_scope.c_str());
-	tts_server = factory.createRemoteServer(tts_scope);
-
-	// create local server with parallel exec strategy (HACK!)
-	rsb::ParticipantConfig config = factory.getDefaultParticipantConfig();
-	rsc::runtime::Properties& properties = config.mutableEventReceivingStrategy().mutableOptions();
-	properties.set<string>("parallelhandlercalls", "1");
-
-	// now we can create a server with parallel execution:
-	server_parallel = factory.createLocalServer(scope, config);
-
-	// this server will now handle/call these methods in multiple threads:
-	server_parallel->registerMethod("animation", LocalServer::CallbackPtr(new AnimationCallbackWrapper(this)));
-
-	// initialise callbacks:
-	init_callbacks();
-
-	// informer->publish(gaze_target);
-	printf("> MiddlewareRSB initialised\n");
-}
-
-void MiddlewareRSB::init_callback(string name, LocalServer::CallbackPtr callback_ptr) {
-	printf("> init_callback(%s%s)\n", server->getScope()->toString().c_str(), name.c_str());
-	server->registerMethod(name, callback_ptr);
-}
-
-void MiddlewareRSB::init_callbacks() {
-	printf("> registering callbacks (rpc methods)\n");
-
-	init_callback("speech", LocalServer::CallbackPtr(new SpeechCallbackWrapper(this)));
-	init_callback("utterance", LocalServer::CallbackPtr(new UtteranceCallbackWrapper(this)));
-	init_callback("gaze", LocalServer::CallbackPtr(new GazeCallbackWrapper(this)));
-	/// init_callback("mouth",     LocalServer::CallbackPtr(new MouthCallbackWrapper(this)));
-
-	EmotionCallbackWrapper* emotion_cb = new EmotionCallbackWrapper(this);
-	init_callback("defaultEmotion", LocalServer::CallbackPtr(emotion_cb));
-	init_callback("currentEmotion", LocalServer::CallbackPtr(emotion_cb));
-}
-
-// call a tts system to convert a string to an utterance
-std::shared_ptr<Utterance> MiddlewareRSB::tts_call(string text) {
-	double tts_timeout = 1.0; // seconds. DO NOT CHANGE THIS!
-
-	// build request
-	std::shared_ptr<std::string> request(new string(text));
-
-	// try to fetch it asynchronously:
-	try {
-		RemoteServer::DataFuture<rst::audition::Utterance> future_ptr =
-		   tts_server->callAsync<rst::audition::Utterance>("create_utterance", request);
-
-		// try to fetch the result
-		std::shared_ptr<rst::audition::Utterance> utterance_ptr = future_ptr.get(tts_timeout);
-
-		// done, return utterance ptr
-		std::shared_ptr<Utterance> utterance(new UtteranceRSB(*(utterance_ptr.get())));
-		printf("> done. got utterance (text=%s)\n", utterance->get_text().c_str());
-		return utterance;
-	}
-	catch (rsc::threading::FutureTimeoutException e) {
-		printf("> error: tts_call timed out after %3.1f seconds.\n", tts_timeout);
-	}
-	catch (rsc::threading::FutureTaskExecutionException e) {
-		printf("> error: tts_call failed: %s\n", e.what());
-	}
-
-	printf("> failed... got no utterance\n");
-	std::shared_ptr<Utterance> utterance(new Utterance());
-	return utterance;
-}
-
-#endif
diff --git a/server/src/main.cpp b/server/src/main.cpp
index d33cf88..4830677 100644
--- a/server/src/main.cpp
+++ b/server/src/main.cpp
@@ -26,7 +26,6 @@
  *
  */
 
-#include "MiddlewareRSB.h"
 #include "MiddlewareROS.h"
 #include "Arbiter.h"
 
@@ -44,9 +43,9 @@ using namespace std;
 
 int main(int argc, char* argv[]) {
 	if ((argc != 5) && (argc != 6)) {
-		printf("> ERROR: invalid number of parameters passed to server!\n\nusage: %s <mw_hlrc> <mw_humotion> <base scopename "
-		       "hlrc> <base scopename humotion> [<audio output>]  (example: %s RSB RSB /flobi1/ pulse )\n",
-		       argv[0], argv[0]);
+		printf("> ERROR: invalid number of parameters passed to server!\n\n"
+		"usage: %s <mw_hlrc> <mw_humotion> <base scopename hlrc> <base scopename humotion> [<audio output>]\n"
+		"(example: %s ROS ROS /flobi1/ pulse )\n", argv[0], argv[0]);
 		printf("          audio output is optional and can be {pulse,oss,alsa,null,sndio,..}\n\n");
 		exit(EXIT_FAILURE);
 	}
@@ -77,7 +76,7 @@ int main(int argc, char* argv[]) {
 		middleware = new MiddlewareROS(arbiter, scope_hlrc);
 	}
 	else {
-		middleware = new MiddlewareRSB(arbiter, scope_hlrc);
+      printf("> ERROR: invalid middleware! Only ROS supported)\n");
 	}
 
 	// human motion connection:
