The authors present a conceptual framework for the organization of services in distributed systems out of collections of participating servers. The approach is based on the notion of service layer inserted between the distributed operating system kernels and client-server objects. A service layer consists of disjoint sets of service agents. The authors demonstrate that this approach favors the development of transparent distributed services which hide the server structure from both clients and servers and encapsulate nonfunctional issues of a service such as load distribution or fault tolerance, within the cooperation protocol established between cooperating service agents. Thus the proposed scheme may be viewed as a generalized framework for modeling arbitrary distributed services, such as a distributed file service.