OpService: split interface and implementation