refactor DataAccess into an interface