 		case .rangeValue(let val):
 			result = CNTextLine(string: val.description)
 		case .pointValue(let val):
-			result = CNTextLine(string: "(x:\(val.x), y:\(val.y))")
+			result = CNTextLine(string: "{x:\(val.x), y:\(val.y)}")
 		case .sizeValue(let val):
-			result = CNTextLine(string: "(w:\(val.width), h:\(val.height))")
+			result = CNTextLine(string: "{width:\(val.width), height:\(val.height)}")
 		case .rectValue(let val):
-			let ptstr = "(x:\(val.origin.x), y:\(val.origin.y))"
-			let szstr = "(w:\(val.size.width), h:\(val.size.height))"
-			result = CNTextLine(string: "(" + ptstr + ", " + szstr + ")")
+			let ptstr = "origin:{x:\(val.origin.x), y:\(val.origin.y)}"
+			let szstr = "size:{width:\(val.size.width), height:\(val.size.height)}"
+			result = CNTextLine(string: "{" + ptstr + ", " + szstr + "}")
 		case .dictionaryValue(let val):
 			let sect = CNTextSection()
 			sect.header = "{" ; sect.footer = "}"

		} else if let val = obj as? CGRect {
			result = .rectValue(val)
		} else if let val = obj as? Dictionary<String, Any> {
			result = dictionaryToValue(dictionary: val)
		} else if let val = obj as? Array<Any> {
			result = arrayToValue(array: val)
		} else if let val = obj as? NSObject {
			result = .objectValue(val)
		} else {
			result = nil
		}
		return result
	}

	private static func dictionaryToValue(dictionary value: Dictionary<String, Any> ) -> CNNativeValue? {
		var result: Dictionary<String, CNNativeValue> = [:]
		for (key, elm) in value {
			if let child = anyToValue(object: elm) {
				result[key] = child
			} else {
				NSLog("Invalid object at \(#function)")
			}
		}
		return .dictionaryValue(result)
	}

	private static func arrayToValue(array value: Array<Any>) -> CNNativeValue? {
		var result: Array<CNNativeValue> = []
		for elm in value {
			if let child = anyToValue(object: elm) {
				result.append(child)
			} else {
				NSLog("Invalid object at \(#function)")
			}
		}
		return .arrayValue(result)
	}
}

		case .dateValue(let val):
			result = val
		case .rangeValue(let val):
			let newdict: Dictionary<String, Any> = [
				"location" : NSNumber(value: Int(val.location)),
				"length"   : NSNumber(value: Int(val.length))
			]
			result = newdict
		case .pointValue(let val):
			let newdict: Dictionary<String, Any> = [
				"x"	: NSNumber(value: Double(val.x)),
				"y"	: NSNumber(value: Double(val.y))
			]
			result = newdict
		case .sizeValue(let val):
			let newdict: Dictionary<String, Any> = [
				"width"	: NSNumber(value: Double(val.width)),
				"height": NSNumber(value: Double(val.height))
			]
			result = newdict
		case .rectValue(let val):
			let origin: Dictionary<String, Any> = [
				"x"	: NSNumber(value: Double(val.origin.x)),
				"y"	: NSNumber(value: Double(val.origin.y))
			]
			let size: Dictionary<String, Any> = [
				"width"	: NSNumber(value: Double(val.size.width)),
				"height": NSNumber(value: Double(val.size.height))
			]
			let rect: Dictionary<String, Any> = [
				"origin": origin,
				"size":	  size
			]
			result = rect
		case .dictionaryValue(let dict):
			var newdict: Dictionary<String, Any> = [:]
			for (key, elm) in dict {
