with refact DAO