     ///   - element: The XML element to parse
     ///   - doc: The OPF XML document being parsed
     ///   - metadata: The metadata to which to add the contributor
-    private func parseContributor(from element: AEXMLElement,
+    internal func parseContributor(from element: AEXMLElement,
                                   in document: AEXMLDocument,
                                   to metadata: Metadata) {
         let metadataElement = document.root["metadata"]

        publication.resources = [Link](manifestLinks.values)
    }


    /// Parses the differents manifest items from the XML <manifest> element.
    ///
    /// - Parameter manifest: The XML <manifest> element.
    private func parseManifestItems(from manifest: AEXMLElement,
                                    to publication: Publication,
                                    and manifestLinks: inout [String: Link],
                                    with coverItemId: String?) {

    /// - Parameter metadata: The `<metadata>` element
    /// - Returns: The content of the `<dc:title>` element, `nil` if the element
    ///             wasn't found
    internal func parseMainTitle(from metadata: AEXMLElement) -> String? {
        // Return if there isn't any `<dc:title>` element
        guard let titles = metadata["dc:title"].all else {
            return nil
