anchor.diff:      | true  -> dt
   
   let pDateTime_toml : Parser<_> = manySatisfy (isDigit|?|isAnyOf['T';':';'.';'-';'Z']) |>> toDateTime
  -
  -let toml_int      = pInt64_toml    |>> Value.Int
  -let toml_float    = pFloat_toml    |>> Value.Float
  -let toml_datetime = pDateTime_toml |>> Value.DateTime
  -
  -(*| Simple Value Parsers |*)
  -
  -let pBool_toml : Parser<_> = (pstring "false" >>% false) <|> (pstring "true" >>% true)
  -
  -let toml_bool = pBool_toml |>> Value.Bool
  +let pBool_toml     : Parser<_> = (pstring "false" >>% false) <|> (pstring "true" >>% true)
  +
  +let toml_int      = pInt64_toml     |>> Value.Int
  +let toml_float    = pFloat_toml     |>> Value.Float
  +let toml_datetime = pDateTime_toml  |>> Value.DateTime
  +let toml_bool     = pBool_toml      |>> Value.Bool
  +let toml_string   = pString_toml    |>> Value.String
   
   
   (*| Key Parsers |*)
  
positive.code: let inline listToKey keys = String.concat "." keys
  let inline keyToList (key:string) = key.Split '.' |> Array.toList
  
  let ``[+``  = pstring "["  .>> skip_tspcs 
  let ``]+``  = pstring "]"  .>> skip_tspcs
  let ``[[+`` = pstring "[[" .>> skip_tspcs 
  
negative.code:     >>. satisfyL (isAnyOf [for hex in 0x00..0x1f -> char hex]) 
          "Unicode control charaters must be escaped"
  
  
  (*| String Parsers |*)
  
  // TODO - fully implement string spec
  // probably need to make a low level string parser
  
  let psingle_string    : Parser<_> = between ``|"|``   ``|"|``   (manyChars (choice
                                                                     [prevCharIs isEscChar >>. ``"``
                                                                      satisfy (isNoneOf['"'])]))
  let pmult_string      : Parser<_> = between ``|"""|`` ``|"""|`` (manyChars anyChar)
  let psingle_litstring : Parser<_> = between ``|'|``   ``|'|``   (manySatisfy (isNoneOf['\'']))
  let pmult_litstring   : Parser<_> = between ``|'''|`` ``|'''|`` (manyChars anyChar)
  let pString_toml      : Parser<_> =
      choice [psingle_string; pmult_string; psingle_litstring; pmult_litstring] .>> skip_tspcs
  
  
  (*| Simple Value Parsers |*)
  
  let pInt64_toml : Parser<_> = 
      followedByL (satisfy ((<>)'0')) "TOML ints cannot begin with leading 0s"
      >>. many1Chars (prevCharIs isDigit >>. skipChar '_' >>. digit <|> digit)
      .>> notFollowedByL ``.`` "TOML ints cannot contain `.`" |>> int64
  
  let pFloat_toml : Parser<_> = 
      let floatChar = satisfy (isDigit|?|isAnyOf['e';'E';'+';'-';'.'])
      followedByL (satisfy ((<>)'0')) "TOML floats cannot begin with leading 0s"  
      >>. many1Chars (skipChar '_' >>. floatChar <|> floatChar) |>> float
  
  let private toDateTime str =
      let mutable dt = Unchecked.defaultof<DateTime>
  