Refactor DAO so we can have generic data providers