A computer implemented method for handling data stored on a plurality of different storage devices using a common storage object model, the method comprising: providing a common storage object model having a hierarchy of classes of storage entities, wherein each storage entity is represented as a class with attributes and methods, the hierarchy of classes including a meta-class having a method for data collection defined as a virtual function, and a subclass having a method implementing the virtual method for raw data collection from the storage entity; providing a plurality of plugin modules operable to discover and populate the common storage object model; and providing a plugin wrapper operable to handle selecting and loading of a plugin module, the plugin wrapper providing a single library interface for all the plugin modules as an exported set of functions of the plugin modules, wherein a function call is handled by the plugin wrapper by determining, in response to a function call identifying a specific one of the plurality of storage devices, that a wrapper object for the specific one of the plurality of storage devices is not included in the common object model, creating a wrapper object in the common object model for the specific one of the plurality of storage devices that is not included in the common object model; selecting a plugin module in response to the function call identifying the specific one of the plurality of storage devices associated with the wrapper object and the plugin module, and loading the plugin module and calling a matching function in the plugin module. providing a common storage object model having a hierarchy of classes of storage entities, wherein each storage entity is represented as a class with attributes and methods, the hierarchy of classes including a meta-class having a method for data collection defined as a virtual function, and a subclass having a method implementing the virtual method for raw data collection from the storage entity; providing a plurality of plugin modules operable to discover and populate the common storage object model; and providing a plugin wrapper operable to handle selecting and loading of a plugin module, the plugin wrapper providing a single library interface for all the plugin modules as an exported set of functions of the plugin modules, wherein a function call is handled by the plugin wrapper by determining, in response to a function call identifying a specific one of the plurality of storage devices, that a wrapper object for the specific one of the plurality of storage devices is not included in the common object model, creating a wrapper object in the common object model for the specific one of the plurality of storage devices that is not included in the common object model; selecting a plugin module in response to the function call identifying the specific one of the plurality of storage devices associated with the wrapper object and the plugin module, and loading the plugin module and calling a matching function in the plugin module. determining, in response to a function call identifying a specific one of the plurality of storage devices, that a wrapper object for the specific one of the plurality of storage devices is not included in the common object model, creating a wrapper object in the common object model for the specific one of the plurality of storage devices that is not included in the common object model; selecting a plugin module in response to the function call identifying the specific one of the plurality of storage devices associated with the wrapper object and the plugin module, and loading the plugin module and calling a matching function in the plugin module.