anchor.diff:  open Suave.Sockets
   open Suave.Sockets.Control
   open Suave.WebSocket
  +open System.Collections.Generic
   
   // initialize akka
   let private config = @"
  
positive.code:         //printf "%A" msg
          match msg with
          | Create -> 
            let webServerRef = webServerActor events publishedEvent
            return! loop ([ 1..swarmSize ] |> List.map (fun i -> 
                                                let name = swarmName + "-drone-" + (string i)
                                                //let droneBrains = fun () -> augmentBrain name func mailbox.Self
  
negative.code:                                             Directive.Stop)) ]
    do coordinatorRef <! Create
    ()
  
  let brains = ref Map.empty
  
  let hiveRef = 
    spawnOpt system ("Hive") <| (fun mailbox -> 
  
    let rec loop state = 
      actor { 
        let! msg = mailbox.Receive()
        match msg with
        | CreateSwarm m -> createSwarm m.Name m.Size (!brains).[m.Name] mailbox
        return! loop state
      }
    loop [])
    <| [ SpawnOption.SupervisorStrategy(Strategy.OneForOne(fun e -> 
                                          match e with
                                          | _ -> Directive.Stop)) ]
  
  let newSwarm swarmName swarmSize (func:unit->Async<unit>) = 
    let x = 
      CreateSwarm { Name = swarmName
                    Size = swarmSize}
  
    brains := (!brains).Add(swarmName, func)
  
    hiveRef <! x
  