added intrusive_ptr and modified BaseObject to inherit it