Index: code/trunk/src/util/Convert.h
===================================================================
--- code/trunk/src/util/Convert.h	(revision 1608)
+++ code/trunk/src/util/Convert.h	(revision 1625)
@@ -43,4 +43,5 @@
 #include "SubString.h"
 #include "MultiTypeMath.h"
+#include "String.h"
 
 // disable annoying warning about forcing value to boolean
@@ -299,4 +300,11 @@
 };
 
+// convert to string Shortcut
+template <class FromType>
+std::string convertToString(FromType value)
+{
+  return getConvertedValue<FromType, std::string>(value);
+}
+
 // convert from string
 template <class ToType>
@@ -313,4 +321,11 @@
     }
 };
+
+// convert from string Shortcut
+template <class ToType>
+ToType convertFromString(std::string str)
+{
+  return getConvertedValue<std::string, ToType>(str);
+}
 
 
@@ -404,4 +419,19 @@
 ////////////////////
 
+// bool to std::string
+template <>
+struct ConverterSpecialized<bool, std::string, _Explicit_>
+{
+    enum { specialized = true };
+    static bool convert(std::string* output, const bool& input)
+    {
+        if (input)
+          *output = "true";
+        else
+          *output = "false";
+        return false;
+    }
+};
+
 // Vector2 to std::string
 template <>
@@ -494,4 +524,31 @@
 ////////////////////
 
+// std::string to bool
+template <>
+struct ConverterSpecialized<std::string, bool, _Explicit_>
+{
+    enum { specialized = true };
+    static bool convert(bool* output, const std::string& input)
+    {
+        std::string stripped = getLowercase(removeTrailingWhitespaces(input));
+        if (stripped == "true" || stripped == "on" || stripped == "yes")
+        {
+          *output = true;
+          return true;
+        }
+        else if (stripped == "false" || stripped == "off" || stripped == "no")
+        {
+          *output = false;
+          return true;
+        }
+
+        std::istringstream iss(input);
+        if (iss >> (*output))
+            return true;
+        else
+            return false;
+    }
+};
+
 // std::string to Vector2
 template <>
@@ -611,5 +668,5 @@
 
         SubString tokens(input.substr(opening_parenthesis, closing_parenthesis - opening_parenthesis), ",", SubString::WhiteSpaces, false, '\\', true, '"', true, '\0', '\0', true, '\0');
