Massive overhaul of GCObject now using SharedPtr