Re-implement the way textures are created, stored and handled