Index: code/branches/core4/src/core/ArgumentCompletionFunctions.cc
===================================================================
--- code/branches/core4/src/core/ArgumentCompletionFunctions.cc	(revision 3264)
+++ code/branches/core4/src/core/ArgumentCompletionFunctions.cc	(revision 3265)
@@ -143,5 +143,5 @@
 
             for (std::list<unsigned int>::const_iterator it = threadnumbers.begin(); it != threadnumbers.end(); ++it)
-                threads.push_back(ArgumentCompletionListElement(getConvertedValue<unsigned int, std::string>(*it)));
+                threads.push_back(ArgumentCompletionListElement(multi_cast<std::string>(*it)));
 
             return threads;
Index: code/branches/core4/src/core/ConfigFileManager.cc
===================================================================
--- code/branches/core4/src/core/ConfigFileManager.cc	(revision 3264)
+++ code/branches/core4/src/core/ConfigFileManager.cc	(revision 3265)
@@ -124,7 +124,7 @@
     {
         if (this->additionalComment_ == "" || this->additionalComment_.size() == 0)
-            return (this->name_ + "[" + getConvertedValue<unsigned int, std::string>(this->index_, "0") + "]" + "=" + this->value_);
-        else
-            return (this->name_ + "[" + getConvertedValue<unsigned int, std::string>(this->index_, "0") + "]=" + this->value_ + " " + this->additionalComment_);
+            return (this->name_ + "[" + multi_cast<std::string>(this->index_, "0") + "]" + "=" + this->value_);
+        else
+            return (this->name_ + "[" + multi_cast<std::string>(this->index_, "0") + "]=" + this->value_ + " " + this->additionalComment_);
     }
 
Index: code/branches/core4/src/core/IRC.cc
===================================================================
--- code/branches/core4/src/core/IRC.cc	(revision 3264)
+++ code/branches/core4/src/core/IRC.cc	(revision 3265)
@@ -68,5 +68,5 @@
         {   COUT(1) << "Error while initializing Tcl (IRC): " << e.what();   }
 
-        this->nickname_ = "orx" + getConvertedValue<int, std::string>((unsigned int)rand());
+        this->nickname_ = "orx" + multi_cast<std::string>(static_cast<unsigned int>(rand()));
         TclThreadManager::execute(threadID, "set nickname " + this->nickname_);
         TclThreadManager::execute(threadID, "source irc.tcl");
Index: code/branches/core4/src/core/TclThreadManager.cc
===================================================================
--- code/branches/core4/src/core/TclThreadManager.cc	(revision 3264)
+++ code/branches/core4/src/core/TclThreadManager.cc	(revision 3265)
@@ -94,5 +94,5 @@
         boost::mutex::scoped_lock bundles_lock(TclThreadManager::getInstance().bundlesMutex_);
         TclThreadManager::getInstance().threadCounter_++;
-        std::string name = getConvertedValue<unsigned int, std::string>(TclThreadManager::getInstance().threadCounter_);
+        std::string name = multi_cast<std::string>(TclThreadManager::getInstance().threadCounter_);
 
         TclInterpreterBundle* bundle = new TclInterpreterBundle;
@@ -192,5 +192,5 @@
         {
             boost::mutex::scoped_lock queue_lock(TclThreadManager::getInstance().orxonoxInterpreterBundle_.queueMutex_);
-            output += getConvertedValue<unsigned int, std::string>(TclThreadManager::getInstance().orxonoxInterpreterBundle_.queue_.size());
+            output += multi_cast<std::string>(TclThreadManager::getInstance().orxonoxInterpreterBundle_.queue_.size());
         }
         output += "\t\t";
@@ -201,9 +201,9 @@
         for (std::map<unsigned int, TclInterpreterBundle*>::const_iterator it = TclThreadManager::getInstance().interpreterBundles_.begin(); it != TclThreadManager::getInstance().interpreterBundles_.end(); ++it)
         {
-            std::string output = getConvertedValue<unsigned int, std::string>((*it).first);
+            std::string output = multi_cast<std::string>((*it).first);
             output += "\t\t";
             {
                 boost::mutex::scoped_lock queue_lock((*it).second->queueMutex_);
-                output += getConvertedValue<unsigned int, std::string>((*it).second->queue_.size());
+                output += multi_cast<std::string>((*it).second->queue_.size());
             }
             output += "\t\t";
@@ -342,5 +342,5 @@
         else
         {
-            this->error("Error: No Tcl-interpreter with ID " + getConvertedValue<unsigned int, std::string>(threadID) + " existing.");
+            this->error("Error: No Tcl-interpreter with ID " + multi_cast<std::string>(threadID) + " existing.");
             return 0;
         }
@@ -355,5 +355,5 @@
                 output += " ";
 
-            output += getConvertedValue<unsigned int, std::string>(*it);
+            output += multi_cast<std::string>(*it);
         }
         return output;
