     }
 }
 
-extension CollectionStatus: XMLIndexerDeserializable {
+extension CollectionStatus: XMLElementDeserializable {
 
     /**
      Deserializes a "status" indexer in BoardGameGeek "collection" response.

     - returns: A CollectionStats structure.
     */
    public static func deserialize(node: XMLIndexer) throws -> CollectionRating {
        guard let userRatingStr = node.element?.attributes["value"],
            let averageRatingStr = node["average"].element?.attributes["value"],
            let bayesAverageRatingStr = node["bayesaverage"].element?.attributes["value"]
                else {
                    throw XMLDeserializationError.NodeIsInvalid(node: node)
        }

        guard let averageRating = Double(averageRatingStr),
            let bayesAverageRating = Double(bayesAverageRatingStr)
                else {
                    throw XMLDeserializationError.NodeIsInvalid(node: node)
        }

        var stdDev: Double? = nil
        if let stdDevStr = node["stddev"].element?.attributes["value"] {
            stdDev = Double(stdDevStr)
        }

        var median: Double? = nil
        if let medianStr = node["median"].element?.attributes["value"] {
            median = Double(medianStr)
        }

        var usersRated: Int? = nil
        if let usersRatedStr = node["usersrated"].element?.attributes["value"] {
            usersRated = Int(usersRatedStr)
        }

        return try CollectionRating(
            userRating: Double(userRatingStr),
            usersRated: usersRated,
            averageRating: averageRating,
            bayesAverageRating: bayesAverageRating,
            stdDev: stdDev,
            median: median,
            ranks: node["ranks"]["rank"].value()
        )
    }

     - returns: A CollectionBoardGame structure.
     */
    public static func deserialize(node: XMLIndexer) throws -> CollectionBoardGame {
        guard node.element != nil && node["name"].element != nil else {
            throw XMLDeserializationError.NodeIsInvalid(node: node)
        }

        return try CollectionBoardGame(
            objectId: node.element!.attribute("objectid"),
            name: node["name"].value(),
            sortIndex: node["name"].element!.attribute("sortindex"),
            status: node["status"].value(),
            stats: node["stats"].value(),
            yearPublished: node["yearpublished"].value(),
