anchor.diff:  /// This is vital for major upgrades, since windows installer needs a consistent component guid for tracking each of them.
   /// You can use the getComponentRefs function for getting all created component refs and adding them to features.
   /// You can use attachServiceControlToComponents or attachServiceInstallToComponents to attach ServiceControl or ServiceInstall to the directory component hierarchy
  -let rec bulkComponentTreeCreation fileFilter directoryFilter directoryInfo =
  +let rec bulkComponentTreeCreation fileFilter directoryFilter directoryInfo architecture =
       let directoryName = ""
       let directories = directoryInfo
                         |> subDirectories
                         |> Seq.filter directoryFilter
  -                      |> Seq.map (fun d -> bulkComponentTreeSubCreation fileFilter directoryFilter d directoryInfo.Name)
  -    let components = createComponents fileFilter directoryInfo directoryName
  +                      |> Seq.map (fun d -> bulkComponentTreeSubCreation fileFilter directoryFilter d directoryInfo.Name architecture)
  +    let components = createComponents fileFilter directoryInfo directoryName architecture
       Seq.append directories components  
  -and private bulkComponentTreeSubCreation fileFilter directoryFilter directoryInfo directoryName =    
  +and private bulkComponentTreeSubCreation fileFilter directoryFilter directoryInfo directoryName architecture =    
       let directories = directoryInfo
                         |> subDirectories
                         |> Seq.filter directoryFilter
  -                      |> Seq.map (fun d -> bulkComponentTreeSubCreation fileFilter directoryFilter d (directoryName + directoryInfo.Name))       
  -    let components = createComponents fileFilter directoryInfo directoryName
  +                      |> Seq.map (fun d -> bulkComponentTreeSubCreation fileFilter directoryFilter d (directoryName + directoryInfo.Name) architecture)       
  +    let components = createComponents fileFilter directoryInfo directoryName architecture
       let currentDirectory = D{
           Id = getDirectoryId (directoryInfo.Name + directoryName)
           Name = directoryInfo.Name
  
positive.code:     {
          Id = ""
          Guid = "*"
          Files = []
          ServiceControls = []
          ServiceInstalls = []
  
negative.code:         Id : string
          Guid : string
          Files : WiXFile seq
          Win64 : YesOrNo
          ServiceControls : WiXServiceControl seq
          ServiceInstalls : WiXServiceInstall seq
      }
      member w.ToComponentRef() = generateComponentRef (fun f -> { f with Id = w.Id })
      override w.ToString() = sprintf "<Component Id=\"%s\" Guid=\"%s\" Win64=\"%s\">%s%s%s</Component>" 
                                  w.Id w.Guid (w.Win64.ToString())
                                  (Seq.fold(fun acc elem -> acc + elem.ToString()) "" w.Files) 
                                  (Seq.fold(fun acc elem -> acc + elem.ToString()) "" w.ServiceControls)
                                  (Seq.fold(fun acc elem -> acc + elem.ToString()) "" w.ServiceInstalls)
  