A computer-implemented method of using a configuration specification for configuring a cloud-based deployment, the configuration specification written in a high-level object-oriented specification language and requiring instantiation of respective class definitions of one or more classes, the configuration specification specifying components of a cloud-based deployment, including infrastructures, storage devices, services, and software package to be installed, as instances of one or more reusable and modifiable classes, where each class models a respective data or functional component of the cloud-based deployment using a group of configurable class parameters, wherein an instance of each reusable and modifiable class declares the desired state of the component that is modelled by the class, the method comprising: receiving the configuration specification; deriving a plurality of application programming interface calls for configuring the cloud-based deployment based on the class definitions of the one or more classes; storing respective class definitions of a plurality of core classes of the specification language, each core class corresponding to a modular component of a cloud-based environment, each core class being extendable with additional class parameters to configure the respective modular component; storing a mapping between each of the core classes and a respective group of API calls, the respective group of API calls for configuring the modular component associated with the core class according to the class parameters of the core class; wherein the one or more classes include at least an existing core class and at least a customized class derived from the existing core class, the customized class inherits respective class parameters of the existing core class, and the customized class modifies a value of at least one of the class parameters inherited from the existing core class, and storing a plurality of protocols for modifying the respective groups of API calls associated with each core class by changing default parameters used in the API calls to obtain a new group of API calls for a customized class definition derived from the core class, causing the plurality of API calls including said new group of API calls obtained by changing default parameters to be executed to configure the cloud-based deployment. receiving the configuration specification; deriving a plurality of application programming interface calls for configuring the cloud-based deployment based on the class definitions of the one or more classes; storing respective class definitions of a plurality of core classes of the specification language, each core class corresponding to a modular component of a cloud-based environment, each core class being extendable with additional class parameters to configure the respective modular component; storing a mapping between each of the core classes and a respective group of API calls, the respective group of API calls for configuring the modular component associated with the core class according to the class parameters of the core class; wherein the one or more classes include at least an existing core class and at least a customized class derived from the existing core class, the customized class inherits respective class parameters of the existing core class, and the customized class modifies a value of at least one of the class parameters inherited from the existing core class, and storing a plurality of protocols for modifying the respective groups of API calls associated with each core class by changing default parameters used in the API calls to obtain a new group of API calls for a customized class definition derived from the core class, causing the plurality of API calls including said new group of API calls obtained by changing default parameters to be executed to configure the cloud-based deployment.