1. A method comprising: generating a first application by providing a definition of an object representing a first set of attributes of a first collection of data elements and a first set of operations on the first collection, each data element in the first collection having the attributes and a list of the operations in common with other data elements from the first collection; extending the definition of the object with a second definition, the second definition comprising a second set of attributes of the data elements or a list of second set of operations on the data elements; receiving from the client a request to execute an operation from the first set of operations or the second set of operations on one or more data elements from the first collection, the request having input parameters; checking the request against the definition and the second definition; executing, with a first set of parameters, the operation on the one or more data elements of the first collection, the operation resulting in output parameters; and sending a second set of parameters.