An event-based model for contracts