         
         // MARK: - Internal Properties
         
-        internal var storage: Storage
+        // internal class is never mutated
+        internal let storage: Storage
         
         // MARK: - Initialization
         

        
        // MARK: - Properties
        
        public var rawValue: String {
            
            let charBuffer = mongoc_uri_get_string(storage.internalPointer)
            
            return String.fromCString(charBuffer)!
        }
        
        /// Fetches the ```authMechanism``` parameter to an URI if provided.
        public var authenticationMechanism: String? {
            
            // C string should not be freed
            return String.fromCString(mongoc_uri_get_auth_mechanism(storage.internalPointer))
        }
        
        /// Fetches the ```authSource``` parameter of an URI if provided.
        public var authenticationSource: String? {
            
            // C string should not be freed
            return String.fromCString(mongoc_uri_get_auth_source(storage.internalPointer))
        }
        
        // MARK: - Static Methods
        

}

// MARK: - Internal

internal extension MongoDB.URI {
    
