anchor.diff:          member __.Dispose() = clients.TryRemove runtime.Id |> ignore
           
            
  -and internal CloudProcessReporter() = 
  -    static let template : Field<CloudProcess> list = 
  -        [ Field.create "Name" Left (fun p -> match p.Name with Some n -> n | None -> "")
  +and private CloudProcessReporter private () = 
  +    static let template : Field<CloudProcessData> list = 
  +        [ Field.create "Name" Left (fun p -> match p.Info.Name with Some n -> n | None -> "")
             Field.create "Process Id" Right (fun p -> p.Id)
  -          Field.create "Status" Right (fun p -> sprintf "%A" p.Status)
  +          Field.create "Status" Right (fun p -> sprintf "%A" p.State.Status)
             Field.create "Execution Time" Left (fun p -> Option.toNullable p.ExecutionTime)
  -          Field.create "Work items" Center (fun p -> sprintf "%3d / %3d / %3d / %3d"  p.ActiveWorkItems p.FaultedWorkItems p.CompletedWorkItems p.TotalWorkItems)
  -          Field.create "Result Type" Left (fun p -> Type.prettyPrintUntyped p.Type) 
  +          Field.create "Work items" Center (fun p -> sprintf "%3d / %3d / %3d / %3d"  p.State.ActiveWorkItemCount p.State.FaultedWorkItemCount p.State.CompletedWorkItemCount p.State.TotalWorkItemCount)
  +          Field.create "Result Type" Left (fun p -> p.Info.ReturnTypeName) 
             Field.create "Start Time" Left (fun p -> p.StartTime |> Option.map (fun d -> d.LocalDateTime) |> Option.toNullable)
             Field.create "Completion Time" Left (fun p -> p.CompletionTime |> Option.map (fun d -> d.LocalDateTime) |> Option.toNullable)
           ]
       
  -    static member Report(processes : seq<CloudProcess>, title : string, borders : bool) = 
  +    static member Report(processes : seq<CloudProcessData>, title : string, borders : bool) = 
           let ps = processes 
                    |> Seq.sortBy (fun p -> p.StartTime)
                    |> Seq.toList
  
positive.code:         member x.TryGetResultBoxed(): Async<obj option> = x.TryGetResultBoxed()
  
      /// Gets a printed report on the current process status
      member p.GetInfo() : string = CloudProcessReporter.Report([|p|], "Process", false)
  
      /// Prints a report on the current process status to stdout
      member p.ShowInfo () : unit = Console.WriteLine(p.GetInfo())
  
negative.code: open MBrace.Core.Internals
  open MBrace.Runtime.Utils
  open MBrace.Runtime.Utils.PrettyPrinters
  
  [<NoEquality; NoComparison>]
  type private CloudProcessData =
      {
          Id : string
          Info : CloudProcessInfo
          State : CloudProcessState
          StartTime : DateTimeOffset option
          ExecutionTime : TimeSpan option
          CompletionTime : DateTimeOffset option
      }
  with
      static member OfCloudProcessEntry(entry : ICloudProcessEntry) = async {
          let! state = entry.GetState()
          return {
              Id = entry.Id
              Info = entry.Info
              State = state
              StartTime =
                  match state.ExecutionTime with
                  | NotStarted -> None
                  | Started(st,_) -> Some (st.ToLocalTime())
                  | Finished(st,_) -> Some (st.ToLocalTime())
  
              ExecutionTime =
                  match state.ExecutionTime with
                  | NotStarted -> None
                  | Started(_,et) -> Some et
                  | Finished(_,et) -> Some et
  
              CompletionTime =
                  match state.ExecutionTime with
                  | Finished(st,et) -> Some (st.ToLocalTime() + et)
                  | _ -> None
          }
      }
  
  /// Represents a cloud computation that is being executed in the cluster.
  [<AbstractClass>]
  