collaboration, or negotiation in order to create ?exible and fault-tolerant distributed systems for dynamic and uncertain environments.