anchor.diff:  
           printfn "Neighbors of %A: %A" node.guid neighbors
           printfn "Leaves    of %A: %A" node.guid leaves
  -        { node with
  -            neighbors = neighbors;
  -            leaves = leaves;
  -            minleaf = minleaf;
  -            maxleaf = maxleaf;
  -        }
  +        let updated_node =
  +            { node with
  +                neighbors = neighbors;
  +                leaves = leaves;
  +                minleaf = minleaf;
  +                maxleaf = maxleaf;
  +            }
  +        let notify guid address =
  +            match send_message address Update (serialize updated_node) guid with
  +            | Some(_) -> ()
  +            | None -> printfn "PASTRY: Failed to notify %A at '%s' of update..." guid address
  +        Map.iter notify updated_node.leaves
  +        Map.iter notify updated_node.neighbors
  +        List.iter (fun map_level -> Map.iter notify map_level) updated_node.routing_table
  +        printfn "PASTRY: State after joining: %A" updated_node
  +        updated_node
  +
  +    | Update -> // The node is notified of a new node joining
  +        let state = deserialize message
  +        let updated_node = try_add_neighbor (try_add_leaf node state.guid state.address) state.guid state.address
  +        printfn "PASTRY: State after update: %A" updated_node
  +        updated_node
       | _ ->
           node
   
  
positive.code: open System
  open System.Security.Cryptography
  open Newtonsoft.Json
  open System.Net
  open System.IO
  open System.Threading
  
  // =================== TYPE DEFINITIONS ======================
  type U128 = uint64 * uint64
  type NetworkLocation = string // an url... Maybe something better later
  type GUID = U128 // u128... Maybe something better later
  type Address = NetworkLocation
  
negative.code: // Get a list of the digits of a GUID as u64s
  // NOTE: (could be u16 with the default value of 'b' (DIGIT_POWER))
  let get_digits (guid: GUID) : uint64 list =
      let get_bytes (x: uint64): byte[] =
          let barr =
              if BitConverter.IsLittleEndian then
  