     case text, emote, notice, image, audio, video, location, file
     case custom(String)
     
-    var identifier: String {
+    public var identifier: String {
         switch self {
         case .text: return kMXMessageTypeText
         case .emote: return kMXMessageTypeEmote

        }
    }
    
    init(identifier: __MXMembership) {
        let possibilities: [MXMembership] = [.unknown, .invite, .join, .leave, .ban]
        self = possibilities.first(where: { $0.identifier == identifier }) ?? .unknown
    }

public enum MXMembership {
    case unknown, invite, join, leave, ban
    
    public var identifier: __MXMembership {
        switch self {
        case .unknown: return __MXMembershipUnknown
        case .invite: return __MXMembershipInvite
