 
 extension String {
 	var pathComponents: [String] {
-		return URL(fileURLWithPath: self).pathComponents
+		return URL(fileURLWithPath: self).pathComponents ?? [String]()
 	}
 
 	var lastPathComponent: String {
-		return URL(fileURLWithPath: self).lastPathComponent
+		return URL(fileURLWithPath: self).lastPathComponent ?? ""
 	}
 
 	var deletingLastPathComponent: String {
-		return URL(fileURLWithPath: self).deletingLastPathComponent().path
-	}
-	
+		let pth = try? URL(fileURLWithPath: self).deletingLastPathComponent()
+		return pth?.path ?? ""
+	}
+
 	var deletingPathExtension: String {
-		return URL(fileURLWithPath: self).deletingPathExtension().path
+		let pth = try? URL(fileURLWithPath: self).deletingPathExtension()
+		return pth?.path ?? ""
 	}
 
 	var pathExtension: String {
-		return URL(fileURLWithPath: self).pathExtension
+		return URL(fileURLWithPath: self).pathExtension ?? ""
 	}
 
 	var resolvingSymlinksInPath: String {
-		return URL(fileURLWithPath: self).resolvingSymlinksInPath().path
+		let pth = try? URL(fileURLWithPath: self).resolvingSymlinksInPath()
+		return pth?.path ?? ""
 	}
 }
 

		uuid_generate_random(u)
		self.uuid = UUID.uuidFromPointer(u)
	}
	
	public init(_ string: String) {
		let u = UnsafeMutablePointer<UInt8>.allocate(capacity:  sizeof(uuid_t.self))
		defer {

			|| ( cc >= 123 && cc <= 126 )
			|| self == 43 )
	}

    // same as String(self, radix: 16)
    // but outputs two characters. i.e. 0 padded
	var hexString: String {
