anchor.diff:          | false ->
             let psi = updateImage y.Id updates
             CrmData.CRUD.update p psi |> ignore
  -          Some y)
  -
  -      |> Array.choose(id)
  -      |> Array.iter(
  -        fun x -> 
  -          log.WriteLine(LogLevel.Verbose,
  -            sprintf "%s: (%O) was updated" x.LogicalName x.Id)) 
  +          Some y) )
  +
  +    |> Array.choose(id)
  +    |> Array.iter(
  +      fun x -> 
  +        log.WriteLine(LogLevel.Verbose,
  +          sprintf "%s: (%O) was updated" x.LogicalName x.Id)) 
   
     // Delete plugin functions
     let deleteTypes (log:ConsoleLogger.ConsoleLogger) client entitySet = 
       entitySet ||> subset
       |> Seq.toArray
       |> Array.Parallel.map(fun x ->
  -      use p = ServiceProxy.getOrganizationServiceProxy client.IServiceM client.authCred
  -      x, CrmData.CRUD.delete p x.LogicalName x.Id)
  +      proxyContext client (fun p -> 
  +        x, CrmData.CRUD.delete p x.LogicalName x.Id) )
       |> Array.iter(
         fun (x,_) -> 
           log.WriteLine(LogLevel.Verbose,
  
positive.code:   let deletePluginImages (solution, client, (log:ConsoleLogger.ConsoleLogger), sourcePlugins) = 
      log.WriteLine(LogLevel.Info, "Retrieving Steps")
  
      use p = ServiceProxy.getOrganizationServiceProxy client.IServiceM client.authCred
      let steps = CrmData.Entities.retrieveAllPluginProcessingSteps p solution.entity.Id
      log.WriteLine(LogLevel.Debug, 
        sprintf "Found %d steps" (Seq.length steps))
  
      //Delete images
      log.WriteLine(LogLevel.Info, "Deleting images")
      steps
      |> Seq.toArray
      |> Array.Parallel.iter(fun step ->
  
        use p' = ServiceProxy.getOrganizationServiceProxy client.IServiceM client.authCred
  
        log.WriteLine(LogLevel.Debug, 
          sprintf "Retrieving images for step: %s" (getName step))
        let images =
            CrmData.Entities.retrievePluginProcessingStepImages 
                p' step.Id
        log.WriteLine(LogLevel.Debug, 
          sprintf "Found %d images" (Seq.length images))
                      
        let sourceImage =
          sourcePlugins
          |> Seq.map(fun pl -> pl.images)
          |> Seq.fold(fun acc i' -> 
            i' 
            |> Seq.map(fun i -> i.name) 
            |> Seq.append acc
          ) Seq.empty
          |> Set.ofSeq
  
        let targetImage = 
            images
            |> Seq.map(fun y ->
              let name  = getName y
              name)
            |> Set.ofSeq
  
        let obsoleteImage = targetImage - sourceImage
  
        deleteImages log client (obsoleteImage,images))
      
      solution, client, log, sourcePlugins, steps
  
    let deletePluginSteps (solution, client, (log:ConsoleLogger.ConsoleLogger), sourcePlugins, steps) = 
      //Delete Steps
  
negative.code:     entitySet ||> subset'
      |> Seq.toArray
      |> Array.Parallel.map(fun (_,y) -> 
        proxyContext client (fun p -> 
          y, CrmData.CRUD.delete p y.LogicalName y.Id) )
      |> Array.iter(
        fun (x,_) -> 
        log.WriteLine(LogLevel.Verbose,
  