diff --git a/xsd/compatibilityMatrix/api/current.txt b/xsd/compatibilityMatrix/api/current.txt
index a504dbb..a326dd1 100644
--- a/xsd/compatibilityMatrix/api/current.txt
+++ b/xsd/compatibilityMatrix/api/current.txt
@@ -3,29 +3,29 @@
 
   public class Avb {
     ctor public Avb();
-    method public String getVbmetaversion();
-    method public void setVbmetaversion(String);
+    method public String getVbmetaVersion();
+    method public void setVbmetaVersion(String);
   }
 
-  public class Compatibilitymatrix {
-    ctor public Compatibilitymatrix();
+  public class CompatibilityMatrix {
+    ctor public CompatibilityMatrix();
     method public compatibility.matrix.Avb getAvb();
     method public java.util.List<compatibility.matrix.Hal> getHal();
     method public java.util.List<compatibility.matrix.Kernel> getKernel();
     method public String getLevel();
     method public compatibility.matrix.Sepolicy getSepolicy();
-    method public compatibility.matrix.Systemsdk getSystemsdk();
+    method public compatibility.matrix.SystemSdk getSystemSdk();
     method public String getType();
-    method public compatibility.matrix.Vendorndk getVendorndk();
+    method public compatibility.matrix.VendorNdk getVendorNdk();
     method public String getVersion();
     method public compatibility.matrix.Vndk getVndk();
     method public java.util.List<compatibility.matrix.Xmlfile> getXmlfile();
     method public void setAvb(compatibility.matrix.Avb);
     method public void setLevel(String);
     method public void setSepolicy(compatibility.matrix.Sepolicy);
-    method public void setSystemsdk(compatibility.matrix.Systemsdk);
+    method public void setSystemSdk(compatibility.matrix.SystemSdk);
     method public void setType(String);
-    method public void setVendorndk(compatibility.matrix.Vendorndk);
+    method public void setVendorNdk(compatibility.matrix.VendorNdk);
     method public void setVersion(String);
     method public void setVndk(compatibility.matrix.Vndk);
   }
@@ -63,7 +63,7 @@
     ctor public Interface();
     method public java.util.List<java.lang.String> getInstance();
     method public String getName();
-    method public java.util.List<java.lang.String> getRegexinstance();
+    method public java.util.List<java.lang.String> getRegexInstance();
     method public void setName(String);
   }
 
@@ -83,18 +83,18 @@
 
   public class Sepolicy {
     ctor public Sepolicy();
-    method public String getKernelsepolicyversion();
-    method public java.util.List<java.lang.String> getSepolicyversion();
-    method public void setKernelsepolicyversion(String);
+    method public String getKernelSepolicyVersion();
+    method public java.util.List<java.lang.String> getSepolicyVersion();
+    method public void setKernelSepolicyVersion(String);
   }
 
-  public class Systemsdk {
-    ctor public Systemsdk();
+  public class SystemSdk {
+    ctor public SystemSdk();
     method public java.util.List<java.lang.String> getVersion();
   }
 
-  public class Vendorndk {
-    ctor public Vendorndk();
+  public class VendorNdk {
+    ctor public VendorNdk();
     method public java.util.List<java.lang.String> getLibrary();
     method public String getVersion();
     method public void setVersion(String);
@@ -109,7 +109,7 @@
 
   public class XmlParser {
     ctor public XmlParser();
-    method public static compatibility.matrix.Compatibilitymatrix read(java.io.InputStream) throws javax.xml.datatype.DatatypeConfigurationException, java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method public static compatibility.matrix.CompatibilityMatrix read(java.io.InputStream) throws javax.xml.datatype.DatatypeConfigurationException, java.io.IOException, org.xmlpull.v1.XmlPullParserException;
     method public static String readText(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
     method public static void skip(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
   }
diff --git a/xsd/halManifest/api/current.txt b/xsd/halManifest/api/current.txt
index 13acf6b..4783bdb 100644
--- a/xsd/halManifest/api/current.txt
+++ b/xsd/halManifest/api/current.txt
@@ -51,16 +51,16 @@
     method public java.util.List<hal.manifest.Hal> getHal();
     method public hal.manifest.Kernel getKernel();
     method public hal.manifest.Sepolicy getSepolicy();
-    method public hal.manifest.Systemsdk getSystemsdk();
-    method public String getTargetlevel();
+    method public hal.manifest.SystemSdk getSystemSdk();
+    method public String getTargetLevel();
     method public String getType();
-    method public java.util.List<hal.manifest.Vendorndk> getVendorndk();
+    method public java.util.List<hal.manifest.VendorNdk> getVendorNdk();
     method public String getVersion();
     method public java.util.List<hal.manifest.Vndk> getVndk();
     method public void setKernel(hal.manifest.Kernel);
     method public void setSepolicy(hal.manifest.Sepolicy);
-    method public void setSystemsdk(hal.manifest.Systemsdk);
-    method public void setTargetlevel(String);
+    method public void setSystemSdk(hal.manifest.SystemSdk);
+    method public void setTargetLevel(String);
     method public void setType(String);
     method public void setVersion(String);
   }
@@ -71,13 +71,13 @@
     method public void setVersion(String);
   }
 
-  public class Systemsdk {
-    ctor public Systemsdk();
+  public class SystemSdk {
+    ctor public SystemSdk();
     method public java.util.List<java.lang.String> getVersion();
   }
 
-  public class Vendorndk {
-    ctor public Vendorndk();
+  public class VendorNdk {
+    ctor public VendorNdk();
     method public java.util.List<java.lang.String> getLibrary();
     method public String getVersion();
     method public void setVersion(String);
