anchor.diff:  
       let urlForPackage mbraceNugetVersionTag vmSize = 
           sprintf "https://github.com/mbraceproject/MBrace.Azure/releases/download/%s/MBrace.Azure.CloudService-%s.cspkg" mbraceNugetVersionTag vmSize
  -        //sprintf "https://github.com/mbraceproject/bits/raw/master/%s/MBrace.Azure.CloudService-%s.cspkg" mbraceVersion vmSize
   
       let resourcePrefix = "mbrace"
       let generateResourceName() = resourcePrefix + Guid.NewGuid().ToString("N").[..7]
  +    let defaultMBraceVersion = System.AssemblyVersionInformation.ReleaseTag
       let defaultExtendedProperties = dict [ "IsMBraceAsset", "true"]
       let isMBraceAsset (extendedProperties:IDictionary<string, string>) = extendedProperties.ContainsKey "IsMBraceAsset"
   
  
positive.code:                 packageBlob.Properties.Length <> FileInfo(packagePath).Length
  
              if (not (packageBlob.Exists()) || blobSizesDoNotMatch()) then
                  logger.Logf LogLevel.Info "uploading package %s" packagePath
                  packageBlob.UploadFromFile(packagePath, FileMode.Open)
          
              logger.Logf LogLevel.Info "scheduling cluster creation:\n  cluster %s\n  package uri %s\n  config %s" clusterName (packageBlob.Uri.ToString()) config
              let! (createOp : AzureOperationResponse) =
                  client.Compute.Deployments.BeginCreatingAsync(
                      clusterName,
                      DeploymentSlot.Production,
                      DeploymentCreateParameters(
                          Label = clusterLabel,
                          Name = clusterName,
                          PackageUri = packageBlob.Uri,
                          Configuration = config,
                          StartDeployment = Nullable true,
                          TreatWarningsAsError = Nullable true))
  
              if createOp.StatusCode <> Net.HttpStatusCode.Accepted then 
                  return failwith "error: HTTP request for creation operation was not accepted"
            }
  
          let deleteMBraceCluster (logger : ISystemLogger) clusterName (client:SubscriptionClient) = async {
              let service = client.Compute.HostedServices.GetDetailed clusterName
              if service.Properties.ExtendedProperties |> isMBraceAsset then
                  logger.Logf LogLevel.Info "deleting cluster %s" clusterName
  
negative.code:         }
  
          let! storageConnectionString = Storage.getMBraceStorageConnectionString storageAccountName client
          logger.Logf LogLevel.Info "using storage account name %A" storageAccountName
          let! serviceBusNamespace, serviceBusConnectionString = ServiceBus.getDefaultMBraceNamespace logger region client
          logger.Logf LogLevel.Info "using service bus account %A" serviceBusNamespace
  
          let numInstances = defaultArg VMCount 2
          let config = Clusters.buildMBraceConfig clusterName numInstances storageConnectionString serviceBusConnectionString
  
          let clusterLabel = defaultArg ClusterLabel (sprintf "MBrace cluster %A, package %s"  clusterName (defaultArg versionInfo "custom"))
          let! deployInfo = Clusters.prepareMBraceServiceDeployment logger clusterName clusterLabel region packagePath config storageAccountName storageConnectionString serviceBusNamespace serviceBusConnectionString client
          do! Clusters.beginDeploy DeploymentSlot.Production deployInfo client
          let config = Configuration(storageConnectionString, serviceBusConnectionString)
  
          return config
  