 
 #endif
 
-// MARK: Tag Classes (Private, OS X bits)
+// MARK: Tag Classes (Private)
 
 private extension UTI {
-
-    enum TagKind {
-        case FilenameExtension
-        case MIME
-        #if os(OSX)
-            case Pasteboard
-            case Legacy
-        #endif
-        
-        var stringValue: String {
-            #if os(OSX)
-                switch self {
-                case .FilenameExtension: return kUTTagClassFilenameExtension
-                case .MIME: return kUTTagClassMIMEType
-                case .Pasteboard: return kUTTagClassNSPboardType
-                case .Legacy: return kUTTagClassOSType
-                }
-            #else
-                switch self {
-                case .FilenameExtension: return kUTTagClassFilenameExtension
-                case .MIME: return kUTTagClassMIMEType
-                }
-            #endif
-        }
-    }
-    
-    func preferredTag(kind: TagKind) -> String? {
-        return UTTypeCopyPreferredTagWithClass(identifier, kind.stringValue)?.takeRetainedValue()
-    }
-    
-    func allTags(kind: TagKind) -> [String]? {
-        return UTTypeCopyAllTagsWithClass(identifier, kind.stringValue)?.takeRetainedValue() as? [String]
+    
+    func preferredTag(kind: String) -> String? {
+        return UTTypeCopyPreferredTagWithClass(identifier, kind)?.takeRetainedValue()
+    }
+    
+    func allTags(kind: String) -> [String]? {
+        return UTTypeCopyAllTagsWithClass(identifier, kind)?.takeRetainedValue() as? [String]
     }
     
 }

    }
    
    public var preferredPathExtension: String? {
        return preferredTag(.FilenameExtension)
    }
    
    public var preferredMIMEType: String? {
        return preferredTag(.MIME)
    }
    
    public var pathExtensions: [String]? {
        return allTags(.FilenameExtension)
    }
    
    public var MIMETypes: [String]? {
        return allTags(.MIME)
    }
    
    #if os(OSX)
    
        public var preferredPasteboardType: String? {
            return preferredTag(.Pasteboard)
        }
        
        public var preferredLegacyType: OSType? {
            return OSType(string: preferredTag(.Legacy))
        }
        
        public var pasteboardTypes: [String]? {
            return allTags(.Pasteboard)
        }
        
        public var preferredLegacyTypes: [OSType]? {
            return allTags(.Legacy)?.map { OSType(string: $0)! }
        }
    
    #endif

            case Legacy(OSType)
        #endif
        
        var kindValue: String {
            #if os(OSX)
                switch self {