-        if (tokens.size() >= 4)
+        if (tokens.size() >= 3)
         {
             if (!ConvertValue(&(output->r), tokens[0]))
@@ -619,6 +676,11 @@
             if (!ConvertValue(&(output->b), tokens[2]))
                 return false;
-            if (!ConvertValue(&(output->a), tokens[3]))
-                return false;
+            if (tokens.size() >= 4)
+            {
+                if (!ConvertValue(&(output->a), tokens[3]))
+                    return false;
+            }
+            else
+                output->a = 1.0;
 
             return true;
Index: code/trunk/src/util/Math.cc
===================================================================
--- code/trunk/src/util/Math.cc	(revision 1608)
+++ code/trunk/src/util/Math.cc	(revision 1625)
@@ -30,4 +30,5 @@
 
 #include "Math.h"
+#include "Convert.h"
 
 /**
@@ -136,2 +137,13 @@
     return (targetposition + targetvelocity * time);
 }
+
+unsigned long getUniqueNumber()
+{
+    static unsigned long aNumber = 135;
+    return aNumber++;
+}
+
+std::string getUniqueNumberStr()
+{
+    return convertToString(getUniqueNumber());
+}
Index: code/trunk/src/util/Math.h
===================================================================
--- code/trunk/src/util/Math.h	(revision 1608)
+++ code/trunk/src/util/Math.h	(revision 1625)
@@ -33,4 +33,5 @@
 
 #include <ostream>
+#include <string>
 
 #include <OgreMath.h>
@@ -39,4 +40,5 @@
 #include <OgreVector4.h>
 #include <OgreMatrix3.h>
+#include <OgreMatrix4.h>
 #include <OgreQuaternion.h>
 #include <OgreColourValue.h>
@@ -50,4 +52,5 @@
   typedef Ogre::Vector4 Vector4;
   typedef Ogre::Matrix3 Matrix3;
+  typedef Ogre::Matrix4 Matrix4;
   typedef Ogre::Quaternion Quaternion;
   typedef Ogre::ColourValue ColourValue;
@@ -161,4 +164,7 @@
 }
 
+_UtilExport unsigned long getUniqueNumber();
+_UtilExport std::string getUniqueNumberStr();
+
 class _UtilExport IntVector2
 {
Index: code/trunk/src/util/String.cc
===================================================================
--- code/trunk/src/util/String.cc	(revision 1608)
+++ code/trunk/src/util/String.cc	(revision 1625)
@@ -31,4 +31,10 @@
 #include <cctype>
 #include <iostream>
+
+/**
+    @brief Blank string as variable so you can use const std::string& even
+           if you have to return "".
+*/
+std::string blankString = "";
 
 /**
Index: code/trunk/src/util/String.h
===================================================================
--- code/trunk/src/util/String.h	(revision 1608)
+++ code/trunk/src/util/String.h	(revision 1625)
@@ -35,4 +35,6 @@
 #include <sstream>
 
+extern _UtilExport std::string blankString;
+
 _UtilExport void         strip(std::string* str);
 _UtilExport std::string  getStripped(const std::string& str);
@@ -70,97 +72,3 @@
 _UtilExport unsigned int getNextCommentPosition(const std::string& str, unsigned int start = 0);
 
-//! The Convert class has some static member functions to convert strings to values and values to strings.
-class _UtilExport Convert
-{
-    public:
-        /**
-            @brief Converts a value of any type to a string.
-            @param output The string to write the result in
-            @param input The variable to convert
-            @return True if the conversion succeded
-
-            @example
-            float f = 3.14;
-            std::string output;
-            bool success = Convert::ToString(&output, f);
-        */
-        template <typename T>
-        static bool ToString(std::string* output, T input)
-        {
-            std::ostringstream oss;
-            if (oss << input)
-            {
-                (*output) = oss.str();
-                return true;
-            }
-
-            return false;
-        }
-
-        /**
-            @brief Converts a value of any type to a string and assigns a defaultvalue if the conversion fails.
-            @param output The string to write the result in
-            @param input The variable to convert
-            @param fallbackString The assigned string if the conversion fails.
-            @return True if the conversion succeeded
-
-            @example
-            float f = 3.14;
-            std::string output;
-            bool success = Convert::ToString(&output, f, "0.000000");
-        */
-        template <typename T>
-        static bool ToString(std::string* output, T input, const std::string& fallbackString)
-        {
-            if (Convert::ToString(output, input))
-                return true;
-
-            (*output) = fallbackString;
-            return false;
-        }
-
-        /**
-            @brief Converts a string to a value of any type.
-            @param output The variable to assign the result to
-            @param input The string to convert
-            @return True if the conversion succeeded
-
-            @example
-            std::string input = "3.14";
-            float f;
-            bool success = string2Number(&f, input);
-        */
-        template <typename T>
-        static bool FromString(T* output, const std::string& input)
-        {
-            std::istringstream iss(input);
-            if (iss >> (*output))
-                return true;
-
-            return false;
-        }
-
-        /**
-            @brief Converts a string to a value of any type.
-            @param output The variable to assign the result to
-            @param input The string to convert
-            @param fallbackValue The assigned value if the conversion fails
-            @return True if the conversion succeeded
-
-            @example
-            std::string input = "3.14";
-            float f;
-            bool success = string2Number(&f, input, 0.000000);
-        */
-        template <typename T>
-        static bool FromString(T* output, const std::string& input, T fallbackValue)
-        {
-            if (Convert::FromString(output, input))
-                return true;
-
-            (*output) = fallbackValue;
-            return false;
-        }
-};
-
 #endif /* _Util_String_H__ */
Index: code/trunk/src/util/UtilPrereqs.h
===================================================================
--- code/trunk/src/util/UtilPrereqs.h	(revision 1608)
+++ code/trunk/src/util/UtilPrereqs.h	(revision 1625)
@@ -61,5 +61,4 @@
 //-----------------------------------------------------------------------
 class ArgReader;
-class Convert;
 class MultiTypePrimitive;
 class MultiTypeString;
