anchor.diff:                    
   
     let createPluginSteps (log:ConsoleLogger.ConsoleLogger) (solution:Entity) 
  -    m tc entitySet plugins (pluginType: Entity) = 
  +    client entitySet plugins (pluginType: Entity) = 
         entitySet |> Set.toArray
         |> Array.Parallel.map(fun (_,y) ->
   
  -        use p = ServiceProxy.getOrganizationServiceProxy m tc
  -
  -        //let (type',stage,action,entity),(deploy,mode,_,order,fAttributes),_ = 
  +        use p = ServiceProxy.getOrganizationServiceProxy client.IServiceM client.authCred
  +
           let step = 
             plugins
             |> Seq.filter(fun pl -> y = messageName pl.step)
  
positive.code:         failwith x
        | Validation.Valid _ -> 
          log.WriteLine(LogLevel.Verbose, "Validation completed")
          (asm, asmId, dllName, dllPath, hash, solution, m, tc, log, sourcePlugins)
          |> syncPlugins 
  
negative.code: 
      let obsoleteStep = targetStep' - sourceStep
      log.WriteLine(LogLevel.Info, "Deleting steps")
      deleteSteps log client (obsoleteStep, targetSteps)
      
      solution, client, log, sourcePlugins
        
    let deletePluginTypes (solution, client, (log:ConsoleLogger.ConsoleLogger), sourcePlugins) = 
      log.WriteLine(LogLevel.Info, "Deleting types")
  
      use p = ServiceProxy.getOrganizationServiceProxy client.IServiceM client.authCred
      
      log.WriteLine(LogLevel.Debug, "Retrieving types")
      let types = CrmData.Entities.retrievePluginTypes p solution.assemblyId
      log.WriteLine(LogLevel.Debug, 
        sprintf "Retrieved %d types" (Seq.length types))
  
  