diff --git a/android/vm/Android.bp b/android/vm/Android.bp
index ba8b416..c1d9b6b 100644
--- a/android/vm/Android.bp
+++ b/android/vm/Android.bp
@@ -16,7 +16,6 @@
         "libbinder_rs",
         "libclap",
         "libenv_logger",
-        "libcfg_if",
         "libglob",
         "libhypervisor_props",
         "liblibc",
diff --git a/android/vm/src/main.rs b/android/vm/src/main.rs
index 185ac34..f2c2fa4 100644
--- a/android/vm/src/main.rs
+++ b/android/vm/src/main.rs
@@ -75,14 +75,14 @@
 }
 
 impl CommonConfig {
+    #[cfg(network)]
     fn network_supported(&self) -> bool {
-        cfg_if::cfg_if! {
-            if #[cfg(network)] {
-                self.network_supported
-            } else {
-                false
-            }
-        }
+        self.network_supported
+    }
+
+    #[cfg(not(network))]
+    fn network_supported(&self) -> bool {
+        false
     }
 }
 
@@ -117,14 +117,14 @@
 }
 
 impl DebugConfig {
+    #[cfg(debuggable_vms_improvements)]
     fn enable_earlycon(&self) -> bool {
-        cfg_if::cfg_if! {
-            if #[cfg(debuggable_vms_improvements)] {
-                self.enable_earlycon
-            } else {
-                false
-            }
-        }
+        self.enable_earlycon
+    }
+
+    #[cfg(not(debuggable_vms_improvements))]
+    fn enable_earlycon(&self) -> bool {
+        false
     }
 }
 
@@ -158,34 +158,34 @@
 }
 
 impl MicrodroidConfig {
+    #[cfg(vendor_modules)]
     fn vendor(&self) -> Option<&PathBuf> {
-        cfg_if::cfg_if! {
-            if #[cfg(vendor_modules)] {
-                self.vendor.as_ref()
-            } else {
-                None
-            }
-        }
+        self.vendor.as_ref()
     }
 
+    #[cfg(not(vendor_modules))]
+    fn vendor(&self) -> Option<&PathBuf> {
+        None
+    }
+
+    #[cfg(vendor_modules)]
     fn gki(&self) -> Option<&str> {
-        cfg_if::cfg_if! {
-            if #[cfg(vendor_modules)] {
-                self.gki.as_deref()
-            } else {
-                None
-            }
-        }
+        self.gki.as_deref()
     }
 
+    #[cfg(not(vendor_modules))]
+    fn gki(&self) -> Option<&str> {
+        None
+    }
+
+    #[cfg(device_assignment)]
     fn devices(&self) -> &[PathBuf] {
-        cfg_if::cfg_if! {
-            if #[cfg(device_assignment)] {
-                &self.devices
-            } else {
-                &[]
-            }
-        }
+        &self.devices
+    }
+
+    #[cfg(not(device_assignment))]
+    fn devices(&self) -> &[PathBuf] {
+        &[]
     }
 }
 
@@ -236,35 +236,35 @@
 }
 
 impl RunAppConfig {
+    #[cfg(multi_tenant)]
     fn extra_apks(&self) -> &[PathBuf] {
-        cfg_if::cfg_if! {
-            if #[cfg(multi_tenant)] {
-                &self.extra_apks
-            } else {
-                &[]
-            }
-        }
+        &self.extra_apks
     }
 
+    #[cfg(not(multi_tenant))]
+    fn extra_apks(&self) -> &[PathBuf] {
+        &[]
+    }
+
+    #[cfg(llpvm_changes)]
     fn instance_id(&self) -> Result<PathBuf, Error> {
-        cfg_if::cfg_if! {
-            if #[cfg(llpvm_changes)] {
-                Ok(self.instance_id.clone())
-            } else {
-                Err(anyhow!("LLPVM feature is disabled, --instance_id flag not supported"))
-            }
-        }
+        Ok(self.instance_id.clone())
     }
 
+    #[cfg(not(llpvm_changes))]
+    fn instance_id(&self) -> Result<PathBuf, Error> {
+        Err(anyhow!("LLPVM feature is disabled, --instance_id flag not supported"))
+    }
+
+    #[cfg(llpvm_changes)]
     fn set_instance_id(&mut self, instance_id_file: PathBuf) -> Result<(), Error> {
-        cfg_if::cfg_if! {
-            if #[cfg(llpvm_changes)] {
-                self.instance_id = instance_id_file;
-                Ok(())
-            } else {
-                Err(anyhow!("LLPVM feature is disabled, --instance_id flag not supported"))
-            }
-        }
+        self.instance_id = instance_id_file;
+        Ok(())
+    }
+
+    #[cfg(not(llpvm_changes))]
+    fn set_instance_id(&mut self, _: PathBuf) -> Result<(), Error> {
+        Err(anyhow!("LLPVM feature is disabled, --instance_id flag not supported"))
     }
 }
 
