anchor.diff:      | None ->
           start_listening node
       | Some(peer) ->
  -        match send_message peer guid Join address with
  +        match send_message peer Join address guid with
           | None ->
  -            failwith (sprintf "Could not establish a connection with peer at '%s'" peer)
  +            error <| sprintf "Could not establish a connection with peer at '%s'" peer
           | Some(_) ->
               start_listening node
   
  
positive.code:     let bytes: byte[] = (content |> HashAlgorithm.Create("SHA1").ComputeHash).[..15] // 16 first bytes
      let a = to_u64 bytes.[..7]
      let b = to_u64 bytes.[8..15]
      (a, b)
  
  // Just a little formatting
  let error str =
      printfn "ERROR: %s" str
  
  // Makes the given pastry node start listening...
  let start_listening (node: Node) =
      printfn "Initializing..."
      use listener = new System.Net.HttpListener ()
      listener.Prefixes.Add "http://localhost:8080/"
      listener.Start ()
  
      printfn "Listening..."
  
      let rec listen (node: Node) =
          // Listen for a a message
  
negative.code: 
  // ====================================================
  
  // UPDATE: send_messsage and start_listening.listen
  type MessageType =
  | Join      // A new node is joining and requesting states
  | Update    // A new node has been added sucessfully: update to include it
  | JoinState // The state data for a new node
  | Route     // Send a message somewhere
  // Add more persistency commands here
  
  // The state record of a Pastry node
  type Node = {
      guid: GUID;
      address: NetworkLocation;
      // I assume that there are never more than 65k rows in the table
      routing_table: Map<GUID, Address> list;
  