added dboperation abstraction