The aim is to better understand the relationships between choice and concurrency that lead to the good behaviour of distributed systems. In order to do so, we formulate a model based on Petri nets and develop its theory. The model is called bipolar synchronisation schemes (bp schemes) and the theory we construct is mainly devoted to synthesizing, in a systematic fashion, all well behaved bp schemes. We also provide a computational interpretation of well behaved bp schemes. Through this interpretation the insights gained by developing the theory of bp schemes can be transferred to concurrent programs.