I've seen many a time in source code, things like this [well, this is more of a pseudo C++ idea of mine] typedef shared_ptr<Resource> ResourcePtr;// for ease ResourcePtr sound1 = resourceManager.Get<SoundResource>("boom.ogg"); sound1->Play(); ResourcePtr sprite = resourceManager.Get<Image>("sprite.png"); I was just wondering how useful a class like this was, something that: - Loaded media files - Stored them in memory - Did this at the start of a level - loading screen. - Cleaned up Rather than having a system of: - Resources are held by entities only, or loose. - Responsible for own load into memory. The first is a 'manager' as such; something I feel indicates it's wrong to use. However, it allows for something like a vector of resource names to be passed, rather than having to scramble around finding everything that needs to be loaded.