The first and the second author introduced reversible ccs (rccs) in order to model concurrent computations where certain actions are allowed to be reversed. Here we t the core of the construction can be analysed at an abstract level, yielding a theorem of pure category theory which underlies the previous results. This opens the way to several new examples; in particular we demonstrate an application to Petri nets.