anchor.diff:                  let newLbl = ms.lbProfiles.Items.Add({ EmptyProfile with DisplayName = pendingProfileName}) 
                   ms.lbProfiles.SelectedIndex <- newLbl
                   ms.profTBExePath.Text <- ""
  -                ms.probTBModsPath.Text <- "" //TODO build from global default and exe path
  -        )
  +                ms.probTBModsPath.Text <- "") //TODO build from global default and exe path
   
           ms.profBtnExeBrowse.Click.Add(fun (evArgs) ->
               let checkForExistingProfile exePath = RegConfig.findProfile exePath
               let createProfile exePath = RegConfig.saveProfile({CoreTypes.DefaultRunConfig with ExePath = exePath})
   
  -            if isProfileSelected() then
  -                let oldLabel = profileLabelFromPath(ms.profTBExePath.Text)
  +            match getSelectedProfile() with
  +            | :? UIProfile as uiProfile -> 
  +                // TODO: bah, naming here sucks - need better distinction between the registy profile
  +                // and the ui profile stored in the list box.
                   let oldPathValid = File.Exists(ms.profTBExePath.Text)
   
                   let resExe = selectExecutableDialog(ms)
  
positive.code:         | "" -> pendingProfileName
          | p -> Path.GetFileNameWithoutExtension(p)
          
      let findLbProfile displayName = 
          // not using IndexOf from the collection here because we don't want an equality check on the full 
          // profile object.  Just want display name.
          let idx = 
              state.Value.MainScreenForm.lbProfiles.Items 
              |> Seq.cast<UIProfile>
              |> Seq.findIndex (fun p -> p.DisplayName = displayName)
          idx
  
      let updateLabel (oldLabel,exePath) = 
              let idx = findLbProfile oldLabel
              let uiProfile = state.Value.MainScreenForm.lbProfiles.Items.[idx] :?> UIProfile
              let newLabel = profileLabelFromPath(exePath)
  
              state.Value.MainScreenForm.lbProfiles.Items.[idx] <- { uiProfile with DisplayName = newLabel }
  
      let isProfileSelected() = state.Value.MainScreenForm.lbProfiles.SelectedItem <> null
  
      let initMainScreen() =
          let ms = new WizUI.MainScreen()
  
negative.code:     CreateModForm:  WizUI.MakeModForm option
  }
  
  type UIProfile =
      { 
          DisplayName: string
          RegProfileName: string 
          RunConfig: CoreTypes.RunConfig
      }
      override x.ToString() = x.DisplayName
  
  