implemented a new more generalized gameobject system