add more general dao interface