add abstract DAO