refactoring around base_object class.