GENESIS: a Flexible and Distributed Environment for Cooperative Software Engineering