#206 extract abstract class of daos