anchor.diff:      type PayDirection = To | From
       type Source = Dir of string | File of string
   
  -    // TODO make db location configurable
  -    // TODO tidy up db access
  +    // TODO is it worth moving any function that touches client into a seperate file?
       // TODO make restartable (need to store byte index)
       let doLoad url source messageScope =
           let client = new GraphClient(new Uri(url))
           client.Connect()
   
  -        // TODO feels like we could have a generic save method
  -        let saveNeoOutput transactionHash neoOutput =
  -            client.Cypher
  -                .Create("(o:Output {param})")
  -                .WithParam("param", neoOutput)
  +        let saveInputOutputRecord label transactionHash record =
  +            client.Cypher
  +                .Create(sprintf "(o:%s {param})" label)
  +                .WithParam("param", record)
                   .With("o")
                   .Match("(t:Transaction)")
                   .Where(fun t -> t.TransactionHash = transactionHash)
  -                .CreateUnique("t-[:output]->o")
  +                .CreateUnique(sprintf "t-[:%s]->o" (label.ToLowerInvariant()))
                   .ExecuteWithoutResults()
   
           let payAddress direction transactionHash address value transTime =
  
positive.code:                 .CreateUnique("p<-[:prev]-c")
                  .ExecuteWithoutResults()
  
          let saveNeoBlock neoBlock =
              client.Cypher
                  .Create("(b:Block {param})")
                  .WithParam("param", neoBlock)
                  .ExecuteWithoutResults()
  
          let neoBlockOfBlock (block: Block) hash height =
              let timestamp = new DateTimeOffset(block.Timestamp, new TimeSpan(0L))
  
negative.code:                 { Value = output.Value
                    Address = address
                    Index = i }
              saveInputOutputRecord "Output" transactionHash output
              output
  
          let neoInputOfInput transactionHash transTime (input: Input) =
              let inputHash = Conversion.littleEndianBytesToHexString input.InputHash
  