Better inheritance structure for GameObject