We start from a class of experiments that we want to define - e.g., DDoS experiments. The highest level is '''metadescription''' of that experiment class. It contains '''dimensions''' that are important to be defined for this class of experiments. Every metadescription has the following dimensions: * topology * invariants * workflow Some metadescriptions contain more like: * traffic * visualization * post-processing * routing changes * whatever else makes sense for that class of experiments Each dimension can be output from multiple '''model'''. A model can be as abstract as an equation, or it could be an output of a simulation, or a set of data points, or pretty much anything else. Each model can have '''constraints''' pretty much describing its inputs and outputs such as "this equation creates power-law topologies only when they contain more than 50 nodes". Each model has an '''input''' set of variables and an '''output''' one where the output is in some common format (or translatable into it) for that dimension.