anchor.diff:      let args' = args |> String.concat " "
       run (fakeToolLocation </> "FAKE.exe") args' directory
   
  -
   let Help () =
       printfn"Fix (Mix for F#)\n\
               Available Commands:\n\n\
  -            new [projectName]   - Creates a new project with the given name\n\
  +            new [projectName] [projectDir] [templateName] - Creates a new project\
  +          \n                      with the given name, in given directory\
  +          \n                      (relative to working directory) and given template.\
  +          \n                      If parameters are not provided, program prompts user for them\n\
               file add [fileName] - Adds a file to the current folder and project.\
             \n                      If more than one project is in the current\
             \n                      directory you will be prompted which to use.\n\
  
positive.code: open System.Net
  
  let exeLocation = System.Reflection.Assembly.GetEntryAssembly().Location |> Path.GetDirectoryName
  let directory = System.Environment.CurrentDirectory
  
  let paketLocation = exeLocation </> "Tools" </> "Paket"
  let fakeLocation = exeLocation </> "Tools" </> "FAKE"
  let fakeToolLocation = fakeLocation </> "tools"
  
  let RefreshTemplates () =
      printfn "Getting templates..."
  
negative.code:     files |> Seq.iter (fun x -> File.Move(x, x.Replace(applicationName, projectName)))
  
  let sed (find:string) replace folder =
      folder
      |> Directory.GetFiles
      |> Seq.iter (fun x ->
                      let contents = File.ReadAllText(x).Replace(find, replace)
                      File.WriteAllText(x, contents))
  
  let promptProjectName () =
      printfn "Give project name:"
      Console.Write("> ")
      Console.ReadLine()
  
  let promptProjectDir () =
      printfn "Give project directory (relative to working directory):"
      Console.Write("> ")
      Console.ReadLine()
  
  let promptList () =
      printfn "Choose a template:"
      let templates = Directory.GetDirectories(templatesLocation)
                      |> Seq.map Path.GetFileName
                      |> Seq.where (fun x -> not <| x.StartsWith("."))
      templates |> Seq.iter (fun x -> printfn " - %s" x)
      printfn ""
      Console.Write("> ")
      Console.ReadLine()
  
  let New projectName projectDir templateName =
      if not ^ Directory.Exists templatesLocation then RefreshTemplates ()
  
      let projectName' = if String.IsNullOrWhiteSpace projectName then promptProjectName () else projectName
      let projectDir' = if String.IsNullOrWhiteSpace projectDir then promptProjectDir () else projectDir
      let templateName' = if String.IsNullOrWhiteSpace templateName then promptList () else templateName
      let projectFolder = directory </> projectDir' </> projectName'
      let templateDir = templatesLocation </> templateName'
  
      printfn "Generating project..."
  
      Fake.FileHelper.CopyDir projectFolder templateDir (fun _ -> true)
      applicationNameToProjectName projectFolder projectName
      sed "<%= namespace %>" projectName projectFolder
      sed "<%= guid %>" (Guid.NewGuid().ToString()) projectFolder
  
      printfn "Done!"
  
  let alterProject project (f : ProjectFile -> ProjectFile) =
  