enhance DataAccessor: all data access needs to go through DataAccessor