Index: code/trunk/src/libraries/core/CorePrereqs.h
===================================================================
--- code/trunk/src/libraries/core/CorePrereqs.h	(revision 7268)
+++ code/trunk/src/libraries/core/CorePrereqs.h	(revision 7271)
@@ -115,4 +115,7 @@
 {
     typedef std::string LanguageEntryLabel;
+
+    template <class T, class U>
+    T orxonox_cast(U*);
 
     class ArgumentCompleter;
Index: code/trunk/src/libraries/core/Event.cc
===================================================================
--- code/trunk/src/libraries/core/Event.cc	(revision 7268)
+++ code/trunk/src/libraries/core/Event.cc	(revision 7271)
@@ -103,6 +103,6 @@
                     {
                         // else cast the pointer to the desired class
-                        void* castedOriginator = event.originator_->getDerivedPointer(this->subclass_->getClassID());
-                        (*this->statefunction_)(event.activate_, castedOriginator);
+                        void* castOriginator = event.originator_->getDerivedPointer(this->subclass_->getClassID());
+                        (*this->statefunction_)(event.activate_, castOriginator);
                     }
                 }
Index: code/trunk/src/libraries/core/Identifier.h
===================================================================
--- code/trunk/src/libraries/core/Identifier.h	(revision 7268)
+++ code/trunk/src/libraries/core/Identifier.h	(revision 7271)
@@ -484,5 +484,5 @@
     */
     template <class T, class U>
