I don't have a lot of experience with virtual modules. I have only used them to make incoming signals that aren't associated with a module into a module. For example, early on I used a virtual module set as a sensor to accept RF commands from my X10 wireless motion sensors. Since a virtual module has a name, it can be used in C# code using that "WithName(..." nomenclature. I don't know if it works with Wizard scripts, but I would assume so since you can find any defined module in the selections. Also, I believe the Raspberry Pi GPIO code creates virtual modules for each GPIO defined. That is also available in C# for sure and presumably Wizard scripts as well.