baseobject refactor