diff --git a/car-lib/api/current.txt b/car-lib/api/current.txt
index a24febf..7bec186 100644
--- a/car-lib/api/current.txt
+++ b/car-lib/api/current.txt
@@ -20,26 +20,6 @@
     field public static final java.lang.String SENSOR_SERVICE = "sensor";
   }
 
-  public class CarAppContextManager {
-    method public int getActiveAppContexts() throws android.car.CarNotConnectedException;
-    method public boolean isOwningContext(int) throws android.car.CarNotConnectedException;
-    method public void onCarDisconnected();
-    method public void registerContextListener(android.car.CarAppContextManager.AppContextChangeListener, int) throws android.car.CarNotConnectedException;
-    method public void resetActiveContexts(int) throws android.car.CarNotConnectedException;
-    method public void setActiveContexts(android.car.CarAppContextManager.AppContextOwnershipChangeListener, int) throws android.car.CarNotConnectedException, java.lang.SecurityException;
-    method public void unregisterContextListener() throws android.car.CarNotConnectedException;
-    field public static final int APP_CONTEXT_NAVIGATION = 1; // 0x1
-    field public static final int APP_CONTEXT_VOICE_COMMAND = 2; // 0x2
-  }
-
-  public static abstract interface CarAppContextManager.AppContextChangeListener {
-    method public abstract void onAppContextChange(int);
-  }
-
-  public static abstract interface CarAppContextManager.AppContextOwnershipChangeListener {
-    method public abstract void onAppContextOwnershipLoss(int);
-  }
-
   public class CarInfoManager {
     method public java.lang.Float getFloat(java.lang.String) throws android.car.CarNotConnectedException, java.lang.IllegalArgumentException;
     method public java.lang.Integer getInt(java.lang.String) throws android.car.CarNotConnectedException, java.lang.IllegalArgumentException;
@@ -307,11 +287,11 @@
     field public static final int SENSOR_RATE_NORMAL = 3; // 0x3
     field public static final int SENSOR_RATE_UI = 2; // 0x2
     field public static final int SENSOR_TYPE_CAR_SPEED = 2; // 0x2
-    field public static final int SENSOR_TYPE_DRIVING_STATUS = 10; // 0xa
-    field public static final int SENSOR_TYPE_ENVIRONMENT = 11; // 0xb
+    field public static final int SENSOR_TYPE_DRIVING_STATUS = 11; // 0xb
+    field public static final int SENSOR_TYPE_ENVIRONMENT = 12; // 0xc
     field public static final int SENSOR_TYPE_FUEL_LEVEL = 5; // 0x5
     field public static final int SENSOR_TYPE_GEAR = 7; // 0x7
-    field public static final int SENSOR_TYPE_NIGHT = 8; // 0x8
+    field public static final int SENSOR_TYPE_NIGHT = 9; // 0x9
     field public static final int SENSOR_TYPE_ODOMETER = 4; // 0x4
     field public static final int SENSOR_TYPE_PARKING_BRAKE = 6; // 0x6
     field public static final int SENSOR_TYPE_RPM = 3; // 0x3
diff --git a/car-lib/api/system-current.txt b/car-lib/api/system-current.txt
index 18239c4..b6fdd90 100644
--- a/car-lib/api/system-current.txt
+++ b/car-lib/api/system-current.txt
@@ -32,26 +32,6 @@
     field public static final java.lang.String TEST_SERVICE = "car-service-test";
   }
 
