retypedef object to GcObject*, remove almost all unnecessary reinterpret_casts