diff -abBruN orocos-toolchain-2.2.0.orig/rtt/rtt/Service.cpp orocos-toolchain-2.2.0.mod/rtt/rtt/Service.cpp
--- orocos-toolchain-2.2.0.orig/rtt/rtt/Service.cpp	2010-12-08 22:45:32.000000000 +0100
+++ orocos-toolchain-2.2.0.mod/rtt/rtt/Service.cpp	2011-01-26 10:42:05.818148503 +0100
@@ -122,7 +122,7 @@
         return shared_ptr();
     }
 
-    OperationInterfacePart* Service::getOperation( std::string name )
+    OperationInterfacePart* Service::getOperation(const std::string& name )
     {
         Logger::In in("Service::getOperation");
         if ( this->hasMember(name ) ) {
@@ -132,7 +132,7 @@
         return 0;
     }
 
-    bool Service::resetOperation(std::string name, base::OperationBase* impl)
+    bool Service::resetOperation(const std::string& name, base::OperationBase* impl)
     {
         if (!hasOperation(name))
             return false;
@@ -140,7 +140,7 @@
         return true;
     }
 
-    bool Service::setOperationThread(std::string const& name, ExecutionThread et)
+    bool Service::setOperationThread(const std::string& name, ExecutionThread et)
     {
         if ( !hasOperation(name) )
             return false;
@@ -175,7 +175,7 @@
         return true;
     }
 
-    boost::shared_ptr<base::DisposableInterface> Service::getLocalOperation( std::string name ) {
+    boost::shared_ptr<base::DisposableInterface> Service::getLocalOperation(const std::string& name ) {
         if ( hasOperation(name) ) {
             return simpleoperations.find(name)->second->getImplementation();
         }
@@ -240,7 +240,7 @@
         parent = p;
     }
 
-    internal::OperationCallerC Service::create(std::string name, ExecutionEngine* caller) {
+    internal::OperationCallerC Service::create(const std::string& name, ExecutionEngine* caller) {
         return internal::OperationCallerC( getPart(name), name, caller );
     }
 
diff -abBruN orocos-toolchain-2.2.0.orig/rtt/rtt/Service.hpp orocos-toolchain-2.2.0.mod/rtt/rtt/Service.hpp
--- orocos-toolchain-2.2.0.orig/rtt/rtt/Service.hpp	2010-12-08 22:45:32.000000000 +0100
+++ orocos-toolchain-2.2.0.mod/rtt/rtt/Service.hpp	2011-01-26 10:42:05.818148503 +0100
@@ -163,7 +163,7 @@
          * Remove a previously added sub-service.
          * @param the name of the service to remove.
          */
-        virtual void removeService( std::string const& service_name );
+        virtual void removeService(const std::string& service_name );
 
         /**
          * Returns this Service.
@@ -226,7 +226,7 @@
          * @note Do not use this function unless you know what you're doing.
          * @see getOperation() for getting normal, remotely available operations.
          */
-        boost::shared_ptr<base::DisposableInterface> getLocalOperation( std::string name );
+        boost::shared_ptr<base::DisposableInterface> getLocalOperation(const std::string& name );
 
         /**
          * Get a previously added operation for
@@ -238,7 +238,7 @@
          * @return A pointer to an operation interface part or a null pointer if
          * \a name was not found.
          */
-        OperationInterfacePart* getOperation( std::string name );
+        OperationInterfacePart* getOperation(const std::string& name );
 
         /**
          * Removes a previously added operation.
@@ -261,7 +261,7 @@
          * operation will be executed, being OwnThread or ClientThread.
          * @return true if \a name was a local, present operation, false otherwise.
          */
-        bool setOperationThread(std::string const& name, ExecutionThread et);
+        bool setOperationThread(const std::string& name, ExecutionThread et);
 
         /**
          * Add an operation object to the interface. This version
@@ -313,7 +313,7 @@
          */
         template<class Func, class Service>
         Operation< typename internal::GetSignature<Func>::Signature >&
-        addOperation( const std::string name, Func func, Service* serv, ExecutionThread et = ClientThread )
+        addOperation( const std::string& name, Func func, Service* serv, ExecutionThread et = ClientThread )
         {
             typedef typename internal::GetSignature<Func>::Signature Signature;
             Operation<Signature>* op = new Operation<Signature>(name, func, serv, et);
@@ -334,7 +334,7 @@
          */
         template<class Func>
         Operation< Func >&
-        addOperation( const std::string name, Func* func, ExecutionThread et = ClientThread )
+        addOperation( const std::string& name, Func* func, ExecutionThread et = ClientThread )
         {
             typedef Func Signature;
             boost::function<Signature> bfunc = func;
@@ -357,7 +357,7 @@
          */
         template<class Func, class Service>
         Operation< typename internal::GetSignature<Func>::Signature >&
-        addSynchronousOperation( const std::string name, Func func, Service* serv, ExecutionThread et = ClientThread )
+        addSynchronousOperation( const std::string& name, Func func, Service* serv, ExecutionThread et = ClientThread )
         {
             typedef typename internal::GetSignature<Func>::Signature Signature;
             Operation<Signature>* op = new Operation<Signature>(name, func, serv, et);
@@ -405,7 +405,7 @@
          *
          * @return A internal::DataSource which, when evaluated, invokes the operation.
          */
-        base::DataSourceBase::shared_ptr getOperation( std::string name,
+        base::DataSourceBase::shared_ptr getOperation(const std::string& name,
                                    const std::vector<base::DataSourceBase::shared_ptr>& args, ExecutionEngine* caller) const
         {
             return this->produce(name, args, caller);
@@ -419,12 +419,12 @@
          *
          * @return An object which can invoke a operation.
          */
-        internal::OperationCallerC create(std::string name, ExecutionEngine* caller);
+        internal::OperationCallerC create(const std::string& name, ExecutionEngine* caller);
 
         /**
          * Reset the implementation of a operation.
          */
-        bool resetOperation(std::string name, base::OperationBase* impl);
+        bool resetOperation(const std::string& name, base::OperationBase* impl);
     protected:
         typedef std::map< std::string, shared_ptr > Services;
         /// the services we implement.
diff -abBruN orocos-toolchain-2.2.0.orig/rtt/rtt/TaskContext.hpp orocos-toolchain-2.2.0.mod/rtt/rtt/TaskContext.hpp
--- orocos-toolchain-2.2.0.orig/rtt/rtt/TaskContext.hpp	2010-12-08 22:45:32.000000000 +0100
+++ orocos-toolchain-2.2.0.mod/rtt/rtt/TaskContext.hpp	2011-01-26 10:43:57.507148150 +0100
@@ -348,7 +348,7 @@
          */
         template<class Func, class Service>
         Operation< typename internal::GetSignature<Func>::Signature >&
-        addOperation( const std::string name, Func func, Service* serv, ExecutionThread et = ClientThread )
+        addOperation( const std::string& name, Func func, Service* serv, ExecutionThread et = ClientThread )
         {
             return tcservice->addOperation(name,func, serv, et);
         }
@@ -359,7 +359,7 @@
          */
         template<class Signature>
         Operation< Signature >&
-        addOperation( const std::string name, Signature* func, ExecutionThread et = ClientThread )
+        addOperation( const std::string& name, Signature* func, ExecutionThread et = ClientThread )
         {
             return tcservice->addOperation(name, func, et);
         }
@@ -373,7 +373,7 @@
          *
          * @return true if it could be found, false otherwise.
          */
-        OperationInterfacePart* getOperation( std::string name )
+        OperationInterfacePart* getOperation( const std::string& name )
         {
             return tcservice->getOperation(name);
         }