-    FORCEINLINE T orxonox_cast(U source)
+    FORCEINLINE T orxonox_cast(U* source)
     {
 #ifdef ORXONOX_COMPILER_MSVC
Index: code/trunk/src/libraries/core/Iterator.h
===================================================================
--- code/trunk/src/libraries/core/Iterator.h	(revision 7268)
+++ code/trunk/src/libraries/core/Iterator.h	(revision 7271)
@@ -32,5 +32,5 @@
 
     The Iterator of a given class allows to iterate through an ObjectList. Objects in
-    this list are casted to the template argument of the Iterator.
+    this list are cast to the template argument of the Iterator.
 
     Usage:
@@ -95,5 +95,5 @@
             inline Iterator(ObjectListElement<O>* element)
             {
-                this->element_ = (element) ? static_cast<ObjectListBaseElement*>(element) : 0;
+                this->element_ = element;
                 this->list_ = ClassIdentifier<O>::getIdentifier()->getObjects();
                 this->list_->registerIterator(this);
@@ -107,5 +107,5 @@
             inline Iterator(const ObjectListIterator<O>& other)
             {
-                this->element_ = (other.element_) ? static_cast<ObjectListBaseElement*>(other.element_) : 0;
+                this->element_ = other.element_;
                 this->list_ = ClassIdentifier<O>::getIdentifier()->getObjects();
                 this->list_->registerIterator(this);
@@ -162,5 +162,5 @@
                     this->list_->unregisterIterator(this);
 
-                this->element_ = (element) ? static_cast<ObjectListBaseElement*>(element) : 0;
+                this->element_ = element;
                 this->list_ = ClassIdentifier<O>::getIdentifier()->getObjects();
                 this->list_->registerIterator(this);
@@ -179,5 +179,5 @@
                     this->list_->unregisterIterator(this);
 
-                this->element_ = (other.element_) ? static_cast<ObjectListBaseElement*>(other.element_) : 0;
+                this->element_ = other.element_;
                 this->list_ = ClassIdentifier<O>::getIdentifier()->getObjects();
                 this->list_->registerIterator(this);
Index: code/trunk/src/libraries/core/ObjectList.h
===================================================================
--- code/trunk/src/libraries/core/ObjectList.h	(revision 7268)
+++ code/trunk/src/libraries/core/ObjectList.h	(revision 7271)
@@ -61,17 +61,29 @@
             /** @brief Returns an Iterator to the first element in the list. @return The Iterator */
             inline static ObjectListElement<T>* begin()
-                { return ((ObjectListElement<T>*)ClassIdentifier<T>::getIdentifier()->getObjects()->begin().element_); }
+            {
+                ObjectListBase* list = ClassIdentifier<T>::getIdentifier()->getObjects();
+                return static_cast<ObjectListElement<T>*>(list->begin().element_);
+            }
 
             /** @brief Returns an Iterator to the element after the last element in the list. @return The Iterator */
             inline static ObjectListElement<T>* end()
-                { return ((ObjectListElement<T>*)ClassIdentifier<T>::getIdentifier()->getObjects()->end().element_); }
+            {
+                ObjectListBase* list = ClassIdentifier<T>::getIdentifier()->getObjects();
+                return static_cast<ObjectListElement<T>*>(list->end().element_);
+            }
 
             /** @brief Returns an Iterator to the last element in the list. @return The Iterator */
             inline static ObjectListElement<T>* rbegin()
-                { return ((ObjectListElement<T>*)ClassIdentifier<T>::getIdentifier()->getObjects()->rbegin().element_); }
+            {
+                ObjectListBase* list = ClassIdentifier<T>::getIdentifier()->getObjects();
+                return static_cast<ObjectListElement<T>*>(list->rbegin().element_);
+            }
 
             /** @brief Returns an Iterator to the element before the first element in the list. @return The Iterator */
             inline static ObjectListElement<T>* rend()
-                { return ((ObjectListElement<T>*)ClassIdentifier<T>::getIdentifier()->getObjects()->rend().element_); }
+            {
+                ObjectListBase* list = ClassIdentifier<T>::getIdentifier()->getObjects();
+                return static_cast<ObjectListElement<T>*>(list->rend().element_);
+            }
     };
 }
Index: code/trunk/src/libraries/core/XMLPort.h
===================================================================
--- code/trunk/src/libraries/core/XMLPort.h	(revision 7268)
+++ code/trunk/src/libraries/core/XMLPort.h	(revision 7271)
@@ -541,10 +541,10 @@
             void callLoadExecutor(BaseObject* object, BaseObject* newObject)
             {
-                T* castedObject = orxonox_cast<T*>(object);
-                assert(castedObject);
-                O* castedNewObject = orxonox_cast<O*>(newObject);
-                assert(castedNewObject);
-
-                (*this->loadexecutor_)(castedObject, castedNewObject);
+                T* castObject = orxonox_cast<T*>(object);
+                assert(castObject);
+                O* castNewObject = orxonox_cast<O*>(newObject);
+                assert(castNewObject);
+
+                (*this->loadexecutor_)(castObject, castNewObject);
             }
 
Index: code/trunk/src/libraries/core/input/InputDevice.h
===================================================================
--- code/trunk/src/libraries/core/input/InputDevice.h	(revision 7268)
+++ code/trunk/src/libraries/core/input/InputDevice.h	(revision 7271)
@@ -132,5 +132,5 @@
         {
             oisDevice_ = static_cast<OISDeviceClass*>(oisInputManager_->createInputObject(OISDeviceValue, true));
-            // Note: after the static_cast here, the casted this pointer becomes
+            // Note: after the static_cast here, the cast this pointer becomes
             //       invalid right until the subclass has been constructed!
             oisDevice_->setEventCallback(static_cast<DeviceClass*>(this));
Index: code/trunk/src/modules/objects/triggers/MultiTrigger.h
===================================================================
--- code/trunk/src/modules/objects/triggers/MultiTrigger.h	(revision 7268)
+++ code/trunk/src/modules/objects/triggers/MultiTrigger.h	(revision 7271)
@@ -82,5 +82,5 @@
             'simultaniousTriggerers':   The number of simultanious triggerers limits the number of object that are allowed to trigger the MultiTrigger at the same time. Or a little more precisely, the number of distinct objects the MultiTrigger has 'triggered' states for, at each point in time.
             'mode':                     The mode describes how the MultiTrigger acts in relation to all the MultiTriggers, that are appended to it. There are 3 modes: 'and', meaning that the MultiTrigger can only be triggered if all the appended MultiTriggers are active. 'or', meaning that the MultiTrigger can only triggered if at least one of the appendend MultiTriggers is active. And 'xor', meaning that the MultiTrigger can only be triggered if one and only one appended MultiTrigger is active. Notice, that I wrote 'can only be active', that implies, that there is an addtitional condition to the activity of the MultiTrigger and that is the fulfillment of the triggering condition (the MultiTrigger itself doesn't have one, but all derived classes should). Also bear in mind, that the activity of a MultiTrigger is still coupled to the object that triggered it. The default is 'and'.
-            'broadcast'                 Broadcast is a bool, if true the MutliTrigger is in broadcast-mode, meaining, that all trigger events that are caused by no originator (originator is NULL) are broadcasted as having come from every possible originator, or more precisely as having come from all objects that are specified targets of this MultiTrigger.
+            'broadcast'                 Broadcast is a bool, if true the MutliTrigger is in broadcast-mode, meaining, that all trigger events that are caused by no originator (originator is NULL) are broadcast as having come from every possible originator, or more precisely as having come from all objects that are specified targets of this MultiTrigger.
             'target':                   The target describes the kind of objects that are allowed to trigger this MultiTrigger. The default is 'Pawn'.
             Also there is the possibility of appending MultiTriggers to the MultiTrigger just by adding them as subobjects in the XML description of your MultiTrigger.