@@ -444,5 +444,5 @@
             if (bundle->queue_.size() >= TCLTHREADMANAGER_MAX_QUEUE_LENGTH)
             {
-                this->error("Error: Queue of Tcl-interpreter " + getConvertedValue<unsigned int, std::string>(threadID) + " is full, couldn't add command.");
+                this->error("Error: Queue of Tcl-interpreter " + multi_cast<std::string>(threadID) + " is full, couldn't add command.");
                 return;
             }
@@ -492,5 +492,5 @@
         if (std::find(target->queriers_.begin(), target->queriers_.end(), target->id_) != target->queriers_.end())
         {
-            this->error("Error: Circular query (" + this->dumpList(target->queriers_) + " -> " + getConvertedValue<unsigned int, std::string>(target->id_) + "), couldn't query Tcl-interpreter with ID " + getConvertedValue<unsigned int, std::string>(target->id_) + " from other interpreter with ID " + getConvertedValue<unsigned int, std::string>(querier->id_) + ".");
+            this->error("Error: Circular query (" + this->dumpList(target->queriers_) + " -> " + multi_cast<std::string>(target->id_) + "), couldn't query Tcl-interpreter with ID " + multi_cast<std::string>(target->id_) + " from other interpreter with ID " + multi_cast<std::string>(querier->id_) + ".");
             return false;
         }
@@ -585,5 +585,5 @@
                     else
                     {
-                        this->error("Error: Couldn't query Tcl-interpreter with ID " + getConvertedValue<unsigned int, std::string>(threadID) + ", interpreter is busy right now.");
+                        this->error("Error: Couldn't query Tcl-interpreter with ID " + multi_cast<std::string>(threadID) + ", interpreter is busy right now.");
                     }
                 }
@@ -665,9 +665,9 @@
         catch (Tcl::tcl_error const &e)
         {
-            TclThreadManager::getInstance().error("Tcl (ID " + getConvertedValue<unsigned int, std::string>(interpreterBundle->id_) + ") error: " + e.what());
+            TclThreadManager::getInstance().error("Tcl (ID " + multi_cast<std::string>(interpreterBundle->id_) + ") error: " + e.what());
         }
         catch (std::exception const &e)
         {
-            TclThreadManager::getInstance().error("Error while executing Tcl (ID " + getConvertedValue<unsigned int, std::string>(interpreterBundle->id_) + "): " + e.what());
+            TclThreadManager::getInstance().error("Error while executing Tcl (ID " + multi_cast<std::string>(interpreterBundle->id_) + "): " + e.what());
         }
 
