/// <inheritdoc />
 public override void Initialize(ProgramFeatures features)
 {
     base.Initialize(features);
     _keyboardComponent = KeyboardComponentOptions.FirstOrDefault(e => (e != null) && (e.Flags == ((uint)features.KeyboardComponent & FeatureCompatibilityHelpers.CompatibilityMask)));
     _usesMicrophone    = features.KeyboardComponent.HasFlag(KeyboardComponentFeatures.Microphone);
     _usesPrinter       = features.KeyboardComponent.HasFlag(KeyboardComponentFeatures.Printer);
     _usesCassette      = features.KeyboardComponent.HasFlag(KeyboardComponentFeatures.TapeOptional) || features.KeyboardComponent.HasFlag(KeyboardComponentFeatures.TapeRequired);
     _cassette          = CassetteOptions.FirstOrDefault(s => s.Flags == (uint)(features.KeyboardComponent & KeyboardComponentFeaturesHelpers.TapeMask));
     _basic             = BasicOptions.FirstOrDefault(s => s.Flags == (uint)(features.KeyboardComponent & KeyboardComponentFeaturesHelpers.BasicMask));
     RaiseAllPropertiesChanged();
     UpdateCompatibility((KeyboardComponentFeatures)_keyboardComponent.Flags);
 }