Index: branches/new_class_id/src/lib/graphics/importer/resource_texture.cc
===================================================================
--- branches/new_class_id/src/lib/graphics/importer/resource_texture.cc	(revision 9783)
+++ branches/new_class_id/src/lib/graphics/importer/resource_texture.cc	(revision 9784)
@@ -5,10 +5,27 @@
 
 
+ResourceTexture::ResourceTexture(const std::string& imageName, GLenum target)
+{
+  Resource::Pointer* ptr = this->acquireResource(ResourceTexture::type, imageName + ',' + "TEST");
 
-ResourceTexture::TextureResourcePointer::TextureResourcePointer(TextureData* data)
-{
-  this->pointer = new TextureData::Pointer(data);
+  if (ptr)
+    this->acquireData(static_cast<ResourceTexture::TextureResourcePointer*>(ptr)->ptr());
+  else
+  {
+    this->loadImage(imageName, target);
+  }
 }
 
 
 Resource::Type ResourceTexture::type(Texture::staticClassID());
+
+
+
+
+
+ResourceTexture::TextureResourcePointer::TextureResourcePointer(const std::string& loadString, const Resource::KeepLevel& keepLevel, TextureData* data)
+    : Resource::Pointer(loadString, keepLevel) , pointer(data)
+{
+}
+
+
Index: branches/new_class_id/src/lib/graphics/importer/resource_texture.h
===================================================================
--- branches/new_class_id/src/lib/graphics/importer/resource_texture.h	(revision 9783)
+++ branches/new_class_id/src/lib/graphics/importer/resource_texture.h	(revision 9784)
@@ -18,10 +18,11 @@
 
 private:
-  class TextureResourcePointer
+  class TextureResourcePointer : public Resource::Pointer
   {
   public:
-    TextureResourcePointer(TextureData* data);
+    TextureResourcePointer(const std::string& loadString, const Resource::KeepLevel& keepLevel, TextureData* data);
+    inline const TextureData::Pointer& ptr() const { return pointer; }
   private:
-    TextureData::Pointer* pointer;
+    TextureData::Pointer pointer;
   };
 
Index: branches/new_class_id/src/lib/graphics/importer/texture.h
===================================================================
--- branches/new_class_id/src/lib/graphics/importer/texture.h	(revision 9783)
+++ branches/new_class_id/src/lib/graphics/importer/texture.h	(revision 9784)
@@ -30,4 +30,6 @@
   Texture& operator=(const Texture& texture);
   Texture& operator=(const TextureData::Pointer& textureDataPointer);
+  void acquireData(const TextureData::Pointer& textureDataPointer) { this->data = textureDataPointer; };
+  const TextureData::Pointer& dataPointer() const { return data; }
 
   virtual ~Texture();
Index: branches/new_class_id/src/lib/util/loading/resource.cc
===================================================================
--- branches/new_class_id/src/lib/util/loading/resource.cc	(revision 9783)
+++ branches/new_class_id/src/lib/util/loading/resource.cc	(revision 9784)
@@ -24,5 +24,6 @@
  * standard constructor
 */
-Resource::Resource (const std::string& fileName)
+Resource::Resource ()
+    : _pointer(NULL)
 {
   this->registerObject(this, Resource::_objectList);
@@ -40,4 +41,20 @@
 
 
+Resource::Pointer* Resource::acquireResource(Resource::Type& resourceType, const std::string& loadString)
+{
+  if(resourceType.id() == -1)
+  {
+    Resource::_resourceTypes.push_back(&resourceType);
+    resourceType.setID(Resource::_resourceTypes.size());
+  }
+  const Resource::Type* const type = Resource::_resourceTypes[resourceType.id()];
+
+  for (unsigned int i = 0; i < type->storedResources().size(); ++i)
+    if (type->storedResources()[i]->_pointer->loadString() == loadString)
+      return type->storedResources()[i]->_pointer;
+
+  return NULL;
+}
+
 
 
Index: branches/new_class_id/src/lib/util/loading/resource.h
===================================================================
--- branches/new_class_id/src/lib/util/loading/resource.h	(revision 9783)
+++ branches/new_class_id/src/lib/util/loading/resource.h	(revision 9784)
@@ -37,8 +37,13 @@
     void addExtension(const std::string& extension);
 
+    void addResourcePath(const std::string& path);
+    void addResourceSubPath(const std::string& subPath);
+
+    /// Retrieve Functions
     const ClassID& storedClassID() const { return _classID; };
     int id() const { return _id; };
     const std::vector<std::string>& resourcePaths() const { return _resourcePaths; };
-
+    const std::vector<std::string>& resourceSubPaths() const { return _resourceSubPaths; };
+    const std::vector<Resource*>& storedResources() const { return _storedResources; };
 
     void setID(int id);
@@ -50,27 +55,36 @@
     std::vector<std::string>      _resourceSubPaths;
     std::vector<std::string>      _fileExtensions;
+
+    std::vector<Resource*>        _storedResources;
   };
 
-  class Pointer {};
+  class Pointer
+  {
+  public:
+    Pointer(const std::string& loadString, const Resource::KeepLevel& keeplevel);
+    const std::string& loadString() const { return _loadString; };
+    const Resource::KeepLevel& keepLevel() const { return _keepLevel; };
+
+  private:
+    std::string              _loadString;             //!< An identifier, to match when loading a File.
+    Resource::KeepLevel      _keepLevel;              //!< The Priority of this resource. (can only be increased, so none else will delete this)
+  };
 
 
 public:
-  Resource(const std::string& fileName);
+  Resource();
   virtual ~Resource();
 
-  bool loadResource(std::string& fileName, Resource::Pointer* ptr);
   virtual bool reload();
   virtual bool unload();
 
+protected:
+  Resource::Pointer* acquireResource(Resource::Type& resourceType, const std::string& loadString);
+
+private:
+  Resource::Pointer*       _pointer;                //!< Virtual Pointer to the ResourceData.
 
 
-private:
-  std::string              _loadString;             //!< An identifier, to match when loading a File.
-  std::string              _fileName;
-  MultiType                _parameters[3];          //!< The Parameters given to this Resource.
-  Resource::KeepLevel      _keepLevel;              //!< The Priority of this resource. (can only be increased, so noone else will delete this)
-
-
-  static std::vector<Resource::Type>     _resourceTypes;
+  static std::vector<Resource::Type*>    _resourceTypes;
 
   //! GLOBALS