-  public class CarAppContextManager {
-    method public int getActiveAppContexts() throws android.car.CarNotConnectedException;
-    method public boolean isOwningContext(int) throws android.car.CarNotConnectedException;
-    method public void onCarDisconnected();
-    method public void registerContextListener(android.car.CarAppContextManager.AppContextChangeListener, int) throws android.car.CarNotConnectedException;
-    method public void resetActiveContexts(int) throws android.car.CarNotConnectedException;
-    method public void setActiveContexts(android.car.CarAppContextManager.AppContextOwnershipChangeListener, int) throws android.car.CarNotConnectedException, java.lang.SecurityException;
-    method public void unregisterContextListener() throws android.car.CarNotConnectedException;
-    field public static final int APP_CONTEXT_NAVIGATION = 1; // 0x1
-    field public static final int APP_CONTEXT_VOICE_COMMAND = 2; // 0x2
-  }
-
-  public static abstract interface CarAppContextManager.AppContextChangeListener {
-    method public abstract void onAppContextChange(int);
-  }
-
-  public static abstract interface CarAppContextManager.AppContextOwnershipChangeListener {
-    method public abstract void onAppContextOwnershipLoss(int);
-  }
-
   public class CarInfoManager {
     method public java.lang.Float getFloat(java.lang.String) throws android.car.CarNotConnectedException, java.lang.IllegalArgumentException;
     method public java.lang.Integer getInt(java.lang.String) throws android.car.CarNotConnectedException, java.lang.IllegalArgumentException;
@@ -532,11 +512,11 @@
     field public static final int SENSOR_RATE_NORMAL = 3; // 0x3
     field public static final int SENSOR_RATE_UI = 2; // 0x2
     field public static final int SENSOR_TYPE_CAR_SPEED = 2; // 0x2
-    field public static final int SENSOR_TYPE_DRIVING_STATUS = 10; // 0xa
-    field public static final int SENSOR_TYPE_ENVIRONMENT = 11; // 0xb
+    field public static final int SENSOR_TYPE_DRIVING_STATUS = 11; // 0xb
+    field public static final int SENSOR_TYPE_ENVIRONMENT = 12; // 0xc
     field public static final int SENSOR_TYPE_FUEL_LEVEL = 5; // 0x5
     field public static final int SENSOR_TYPE_GEAR = 7; // 0x7
-    field public static final int SENSOR_TYPE_NIGHT = 8; // 0x8
+    field public static final int SENSOR_TYPE_NIGHT = 9; // 0x9
     field public static final int SENSOR_TYPE_ODOMETER = 4; // 0x4
     field public static final int SENSOR_TYPE_PARKING_BRAKE = 6; // 0x6
     field public static final int SENSOR_TYPE_RPM = 3; // 0x3
diff --git a/car-lib/src/android/car/CarAppContextManager.java b/car-lib/src/android/car/CarAppContextManager.java
index c7657ca..5eb4c56 100644
--- a/car-lib/src/android/car/CarAppContextManager.java
+++ b/car-lib/src/android/car/CarAppContextManager.java
@@ -30,6 +30,7 @@
  * like active navigation or active voice command. Usually only one instance of such application
  * should run in the system, and other app setting the flag for the matching app should
  * lead into other app to stop.
+ * @hide
  */
 public class CarAppContextManager implements CarManagerBase {
     /**
diff --git a/car-lib/src/android/car/hardware/CarSensorManager.java b/car-lib/src/android/car/hardware/CarSensorManager.java
index dab13bc..d0dc4e8 100644
--- a/car-lib/src/android/car/hardware/CarSensorManager.java
+++ b/car-lib/src/android/car/hardware/CarSensorManager.java
@@ -83,27 +83,41 @@
      * {@link CarSensorEvent#GEAR_NEUTRAL} and other GEAR_*.
      */
     public static final int SENSOR_TYPE_GEAR              = 7;
+    /** @hide */
+    public static final int SENSOR_TYPE_RESERVED8        = 8;
     /**
      * Day/night sensor. Sensor data is intValues[0].
      */
-    public static final int SENSOR_TYPE_NIGHT             = 8;
+    public static final int SENSOR_TYPE_NIGHT             = 9;
     /** @hide */
-    public static final int SENSOR_TYPE_REVERVED9        = 9;
+    public static final int SENSOR_TYPE_RESERVED10         = 10;
     /**
      * Represents the current driving status of car. Different user interaction should be used
      * depending on the current driving status. Driving status is intValues[0].
      */
-    public static final int SENSOR_TYPE_DRIVING_STATUS    = 10;
+    public static final int SENSOR_TYPE_DRIVING_STATUS    = 11;
     /**
      * Environment like temperature and pressure.
      */
-    public static final int SENSOR_TYPE_ENVIRONMENT       = 11;
-    /** @hide */
-    public static final int SENSOR_TYPE_RESERVED12        = 12;
+    public static final int SENSOR_TYPE_ENVIRONMENT       = 12;
     /** @hide */
     public static final int SENSOR_TYPE_RESERVED13        = 13;
     /** @hide */
     public static final int SENSOR_TYPE_RESERVED14        = 14;
+    /** @hide */
+    public static final int SENSOR_TYPE_RESERVED15        = 15;
+    /** @hide */
+    public static final int SENSOR_TYPE_RESERVED16        = 16;
+    /** @hide */
+    public static final int SENSOR_TYPE_RESERVED17        = 17;
+    /** @hide */
+    public static final int SENSOR_TYPE_RESERVED18        = 18;
+    /** @hide */
+    public static final int SENSOR_TYPE_RESERVED19        = 19;
+    /** @hide */
+    public static final int SENSOR_TYPE_RESERVED20        = 20;
+    /** @hide */
+    public static final int SENSOR_TYPE_RESERVED21        = 21;
 
     /**
      * Sensor type bigger than this is invalid. Always update this after adding a new sensor.
diff --git a/car-support-lib/api/current.txt b/car-support-lib/api/current.txt
index 479f056..1256f7f 100644
--- a/car-support-lib/api/current.txt
+++ b/car-support-lib/api/current.txt
@@ -29,26 +29,6 @@
     field public static final java.lang.String SENSOR_SERVICE = "sensor";
   }
 
-  public abstract class CarAppContextManager {
-    ctor public CarAppContextManager();
-    method public abstract int getActiveAppContexts() throws android.support.car.CarNotConnectedException;
-    method public abstract boolean isOwningContext(int) throws android.support.car.CarNotConnectedException;
-    method public abstract void registerContextListener(android.support.car.CarAppContextManager.AppContextChangeListener, int) throws android.support.car.CarNotConnectedException;
-    method public abstract void resetActiveContexts(int) throws android.support.car.CarNotConnectedException;
-    method public abstract void setActiveContexts(android.support.car.CarAppContextManager.AppContextOwnershipChangeListener, int) throws android.support.car.CarNotConnectedException, java.lang.IllegalStateException, java.lang.SecurityException;
-    method public abstract void unregisterContextListener() throws android.support.car.CarNotConnectedException;
-    field public static final int APP_CONTEXT_NAVIGATION = 1; // 0x1
-    field public static final int APP_CONTEXT_VOICE_COMMAND = 2; // 0x2
-  }
-
-  public static abstract interface CarAppContextManager.AppContextChangeListener {
-    method public abstract void onAppContextChange(int);
-  }
-
-  public static abstract interface CarAppContextManager.AppContextOwnershipChangeListener {
-    method public abstract void onAppContextOwnershipLoss(int);
-  }
-
   public abstract interface CarConnectionListener {
     method public abstract void onConnected(int);
     method public abstract void onDisconnected();
@@ -597,12 +577,12 @@
     field public static final int SENSOR_RATE_UI = 2; // 0x2
     field public static final int SENSOR_TYPE_CAR_SPEED = 2; // 0x2
     field public static final int SENSOR_TYPE_COMPASS = 1; // 0x1
-    field public static final int SENSOR_TYPE_DRIVING_STATUS = 10; // 0xa
-    field public static final int SENSOR_TYPE_ENVIRONMENT = 11; // 0xb
+    field public static final int SENSOR_TYPE_DRIVING_STATUS = 11; // 0xb
+    field public static final int SENSOR_TYPE_ENVIRONMENT = 12; // 0xc
     field public static final int SENSOR_TYPE_FUEL_LEVEL = 5; // 0x5
     field public static final int SENSOR_TYPE_GEAR = 7; // 0x7
-    field public static final int SENSOR_TYPE_LOCATION = 9; // 0x9
-    field public static final int SENSOR_TYPE_NIGHT = 8; // 0x8
+    field public static final int SENSOR_TYPE_LOCATION = 10; // 0xa
+    field public static final int SENSOR_TYPE_NIGHT = 9; // 0x9
     field public static final int SENSOR_TYPE_ODOMETER = 4; // 0x4
     field public static final int SENSOR_TYPE_PARKING_BRAKE = 6; // 0x6
     field public static final int SENSOR_TYPE_RPM = 3; // 0x3
diff --git a/car-support-lib/src/android/support/car/CarAppContextManager.java b/car-support-lib/src/android/support/car/CarAppContextManager.java
index 70616b9..837dd9c 100644
--- a/car-support-lib/src/android/support/car/CarAppContextManager.java
+++ b/car-support-lib/src/android/support/car/CarAppContextManager.java
@@ -21,6 +21,7 @@
  * like active navigation or active voice command. Usually only one instance of such application
  * should run in the system, and other app setting the flag for the matching app should
  * lead into other app to stop.
+ * @hide
  */
 public abstract class CarAppContextManager implements CarManagerBase {
     /**
diff --git a/car-support-lib/src/android/support/car/hardware/CarSensorManager.java b/car-support-lib/src/android/support/car/hardware/CarSensorManager.java
index 04d63a1..5cd4f80 100644
--- a/car-support-lib/src/android/support/car/hardware/CarSensorManager.java
+++ b/car-support-lib/src/android/support/car/hardware/CarSensorManager.java
@@ -28,81 +28,91 @@
  */
 public abstract class CarSensorManager implements CarManagerBase {
     /**
-     * SENSOR_TYPE_* represents type of sensor supported from the connected car.
-     * This sensor represents the direction of the car as an angle in degree measured clockwise
-     * with 0 degree pointing to north.
-     * Sensor data in {@link CarSensorEvent} is a float (floatValues[0]).
+     * SENSOR_TYPE_* represents type of sensor supported from the connected car. This sensor
+     * represents the direction of the car as an angle in degree measured clockwise with 0 degree
+     * pointing to north. Sensor data in {@link CarSensorEvent} is a float (floatValues[0]).
      */
-    public static final int SENSOR_TYPE_COMPASS           = 1;
+    public static final int SENSOR_TYPE_COMPASS = 1;
     /**
-     * This sensor represents vehicle speed in m/s.
-     * Sensor data in {@link CarSensorEvent} is a float which will be >= 0.
-     * This requires {@link Car#PERMISSION_SPEED} permission.
+     * This sensor represents vehicle speed in m/s. Sensor data in {@link CarSensorEvent} is a float
+     * which will be >= 0. This requires {@link Car#PERMISSION_SPEED} permission.
      */
-    public static final int SENSOR_TYPE_CAR_SPEED         = 2;
+    public static final int SENSOR_TYPE_CAR_SPEED = 2;
     /**
      * Represents engine RPM of the car. Sensor data in {@link CarSensorEvent} is a float.
      */
-    public static final int SENSOR_TYPE_RPM               = 3;
+    public static final int SENSOR_TYPE_RPM = 3;
     /**
-     * Total travel distance of the car in Kilometer. Sensor data is a float.
-     * This requires {@link Car#PERMISSION_MILEAGE} permission.
+     * Total travel distance of the car in Kilometer. Sensor data is a float. This requires {@link
+     * Car#PERMISSION_MILEAGE} permission.
      */
-    public static final int SENSOR_TYPE_ODOMETER          = 4;
+    public static final int SENSOR_TYPE_ODOMETER = 4;
     /**
-     * Indicates fuel level of the car.
-     * In {@link CarSensorEvent}, floatValues[{@link CarSensorEvent#INDEX_FUEL_LEVEL_IN_PERCENTILE}]
-     * represents fuel level in percentile (0 to 100) while
-     * floatValues[{@link CarSensorEvent#INDEX_FUEL_LEVEL_IN_DISTANCE}] represents estimated range
-     * in Kilometer with the remaining fuel.
-     * Note that the gas mileage used for the estimation may not represent the current driving
-     * condition.
-     * This requires {@link Car#PERMISSION_FUEL} permission.
+     * Indicates fuel level of the car. In {@link CarSensorEvent}, floatValues[{@link
+     * CarSensorEvent#INDEX_FUEL_LEVEL_IN_PERCENTILE}] represents fuel level in percentile (0 to
+     * 100) while floatValues[{@link CarSensorEvent#INDEX_FUEL_LEVEL_IN_DISTANCE}] represents
+     * estimated range in Kilometer with the remaining fuel. Note that the gas mileage used for the
+     * estimation may not represent the current driving condition. This requires {@link
+     * Car#PERMISSION_FUEL} permission.
      */
-    public static final int SENSOR_TYPE_FUEL_LEVEL        = 5;
+    public static final int SENSOR_TYPE_FUEL_LEVEL = 5;
     /**
      * Represents the current status of parking brake. Sensor data in {@link CarSensorEvent} is an
-     * intValues[0]. Value of 1 represents parking brake applied while 0 means the other way
-     * around. For this sensor, rate in {@link #registerListener(CarSensorEventListener, int, int)}
-     * will be ignored and all changes will be notified.
+     * intValues[0]. Value of 1 represents parking brake applied while 0 means the other way around.
+     * For this sensor, rate in {@link #registerListener(CarSensorEventListener, int, int)} will be
+     * ignored and all changes will be notified.
      */
-    public static final int SENSOR_TYPE_PARKING_BRAKE     = 6;
+    public static final int SENSOR_TYPE_PARKING_BRAKE = 6;
     /**
-     * This represents the current position of transmission gear. Sensor data in
-     * {@link CarSensorEvent} is an intValues[0]. For the meaning of the value, check
-     * {@link CarSensorEvent#GEAR_NEUTRAL} and other GEAR_*.
+     * This represents the current position of transmission gear. Sensor data in {@link
+     * CarSensorEvent} is an intValues[0]. For the meaning of the value, check {@link
+     * CarSensorEvent#GEAR_NEUTRAL} and other GEAR_*.
      */
-    public static final int SENSOR_TYPE_GEAR              = 7;
+    public static final int SENSOR_TYPE_GEAR = 7;
+
+    /**@hide*/
+    public static final int SENSOR_TYPE_RESERVED8 = 8;
+
     /**
      * Day/night sensor. Sensor data is intValues[0].
      */
-    public static final int SENSOR_TYPE_NIGHT             = 8;
+    public static final int SENSOR_TYPE_NIGHT = 9;
     /**
      * Sensor type for location. Sensor data passed in floatValues.
      */
-    public static final int SENSOR_TYPE_LOCATION          = 9;
+    public static final int SENSOR_TYPE_LOCATION = 10;
     /**
      * Represents the current driving status of car. Different user interaction should be used
      * depending on the current driving status. Driving status is intValues[0].
      */
-    public static final int SENSOR_TYPE_DRIVING_STATUS    = 10;
+    public static final int SENSOR_TYPE_DRIVING_STATUS = 11;
     /**
      * Environment like temperature and pressure.
      */
-    public static final int SENSOR_TYPE_ENVIRONMENT       = 11;
-
+    public static final int SENSOR_TYPE_ENVIRONMENT = 12;
     /** @hide */
-    public static final int SENSOR_TYPE_ACCELEROMETER     = 12;
+    public static final int SENSOR_TYPE_RESERVED13 = 13;
     /** @hide */
-    public static final int SENSOR_TYPE_GPS_SATELLITE     = 13;
+    public static final int SENSOR_TYPE_ACCELEROMETER = 14;
     /** @hide */
-    public static final int SENSOR_TYPE_GYROSCOPE         = 14;
+    public static final int SENSOR_TYPE_RESERVED15 = 15;
+    /** @hide */
+    public static final int SENSOR_TYPE_RESERVED16 = 16;
+    /** @hide */
+    public static final int SENSOR_TYPE_GPS_SATELLITE = 17;
+    /** @hide */
+    public static final int SENSOR_TYPE_GYROSCOPE = 18;
+    /** @hide */
+    public static final int SENSOR_TYPE_RESERVED19 = 19;
+    /** @hide */
+    public static final int SENSOR_TYPE_RESERVED20 = 20;
+    /** @hide */
+    public static final int SENSOR_TYPE_RESERVED21 = 21;
 
     /**
      * Sensor type bigger than this is invalid. Always update this after adding a new sensor.
-     * @hide
      */
-    private static final int SENSOR_TYPE_MAX              = SENSOR_TYPE_GYROSCOPE;
+    private static final int SENSOR_TYPE_MAX = SENSOR_TYPE_RESERVED21;
 
     /**
      * Sensors defined in this range [{@link #SENSOR_TYPE_VENDOR_EXTENSION_START},
