anchor.diff:      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]
  +    printfn "Hash : a / b : %d / %d" a b
       (a, b)
   
  -// Just a little formatting
  -let error str =
  -    printfn "ERROR: %s" str
  +// Attempts to convert the given string to a GUID
  +let deserialize_guid (str: string) : GUID option =
  +    if not (str.Length = 40) then
  +        None
  +    else
  +        let a = str.[..19]
  +        let b = str.[20..]
  +        try
  +            let ua = System.Convert.ToUInt64(a)
  +            let ub = System.Convert.ToUInt64(b)
  +            Some((ua, ub)) //
  +        with
  +            | ex -> None
  +
  +// A result type to simplify the interpretation a little
  +type InterpretResult =
  +| Valid of Node
  +| Invalid of string * int * string
   
   // 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/"
  +    let basepath = sprintf "http://%s/" node.address
  +    printfn "Listening at '%s'..." basepath
  +    listener.Prefixes.Add basepath
       listener.Start ()
  -
  -    printfn "Listening..."
   
       let rec listen (node: Node) =
           // Listen for a a message
  
positive.code:     match args with
      | [|addr; port; peer|] ->
          let address = sprintf "%s:%s" (if addr = "" then get_public_ip() else addr) port
          printfn "Joining pastry network at '%s'..." address
          let known_peer = if peer = "" then None else Some(peer)
          let node = join_network address known_peer
          ()
  
negative.code: open Newtonsoft.Json
  open System.Net
  open System.IO
  open System.Threading
  
  // Type definitions
  type U128 = uint64 * uint64
  