1. A method for generating a configurator comprising: creating a customizable product, the customizable product including a set of one or more attributes to define the customizable product. assigning the customizable product to a customizable product class, the customizable product class is a parent class of a hierarchy defining the configurator; adding a component product class to the customizable product class, the component product class is a subclass of the customizable product; adding a customizable class rule to the customizable product class, the customizable class rule including expressions which provide conditions on component products added to the customizable product; and mapping a customizable UI to the customizable product class, the customizable UI to provide access structure to the configurator.