AssetManager with a hashing function, a linked list structure to store the hashes as well as a reference counter to support multiple users sharing the same asset.
GameEngine API to allow for loading and removing assets as well as rendering textures using their AssetID
for the game loop