NEBLO is a library and runtime system based on a structured overlay network. The API presented by NEBLO offers simple primitives and powerful mechanisms for programming generic peer-to-peer applications, in a way that is independent from the underlying overlay. The primitives allow the peers to exchange messages with one another in two different patterns, namely, unidirectional and request-response; the latter takes place in a split-phase non-blocking way, so that the application can be made latency-tolerant and thus more performing. The semantics of messages is not defined by NEBLO itself. Rather, a mechanism is offered to the application programmer so as to allow him to write and set up application-level handlers, which are to run upon message arrivals at each peer. The overall behaviour of the application is thus shaped by the handlers, as they define the actions to be carried out when a message arrives to its recipient or passes through an intermediate peer. The API also allo...