diff --git a/parse_xml.cpp b/parse_xml.cpp
index 5f1e2e4..3a3c5bc 100644
--- a/parse_xml.cpp
+++ b/parse_xml.cpp
@@ -300,7 +300,7 @@
 const XmlTextConverter<Transport> transportConverter{"transport"};
 const XmlConverter<Transport> &gTransportConverter = transportConverter;
 
-class MatrixHalConverter : public XmlNodeConverter<MatrixHal> {
+struct MatrixHalConverter : public XmlNodeConverter<MatrixHal> {
     std::string elementName() const override { return "hal"; }
     void mutateNode(const MatrixHal &hal, NodeType *root, DocType *d) const override {
         appendAttr(root, "format", hal.format);
@@ -324,7 +324,7 @@
 const MatrixHalConverter matrixHalConverter{};
 const XmlConverter<MatrixHal> &gMatrixHalConverter = matrixHalConverter;
 
-class MatrixKernelConverter : public XmlNodeConverter<MatrixKernel> {
+struct MatrixKernelConverter : public XmlNodeConverter<MatrixKernel> {
     std::string elementName() const override { return "kernel"; }
     void mutateNode(const MatrixKernel &kernel, NodeType *root, DocType *d) const override {
         appendAttr(root, "version", kernel.version);
@@ -344,7 +344,7 @@
 const MatrixKernelConverter matrixKernelConverter{};
 const XmlConverter<MatrixKernel> &gMatrixKernelConverter = matrixKernelConverter;
 
-class HalImplementationConverter : public XmlNodeConverter<HalImplementation> {
+struct HalImplementationConverter : public XmlNodeConverter<HalImplementation> {
     std::string elementName() const override { return "impl"; }
     void mutateNode(const HalImplementation &impl, NodeType *root, DocType *d) const override {
         appendAttr(root, "level", impl.implLevel);
@@ -362,7 +362,7 @@
 const HalImplementationConverter halImplementationConverter{};
 const XmlConverter<HalImplementation> &gHalImplementationConverter = halImplementationConverter;
 
-class ManifestHalConverter : public XmlNodeConverter<ManifestHal> {
+struct ManifestHalConverter : public XmlNodeConverter<ManifestHal> {
     std::string elementName() const override { return "hal"; }
     void mutateNode(const ManifestHal &hal, NodeType *root, DocType *d) const override {
         appendAttr(root, "format", hal.format);
@@ -389,7 +389,7 @@
 const ManifestHalConverter manifestHalConverter{};
 const XmlConverter<ManifestHal> &gManifestHalConverter = manifestHalConverter;
 
-class SepolicyConverter : public XmlNodeConverter<Sepolicy> {
+struct SepolicyConverter : public XmlNodeConverter<Sepolicy> {
     std::string elementName() const override { return "sepolicy"; }
     void mutateNode(const Sepolicy &, NodeType *, DocType *) const override {
         // TODO after writing sepolicy
@@ -402,7 +402,7 @@
 const SepolicyConverter sepolicyConverter{};
 const XmlConverter<Sepolicy> &gSepolicyConverter = sepolicyConverter;
 
-class VendorManifestConverter : public XmlNodeConverter<VendorManifest> {
+struct VendorManifestConverter : public XmlNodeConverter<VendorManifest> {
     std::string elementName() const override { return "manifest"; }
     void mutateNode(const VendorManifest &m, NodeType *root, DocType *d) const override {
         appendAttr(root, "version", VendorManifest::kVersion);
@@ -425,7 +425,7 @@
 const VendorManifestConverter vendorManifestConverter{};
 const XmlConverter<VendorManifest> &gVendorManifestConverter = vendorManifestConverter;
 
-class CompatibilityMatrixConverter : public XmlNodeConverter<CompatibilityMatrix> {
+struct CompatibilityMatrixConverter : public XmlNodeConverter<CompatibilityMatrix> {
     std::string elementName() const override { return "compatibility-matrix"; }
     void mutateNode(const CompatibilityMatrix &m, NodeType *root, DocType *d) const override {
         appendAttr(root, "version", CompatibilityMatrix::kVersion);
