refactor dao.