Using Specifications to Build Domain-Independent Collaborative Design Environments