going to copy the API from Ogre