anchor.diff:          else
               false
   
  +    // get the latest modification date for an entire folder
       let latestModificationDate (folder : string) =
           let file = DirectoryInfo(folder).GetFileSystemInfos("*", SearchOption.AllDirectories) |> Seq.maxBy (fun fi -> fi.LastWriteTime)
           file.LastWriteTime
   
  +    // install all packages from source-dependencies
       let installSources () =
           let sourceLines =
               if File.Exists sourcesFileName then 
  
positive.code:                 let path = Path.Combine(source, "bin", fileName)
                  let installPath = Path.Combine("packages", id)
  
                  deleteDir installPath
  
                  if installPackage path then
                      tracefn "reinstalled %A" id
                  else
                      traceError <| sprintf "failed to reinstall: %A" id
  
          File.WriteAllLines(cacheFile, !cacheTimes |> Map.toSeq |> Seq.map (fun (a, time) -> sprintf "%s;%d" a time.Ticks))
  
  
      let addSources folders = 
  
          let sourceFolders =
              if File.Exists sourcesFileName then 
                  File.ReadAllLines sourcesFileName |> Set.ofArray
              else 
                  Set.empty
  
          let newSourceFolders = Set.union (Set.ofList folders) sourceFolders
  
          File.WriteAllLines(sourcesFileName, newSourceFolders)
          paketDependencies.Restore()
          installSources()
  
      let removeSources folders =
          let sourceFolders =
              if File.Exists sourcesFileName then 
                  File.ReadAllLines sourcesFileName |> Set.ofArray
              else 
                  Set.empty
  
          let newSourceFolders = Set.difference sourceFolders (Set.ofList folders)
  
          if Set.isEmpty newSourceFolders then
              deleteFile sourcesFileName
          else
              File.WriteAllLines(sourcesFileName, newSourceFolders)
  
          for f in folders do
              match findCreatedPackages f with
                  | Some(version, ids) ->
  
                      for id in ids do
                          let path = Path.Combine("packages", id)
                          deleteDir path
  
                  | None ->
                      ()
  
          paketDependencies.Restore()
          installSources()
  
  
          
negative.code: [<AutoOpen>]
  module PathHelpers =
  
      let tryDeleteDir d =
          if Directory.Exists d then
              try 
                  Directory.Delete(d, true)
                  true
              with e -> 
                  traceError (sprintf "could not delete directory %A" d)
                  false
          else
              true
  
      let deleteDir d =
          if Directory.Exists d then
              try Directory.Delete(d, true)
  