移除了大部分的依赖，重新设计的数据访问接口