Refactored virtual products to be more extensible