     ///
     /// All the elements following the specified position are moved up to close the gap.
     @discardableResult
-    mutating func remove(at index: Int) -> Element {
+    public mutating func remove(at index: Int) -> Element {
         
         return internalReference.mutatingReference.remove(at: index)
     }
     
-    /// Removes all elements from the collection.
-    mutating func removeAll() {
+    /// Removes all elements from the object path.
+    public mutating func removeAll() {
         
         self = DBusObjectPath() // initialize to singleton
     }

            return self.elements.removeLast()
        }
        
        /// Removes and returns the first element of the collection.
        ///
        /// - Precondition: The collection must not be empty.
        internal func removeFirst() -> Element {
            
            // lazily rebuild string

        return IndexingIterator(_elements: self)
    }
    
    /// Adds a new element at the end of the object path.
    ///
    /// Use this method to append a single element to the end of a mutable object path.
    public mutating func append(_ element: Element) {
        
        internalReference.mutatingReference.append(element)
    }
    
    /// Removes and returns the first element of the object path.
    ///
    /// - Precondition: The object path must not be empty.
    @discardableResult
    public mutating func removeFirst() -> Element {
        
        return internalReference.mutatingReference.removeFirst()
    }
    
    /// Removes and returns the last element of the object path.
    ///
    /// - Precondition: The object path must not be empty.
    @discardableResult
    public mutating func removeLast() -> Element {
        
        return internalReference.mutatingReference.removeLast()
    }
