This document describes a class of C functions implementing a distributed software voting mechanism for EPX or similar message passing multi-threaded environments. Such a tool may be used for example, to set up a restoring organ, i.e., an NMR (i.e., N-module redundant) system with N voters. In order to describe the tool we start defining its basic building block, the voter. A voter is defined as a software module connected to one user module and to a farm of fellow voters arranged into a clique. By means of the functions in the class the user module is able: to create a static "picture" of the voting farm, needed for the set up of the clique; to instantiate the local voter; to send input or control messages to that voter. No interlocutor is needed other than the local voter. The other user modules are supposed to create coherent pictures and instances of voters on other nodes of the machine and to manage consistently the task of their local intermediary. All technicalities concerning the set up of the clique and the exchange of messages between the voters are completely transparent to the user module. In the following the basic functionalities of the VotingFarm class will be discussed, namely how to set up a "passive farm", or a non-alive topological representation of a yet-to-be-activated voting farm; how to initiate the voting farm; how to control the farm.