anchor.diff:          return cont
       }
   
  -let addProject cont (results : ParseResults<AddProjectArgs>) = 
  +let addProject cont (results : ParseResults<AddProjectArgs>) =
       maybe {
           let! path = results.TryGetResult <@ AddProjectArgs.Name @>
           let! project = results.TryGetResult <@ AddProjectArgs.Project @>
           let name = Path.GetFileName path
  +        let newProject = Furnace.loadFsProject name
           Furnace.loadFsProject project
  -        |> Furnace.addProjectReference(path, Some name, None, None, None)
  +        |> Furnace.addProjectReference(path, Some name, None, newProject.ProjectData.Settings.ProjectGuid.Data, None)
           |> ignore
           return cont
       }
  
positive.code:         | ListCommands.GAC       -> execCommand (listGac cont) subArgs
          | ListCommands.ProjectReferences -> execCommand (listProjectReferences cont) subArgs
          | ListCommands.Templates -> listTemplates(); Some cont
          | ListCommands.Filter _ -> Some cont 
      | _ -> Some cont
  
  //-----------------------------------------------------------------
  
negative.code:         let! name = results.TryGetResult <@ MoveFileArgs.Name @>
          let up = results.TryGetResult <@ MoveFileArgs.Up @>
          let down = results.TryGetResult <@ MoveFileArgs.Down @>
          let project' =
              match proj with
              | Some p -> Some p
              | None -> Furnace.tryFindProject name
          match project' with
          | None -> traceWarning "Project not found"
          | Some project ->
              let activeState = Furnace.loadFsProject project
              let n =
                  if Path.IsPathRooted name then
                      relative name (activeState.ProjectPath + Path.DirectorySeparatorChar.ToString())
                  else
                      relative (Path.GetFullPath name) (activeState.ProjectPath + Path.DirectorySeparatorChar.ToString())
  
              match up, down with
  