     /// - Parameter metadata: The `<metadata>` element
     /// - Returns: The content of the `<dc:title>` element, `nil` if the element
     ///             wasn't found
-    private func parseMainTitle(from metadata: AEXMLElement) -> String? {
+    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

    ///   - doc: The OPF XML document being parsed (necessary to look for `refines`).
    /// - Returns: The contributor instance filled with its name and optionally
    ///            its `role` and `sortAs` attributes.
    private func createContributor(from element: AEXMLElement,
                                   metadata: AEXMLElement) -> Contributor {
        let contributor = Contributor(name: element.string)


            publication.links.append(link)
        }
        // FIXME: wait SO answer
        let remainingProperties = properties.filter { $0 != "cover-image" && $0 != "nav" }

        link.properties.append(contentsOf: remainingProperties)
        // TODO: rendition properties
    }
