changes to support ice change of substrate class, creating ImageSubstrate and VideoSubstrate subclasses