Index: code/branches/core4/src/core/input/KeyBinder.cc
===================================================================
--- code/branches/core4/src/core/input/KeyBinder.cc	(revision 3264)
+++ code/branches/core4/src/core/input/KeyBinder.cc	(revision 3265)
@@ -187,5 +187,5 @@
         for (unsigned int iDev = 0; iDev < numberOfJoySticks_; iDev++)
         {
-            std::string deviceNumber = convertToString(iDev);
+            std::string deviceNumber = multi_cast<std::string>(iDev);
             // joy stick buttons
             for (unsigned int i = 0; i < JoyStickButtonCode::numberOfButtons; i++)
Index: code/branches/core4/src/orxonox/objects/gametypes/UnderAttack.cc
===================================================================
--- code/branches/core4/src/orxonox/objects/gametypes/UnderAttack.cc	(revision 3264)
+++ code/branches/core4/src/orxonox/objects/gametypes/UnderAttack.cc	(revision 3265)
@@ -173,5 +173,5 @@
             if ( gameTime_ <= timesequence_ && gameTime_ > 0)
             {
-                std::string message = convertToString(timesequence_) + " seconds left!";
+                std::string message = multi_cast<std::string>(timesequence_) + " seconds left!";
 /*
                 COUT(0) << message << std::endl;
Index: code/branches/core4/src/orxonox/objects/weaponsystem/projectiles/LightningGunProjectile.cc
===================================================================
--- code/branches/core4/src/orxonox/objects/weaponsystem/projectiles/LightningGunProjectile.cc	(revision 3264)
+++ code/branches/core4/src/orxonox/objects/weaponsystem/projectiles/LightningGunProjectile.cc	(revision 3265)
@@ -56,5 +56,5 @@
         this->materialBase_ = material;    
     
-        BillboardProjectile::setMaterial(material + convertToString(this->textureIndex_));
+        BillboardProjectile::setMaterial(material + multi_cast<std::string>(this->textureIndex_));
     }
 
Index: code/branches/core4/src/orxonox/overlays/OrxonoxOverlay.cc
===================================================================
--- code/branches/core4/src/orxonox/overlays/OrxonoxOverlay.cc	(revision 3264)
+++ code/branches/core4/src/orxonox/overlays/OrxonoxOverlay.cc	(revision 3265)
@@ -72,10 +72,10 @@
         // create the Ogre::Overlay
         overlay_ = Ogre::OverlayManager::getSingleton().create("OrxonoxOverlay_overlay_"
-            + convertToString(hudOverlayCounter_s++));
+            + multi_cast<std::string>(hudOverlayCounter_s++));
 
         // create background panel (can be used to show any picture)
         this->background_ = static_cast<Ogre::PanelOverlayElement*>(
             Ogre::OverlayManager::getSingleton().createOverlayElement("Panel",
-            "OrxonoxOverlay_background_" + convertToString(hudOverlayCounter_s++)));
+            "OrxonoxOverlay_background_" + multi_cast<std::string>(hudOverlayCounter_s++)));
         this->overlay_->add2D(this->background_);
 
Index: code/branches/core4/src/orxonox/overlays/console/InGameConsole.cc
===================================================================
--- code/branches/core4/src/orxonox/overlays/console/InGameConsole.cc	(revision 3264)
+++ code/branches/core4/src/orxonox/overlays/console/InGameConsole.cc	(revision 3265)
@@ -220,5 +220,5 @@
         for (int i = 0; i < LINES; i++)
         {
-            this->consoleOverlayTextAreas_[i] = static_cast<Ogre::TextAreaOverlayElement*>(ovMan->createOverlayElement("TextArea", "InGameConsoleTextArea" + convertToString(i)));
+            this->consoleOverlayTextAreas_[i] = static_cast<Ogre::TextAreaOverlayElement*>(ovMan->createOverlayElement("TextArea", "InGameConsoleTextArea" + multi_cast<std::string>(i)));
             this->consoleOverlayTextAreas_[i]->setMetricsMode(Ogre::GMM_PIXELS);
             this->consoleOverlayTextAreas_[i]->setFontName("MonofurConsole");
Index: code/branches/core4/src/orxonox/overlays/hud/GametypeStatus.cc
===================================================================
--- code/branches/core4/src/orxonox/overlays/hud/GametypeStatus.cc	(revision 3264)
+++ code/branches/core4/src/orxonox/overlays/hud/GametypeStatus.cc	(revision 3265)
@@ -70,5 +70,5 @@
             {
                 if (gtinfo->isStartCountdownRunning())
-                    this->setCaption(convertToString((int)ceil(gtinfo->getStartCountdown())));
+                    this->setCaption(multi_cast<std::string>((int)ceil(gtinfo->getStartCountdown())));
                 else if (ce->isA(Class(Spectator)))
                     this->setCaption("Press [Fire] to respawn");
Index: code/branches/core4/src/orxonox/overlays/hud/HUDBar.cc
===================================================================
--- code/branches/core4/src/orxonox/overlays/hud/HUDBar.cc	(revision 3264)
+++ code/branches/core4/src/orxonox/overlays/hud/HUDBar.cc	(revision 3265)
@@ -72,5 +72,5 @@
 
         // create new material
-        std::string materialname = "barmaterial" + getConvertedValue<unsigned int, std::string>(materialcount_s++);
+        std::string materialname = "barmaterial" + multi_cast<std::string>(materialcount_s++);
         Ogre::MaterialPtr material = (Ogre::MaterialPtr)Ogre::MaterialManager::getSingleton().create(materialname, "General");
         material->getTechnique(0)->getPass(0)->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA);
Index: code/branches/core4/src/orxonox/overlays/hud/HUDHealthBar.cc
===================================================================
--- code/branches/core4/src/orxonox/overlays/hud/HUDHealthBar.cc	(revision 3264)
+++ code/branches/core4/src/orxonox/overlays/hud/HUDHealthBar.cc	(revision 3265)
@@ -83,5 +83,5 @@
         {
             this->setValue(this->owner_->getHealth() / this->owner_->getInitialHealth());
-            this->textoverlay_->setCaption(convertToString((int)this->owner_->getHealth()));
+            this->textoverlay_->setCaption(multi_cast<std::string>((int)this->owner_->getHealth()));
         }
 
Index: code/branches/core4/src/orxonox/overlays/hud/HUDNavigation.cc
===================================================================
--- code/branches/core4/src/orxonox/overlays/hud/HUDNavigation.cc	(revision 3264)
+++ code/branches/core4/src/orxonox/overlays/hud/HUDNavigation.cc	(revision 3265)
@@ -142,6 +142,6 @@
         // set text
         int dist = (int) getDist2Focus();
-        navText_->setCaption(convertToString(dist));
-        float textLength = convertToString(dist).size() * navText_->getCharHeight() * 0.3;
+        navText_->setCaption(multi_cast<std::string>(dist));
+        float textLength = multi_cast<std::string>(dist).size() * navText_->getCharHeight() * 0.3;
 
 /*
Index: code/branches/core4/src/orxonox/overlays/hud/HUDTimer.cc
===================================================================
--- code/branches/core4/src/orxonox/overlays/hud/HUDTimer.cc	(revision 3264)
+++ code/branches/core4/src/orxonox/overlays/hud/HUDTimer.cc	(revision 3265)
@@ -59,5 +59,5 @@
             if (gametype->getTimerIsActive())
             {
-                this->setCaption(convertToString((int)gametype->getTime() + 1));
+                this->setCaption(multi_cast<std::string>((int)gametype->getTime() + 1));
             }
         }
Index: code/branches/core4/src/orxonox/overlays/hud/PongScore.cc
===================================================================
--- code/branches/core4/src/orxonox/overlays/hud/PongScore.cc	(revision 3264)
+++ code/branches/core4/src/orxonox/overlays/hud/PongScore.cc	(revision 3265)
@@ -83,5 +83,5 @@
             {
                 name1 = player1->getName();
-                score1 = convertToString(this->owner_->getScore(player1));
+                score1 = multi_cast<std::string>(this->owner_->getScore(player1));
             }
 
@@ -89,5 +89,5 @@
             {
                 name2 = player2->getName();
-                score2 = convertToString(this->owner_->getScore(player2));
+                score2 = multi_cast<std::string>(this->owner_->getScore(player2));
             }
 
Index: code/branches/core4/src/orxonox/overlays/hud/TeamBaseMatchScore.cc
===================================================================
--- code/branches/core4/src/orxonox/overlays/hud/TeamBaseMatchScore.cc	(revision 3264)
+++ code/branches/core4/src/orxonox/overlays/hud/TeamBaseMatchScore.cc	(revision 3265)
@@ -71,9 +71,9 @@
         if (this->owner_)
         {
-            std::string bases1 = "(" + convertToString(this->owner_->getTeamBases(0)) + ")";
-            std::string bases2 = "(" + convertToString(this->owner_->getTeamBases(1)) + ")";
+            std::string bases1 = "(" + multi_cast<std::string>(this->owner_->getTeamBases(0)) + ")";
+            std::string bases2 = "(" + multi_cast<std::string>(this->owner_->getTeamBases(1)) + ")";
 
-            std::string score1 = convertToString(this->owner_->getTeamPoints(0));
-            std::string score2 = convertToString(this->owner_->getTeamPoints(1));
+            std::string score1 = multi_cast<std::string>(this->owner_->getTeamPoints(0));
+            std::string score2 = multi_cast<std::string>(this->owner_->getTeamPoints(1));
 
             std::string output1;
Index: code/branches/core4/src/orxonox/overlays/stats/CreateLines.cc
===================================================================
--- code/branches/core4/src/orxonox/overlays/stats/CreateLines.cc	(revision 3264)
+++ code/branches/core4/src/orxonox/overlays/stats/CreateLines.cc	(revision 3265)
@@ -99,5 +99,5 @@
     //    while (textColumns_.size() < numberOfColumns)
     //    {
-    //        Ogre::TextAreaOverlayElement* tempTextArea = static_cast<Ogre::TextAreaOverlayElement*>(ovMan->createOverlayElement("TextArea", "StatsLineTextArea" + getName() + convertToString(lineIndex) + convertToString(colIndex)));
+    //        Ogre::TextAreaOverlayElement* tempTextArea = static_cast<Ogre::TextAreaOverlayElement*>(ovMan->createOverlayElement("TextArea", "StatsLineTextArea" + getName() + multi_cast<std::string>(lineIndex) + multi_cast<std::string>(colIndex)));
     //        textColumns_.push_back(tempTextArea);
     //        this->background_->addChild(tempTextArea);
Index: code/branches/core4/src/orxonox/tools/BillboardSet.cc
===================================================================
--- code/branches/core4/src/orxonox/tools/BillboardSet.cc	(revision 3264)
+++ code/branches/core4/src/orxonox/tools/BillboardSet.cc	(revision 3265)
@@ -74,5 +74,5 @@
             if (GameMode::showsGraphics())
             {
-                this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + convertToString(BillboardSet::billboardSetCounter_s++), count);
+                this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + multi_cast<std::string>(BillboardSet::billboardSetCounter_s++), count);
                 this->billboardSet_->createBillboard(position);
                 this->billboardSet_->setMaterialName(file);
@@ -97,5 +97,5 @@
             if (GameMode::showsGraphics())
             {
-                this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + convertToString(BillboardSet::billboardSetCounter_s++), count);
+                this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + multi_cast<std::string>(BillboardSet::billboardSetCounter_s++), count);
                 this->billboardSet_->createBillboard(position, colour);
                 this->billboardSet_->setMaterialName(file);
Index: code/branches/core4/src/orxonox/tools/Mesh.cc
===================================================================
--- code/branches/core4/src/orxonox/tools/Mesh.cc	(revision 3264)
+++ code/branches/core4/src/orxonox/tools/Mesh.cc	(revision 3265)
@@ -68,5 +68,5 @@
             try
             {
-                this->entity_ = this->scenemanager_->createEntity("Mesh" + convertToString(Mesh::meshCounter_s++), meshsource);
+                this->entity_ = this->scenemanager_->createEntity("Mesh" + multi_cast<std::string>(Mesh::meshCounter_s++), meshsource);
                 this->entity_->setCastShadows(this->bCastShadows_);
 
Index: code/branches/core4/src/orxonox/tools/ParticleInterface.cc
===================================================================
--- code/branches/core4/src/orxonox/tools/ParticleInterface.cc	(revision 3264)
+++ code/branches/core4/src/orxonox/tools/ParticleInterface.cc	(revision 3265)
@@ -69,5 +69,5 @@
             try
             {
-                this->particleSystem_ = this->scenemanager_->createParticleSystem("particles" + getConvertedValue<unsigned int, std::string>(ParticleInterface::counter_s++), templateName);
+                this->particleSystem_ = this->scenemanager_->createParticleSystem("particles" + multi_cast<std::string>(ParticleInterface::counter_s++), templateName);
                 this->setSpeedFactor(1.0f);
             }
Index: code/branches/core4/src/orxonox/tools/TextureGenerator.cc
===================================================================
--- code/branches/core4/src/orxonox/tools/TextureGenerator.cc	(revision 3264)
+++ code/branches/core4/src/orxonox/tools/TextureGenerator.cc	(revision 3265)
@@ -72,5 +72,5 @@
         if (it == colourMap.end())
         {
-            std::string materialName = textureName + "_Material_" + convertToString(materialCount_s++);
+            std::string materialName = textureName + "_Material_" + multi_cast<std::string>(materialCount_s++);
             Ogre::MaterialPtr material = (Ogre::MaterialPtr)Ogre::MaterialManager::getSingleton().create(materialName, "General");
             material->getTechnique(0)->getPass(0)->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA);
Index: code/branches/core4/src/util/Convert.h
===================================================================
--- code/branches/core4/src/util/Convert.h	(revision 3264)
+++ code/branches/core4/src/util/Convert.h	(revision 3265)
@@ -361,18 +361,4 @@
     }
 
-    // convert to string Shortcut
-    template <class FromType>
-    FORCEINLINE std::string convertToString(FromType value)
-    {
-        return getConvertedValue<FromType, std::string>(value);
-    }
-
-    // convert from string Shortcut
-    template <class ToType>
-    FORCEINLINE ToType convertFromString(std::string str)
-    {
-        return getConvertedValue<std::string, ToType>(str);
-    }
-
     ////////////////////////////////
     // Special string conversions //
Index: code/branches/core4/src/util/MultiTypeValue.h
===================================================================
--- code/branches/core4/src/util/MultiTypeValue.h	(revision 3264)
+++ code/branches/core4/src/util/MultiTypeValue.h	(revision 3265)
@@ -139,12 +139,12 @@
         inline operator bool()                 const { return getConvertedValue<T, bool>                (this->value_, 0); }     /** @brief Returns the current value, converted to the requested type. */
         inline operator void*()                const { return getConvertedValue<T, void*>               (this->value_, 0); }     /** @brief Returns the current value, converted to the requested type. */
-        inline operator std::string()          const { return getConvertedValue<T, std::string>         (this->value_, zeroise<std::string         >()); } /** @brief Returns the current value, converted to the requested type. */
-        inline operator orxonox::Vector2()     const { return getConvertedValue<T, orxonox::Vector2>    (this->value_, zeroise<orxonox::Vector2    >()); } /** @brief Returns the current value, converted to the requested type. */
-        inline operator orxonox::Vector3()     const { return getConvertedValue<T, orxonox::Vector3>    (this->value_, zeroise<orxonox::Vector3    >()); } /** @brief Returns the current value, converted to the requested type. */
-        inline operator orxonox::Vector4()     const { return getConvertedValue<T, orxonox::Vector4>    (this->value_, zeroise<orxonox::Vector4    >()); } /** @brief Returns the current value, converted to the requested type. */
-        inline operator orxonox::ColourValue() const { return getConvertedValue<T, orxonox::ColourValue>(this->value_, zeroise<orxonox::ColourValue>()); } /** @brief Returns the current value, converted to the requested type. */
-        inline operator orxonox::Quaternion()  const { return getConvertedValue<T, orxonox::Quaternion> (this->value_, zeroise<orxonox::Quaternion >()); } /** @brief Returns the current value, converted to the requested type. */
-        inline operator orxonox::Radian()      const { return getConvertedValue<T, orxonox::Radian>     (this->value_, zeroise<orxonox::Radian     >()); } /** @brief Returns the current value, converted to the requested type. */
-        inline operator orxonox::Degree()      const { return getConvertedValue<T, orxonox::Degree>     (this->value_, zeroise<orxonox::Degree     >()); } /** @brief Returns the current value, converted to the requested type. */
+        inline operator std::string()          const { return getConvertedValue<T, std::string>         (this->value_, NilValue<std::string         >()); } /** @brief Returns the current value, converted to the requested type. */
+        inline operator orxonox::Vector2()     const { return getConvertedValue<T, orxonox::Vector2>    (this->value_, NilValue<orxonox::Vector2    >()); } /** @brief Returns the current value, converted to the requested type. */
+        inline operator orxonox::Vector3()     const { return getConvertedValue<T, orxonox::Vector3>    (this->value_, NilValue<orxonox::Vector3    >()); } /** @brief Returns the current value, converted to the requested type. */
+        inline operator orxonox::Vector4()     const { return getConvertedValue<T, orxonox::Vector4>    (this->value_, NilValue<orxonox::Vector4    >()); } /** @brief Returns the current value, converted to the requested type. */
+        inline operator orxonox::ColourValue() const { return getConvertedValue<T, orxonox::ColourValue>(this->value_, NilValue<orxonox::ColourValue>()); } /** @brief Returns the current value, converted to the requested type. */
+        inline operator orxonox::Quaternion()  const { return getConvertedValue<T, orxonox::Quaternion> (this->value_, NilValue<orxonox::Quaternion >()); } /** @brief Returns the current value, converted to the requested type. */
+        inline operator orxonox::Radian()      const { return getConvertedValue<T, orxonox::Radian>     (this->value_, NilValue<orxonox::Radian     >()); } /** @brief Returns the current value, converted to the requested type. */
+        inline operator orxonox::Degree()      const { return getConvertedValue<T, orxonox::Degree>     (this->value_, NilValue<orxonox::Degree     >()); } /** @brief Returns the current value, converted to the requested type. */
 
         /** @brief Puts the current value on the stream */
Index: code/branches/core4/src/util/StringUtils.cc
===================================================================
--- code/branches/core4/src/util/StringUtils.cc	(revision 3264)
+++ code/branches/core4/src/util/StringUtils.cc	(revision 3265)
@@ -44,5 +44,5 @@
     std::string getUniqueNumberString()
     {
-        return convertToString(getUniqueNumber());
+        return multi_cast<std::string>(getUniqueNumber());
     }
 
