the base data access object and tests