gameobject refactor