re-implement SmartRefTable