core: refactor base object