diff --git a/guest/hals/audio/legacy/vsoc_audio.cpp b/guest/hals/audio/legacy/vsoc_audio.cpp
index 8d6141e..040e1e7 100644
--- a/guest/hals/audio/legacy/vsoc_audio.cpp
+++ b/guest/hals/audio/legacy/vsoc_audio.cpp
@@ -180,7 +180,7 @@
 
 int GceAudio::Dump(int fd) const {
   LockGuard<Mutex> guard(lock_);
-  VSOC_FDPRINTF(
+  dprintf(
       fd,
       "\nadev_dump:\n"
       "\tmic_mute: %s\n"
diff --git a/guest/hals/audio/legacy/vsoc_audio_input_stream.cpp b/guest/hals/audio/legacy/vsoc_audio_input_stream.cpp
index 6dd61f7..bb9e196 100644
--- a/guest/hals/audio/legacy/vsoc_audio_input_stream.cpp
+++ b/guest/hals/audio/legacy/vsoc_audio_input_stream.cpp
@@ -18,6 +18,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <cstdint>
+#include <cinttypes>
 
 extern "C"{
 #include <cutils/str_parms.h>
@@ -120,7 +121,7 @@
 
 int GceAudioInputStream::Dump(int fd) const {
   D("GceAudioInputStream::%s", __FUNCTION__);
-  VSOC_FDPRINTF(
+  dprintf(
       fd,
       "\tInputSteam Dump:\n"
       "\t\tsample rate: %u\n"
diff --git a/guest/hals/audio/legacy/vsoc_audio_output_stream.cpp b/guest/hals/audio/legacy/vsoc_audio_output_stream.cpp
index b0c6037..571f95e 100644
--- a/guest/hals/audio/legacy/vsoc_audio_output_stream.cpp
+++ b/guest/hals/audio/legacy/vsoc_audio_output_stream.cpp
@@ -62,7 +62,7 @@
 
 int GceAudioOutputStream::Dump(int fd) const {
   D("GceAudioOutputStream::%s", __FUNCTION__);
-  VSOC_FDPRINTF(
+  dprintf(
       fd,
       "\tout_dump:\n"
       "\t\tsample rate: %u\n"
diff --git a/guest/hals/sensors/sensors.cpp b/guest/hals/sensors/sensors.cpp
index eb1dda6..951461d 100644
--- a/guest/hals/sensors/sensors.cpp
+++ b/guest/hals/sensors/sensors.cpp
@@ -23,12 +23,6 @@
 namespace {
 const cvd::time::Milliseconds kDefaultSamplingRate(200);
 
-#if !VSOC_SENSORS_DEVICE_API_VERSION_ATLEAST(1_3)
-namespace {
-const int SENSOR_FLAG_WAKE_UP = 0;
-}
-#endif
-
 timespec infinity() {
   timespec ts;
   ts.tv_sec = std::numeric_limits<time_t>::max();
@@ -65,18 +59,12 @@
   this->resolution = resolution;
   this->power = power;
   this->minDelay = min_delay;
-#if VSOC_SENSORS_DEVICE_API_VERSION_ATLEAST(1_1)
   this->fifoReservedEventCount = fifo_reserved_event_count;
   this->fifoMaxEventCount = fifo_max_event_count;
-#endif
-#if VSOC_SENSORS_DEVICE_API_VERSION_ATLEAST(1_2)
   this->stringType = string_type;
   this->requiredPermission = required_permission;
-#endif
-#if VSOC_SENSORS_DEVICE_API_VERSION_ATLEAST(1_3)
   this->maxDelay = max_delay;
   this->flags = reporting_mode;
-#endif
 }
 
 namespace sc = sensors_constants;
diff --git a/guest/hals/sensors/vsoc_sensors.h b/guest/hals/sensors/vsoc_sensors.h
index dec7102..c4e9718 100644
--- a/guest/hals/sensors/vsoc_sensors.h
+++ b/guest/hals/sensors/vsoc_sensors.h
@@ -35,7 +35,6 @@
   uint8_t sensor_handle;
 } SensorControlMessage;
 
-#if VSOC_SENSORS_DEVICE_API_VERSION_ATLEAST(1_0)
 // Last updated to HAL 1.4
 // Version history:
 //   Before jb, jb-mr1 SENSORS_DEVICE_API_VERSION_0_1 (no version in sensors.h)
@@ -43,10 +42,6 @@
 //   k: SENSORS_DEVICE_API_VERSION_1_1
 //   l, l-mr1: SENSORS_DEVICE_API_VERSION_1_3
 //   m, n, n-mr1: SENSORS_DEVICE_API_VERSION_1_4
-#else
-// Pre-1.0 sensors do not define the sensors_poll_device_1 type.
-typedef sensors_poll_device_t sensors_poll_device_1;
-#endif
 
 class GceSensors : public sensors_poll_device_1 {
  public:
@@ -112,7 +107,6 @@
   // an error.
   int Poll(sensors_event_t* data, int count);
 
-#if VSOC_SENSORS_DEVICE_API_VERSION_ATLEAST(1_0)
   // Sets a sensor’s parameters, including sampling frequency and maximum
   // report latency. This function can be called while the sensor is
   // activated, in which case it must not cause any sensor measurements to
@@ -131,9 +125,7 @@
     // TODO: Add support for maximum report latency with max_report_latency_ns.
     return SetDelay(sensor_handle, sampling_period_ns);
   }
-#endif
 
-#if VSOC_SENSORS_DEVICE_API_VERSION_ATLEAST(1_1)
   // Adds a META_DATA_FLUSH_COMPLETE event (sensors_event_meta_data_t)
   // to the end of the "batch mode" FIFO for the specified sensor and flushes
   // the FIFO.
@@ -151,9 +143,7 @@
   int Flush(int sensor_handle) {
     return -EINVAL;
   }
-#endif
 
-#if VSOC_SENSORS_DEVICE_API_VERSION_ATLEAST(1_4)
   // Inject a single sensor sample to be to this device.
   // data points to the sensor event to be injected
   // @return 0 on success
@@ -162,7 +152,6 @@
   int InjectSensorData(const sensors_event_t *data) {
     return -EINVAL;
   }
-#endif
 
  private:
   typedef std::vector<SensorState*> SensorStateVector;
