interface separation: functional service + admin