anchor.diff:                  Interlocked.Decrement(progress.activeNodeCount) |> ignore
               else Log.line "could not remove calls"
   
  +        let removeFromWorkingSet n = 
  +            if node.Config.boundingBoxSurface.IsSome  then
  +                lock workingSet (fun () -> 
  +                    transact (fun () -> workingSet.Remove n |> ignore)
  +                )
  +
           member x.WorkingSet = 
  -            workingSets :> aset<_>
  +            workingSet :> aset<_>
   
           member x.Activate() =
                   
  
positive.code:         /// the time interval for the pruning process in ms
          pruneInterval : int
  
          /// optional surface for bounding boxes of cells that are not loaded yet
          /// shader vertex must have ZZZInstancedTrafo semantic
          boundingBoxSurface : Option<IMod<ISurface>>
      }
  
  [<AutoOpen>]
  
negative.code:                         for v in add do
                              let id = getId v
                              deltas.[id % queueCount].Add v
                              if content.Add v && node.Config.boundingBoxSurface.IsSome  then
                                  lock workingSet (fun () ->  
                                      if not <| workingSet.Contains v then
                                          transact (fun () -> CSet.add v workingSet |> ignore)
                                  )
  
                          for v in rem do
                              let id = getId v
                              deltas.[id % queueCount].Remove v
                              content.Remove v |> ignore
                              lock workingSet (fun () ->  
                                  if workingSet.Contains v then
                                      transact (fun () -> CSet.remove v workingSet |> ignore)
                              )
                  }
  
              let subV = view.AddMarkingCallback (fun () -> r.Put ()) 
  