base service func