  Modern distributed systems employ atomic read-modify-write primitives to
coordinate concurrent operations. Such primitives are typically built on top of
a central server, or rely on an agreement protocol. Both approaches provide a
universal construction, that is, a general mechanism to construct atomic and
responsive objects. These two techniques are however known to be inherently
costly. As a consequence, they may result in bottlenecks in applications using
them for coordination. In this paper, we investigate another direction to
implement a universal construction. Our idea is to delegate the implementation
of the universal construction to the clients, and solely implement a
distributed shared atomic memory at the servers side. The construction we
propose is obstruction-free. It can be implemented in a purely asynchronous
manner, and it does not assume the knowledge of the participants. It is built
on top of grafarius and racing objects, two novel shared abstractions that we
introduce in detail. To assess the benefits of our approach, we present a
prototype implementation on top of the Cassandra data store, and compare it
empirically to the Zookeeper coordination service.
