 }
 
 extension Decimal: ScalarRepresentable {
-    public func represented() throws -> Node {
-        return Node(description)
+    public func represented() -> Node.Scalar {
+        return .init(description)
     }
 }
 
 extension URL: ScalarRepresentable {
-    public func represented() throws -> Node {
-        return Node(absoluteString)
+    public func represented() -> Node.Scalar {
+        return .init(absoluteString)
+    }
+}
+
+extension String: ScalarRepresentable {
+    public func represented() -> Node.Scalar {
+        return .init(self)
     }
 }
 


// MARK: - ScalarRepresentable
/// Type is representabe as `Node.scalar`
public protocol ScalarRepresentable: NodeRepresentable {}

extension Bool: ScalarRepresentable {
    public func represented() throws -> Node {
        return Node(self ? "true" : "false", Tag(.bool))
    }
}

extension Data: ScalarRepresentable {
    public func represented() throws -> Node {
        return Node(base64EncodedString(), Tag(.binary))
    }
}

extension Date: ScalarRepresentable {
    public func represented() throws -> Node {
        return Node(iso8601String, Tag(.timestamp))
    }

    private var iso8601String: String {

//extension Float80: ScalarRepresentable {}

extension BinaryInteger {
    public func represented() -> Node.Scalar {
        return .init(String(describing: self), Tag(.int))
    }
}

