Heavy refactoring of GameObject

Its a little broken but will be much better once its fixed