You might want to take a look at the chord based approach to concurrent programming in polyphonic C# I spent a while playing with it and found the code I wrote using it to be far more readable than any other system I have used. I think the syntax for chord definitions sucks, but I'm probably just being picky :) http://research.microsoft.com/~nick/polyphony/ Ian Cottrell