diff --git a/README.md b/README.md
new file mode 100644
index 0000000..eb28e94
--- /dev/null
+++ b/README.md
@@ -0,0 +1,6 @@
+# Virtualization
+
+This repository contains userspace services related to running virtual machines on Android,
+especially protected virtual machines. See the
+[getting started documentation](docs/getting_started/index.md) and
+[Microdroid README](microdroid/README.md) for more information.
diff --git a/microdroid/microdroid.json b/microdroid/microdroid.json
index fbbee29..b1ef86a 100644
--- a/microdroid/microdroid.json
+++ b/microdroid/microdroid.json
@@ -5,23 +5,23 @@
       "partitions": [
         {
           "label": "boot_a",
-          "path": "/apex/com.android.virt/etc/fs/microdroid_boot-5.10.img"
+          "paths": ["/apex/com.android.virt/etc/fs/microdroid_boot-5.10.img"]
         },
         {
           "label": "vendor_boot_a",
-          "path": "/apex/com.android.virt/etc/fs/microdroid_vendor_boot-5.10.img"
+          "paths": ["/apex/com.android.virt/etc/fs/microdroid_vendor_boot-5.10.img"]
         },
         {
           "label": "vbmeta_a",
-          "path": "/apex/com.android.virt/etc/fs/microdroid_vbmeta.img"
+          "paths": ["/apex/com.android.virt/etc/fs/microdroid_vbmeta.img"]
         },
         {
           "label": "vbmeta_system_a",
-          "path": "/apex/com.android.virt/etc/fs/microdroid_vbmeta_system.img"
+          "paths": ["/apex/com.android.virt/etc/fs/microdroid_vbmeta_system.img"]
         },
         {
           "label": "super",
-          "path": "/apex/com.android.virt/etc/fs/microdroid_super.img"
+          "paths": ["/apex/com.android.virt/etc/fs/microdroid_super.img"]
         }
       ],
       "writable": false
@@ -30,7 +30,7 @@
       "partitions": [
         {
           "label": "uboot_env",
-          "path": "/apex/com.android.virt/etc/uboot_env.img"
+          "paths": ["/apex/com.android.virt/etc/uboot_env.img"]
         }
       ],
       "writable": false
diff --git a/virtualizationservice/src/payload.rs b/virtualizationservice/src/payload.rs
index 19a6d9f..aaf43e4 100644
--- a/virtualizationservice/src/payload.rs
+++ b/virtualizationservice/src/payload.rs
@@ -102,8 +102,7 @@
     // put metadata at the first partition
     let mut partitions = vec![Partition {
         label: String::from("metadata"),
-        path: Some(metadata_path),
-        paths: vec![],
+        paths: vec![metadata_path],
         writable: false,
     }];
 
@@ -117,9 +116,9 @@
 
         if make_filler(size, &filler_path)? {
             filler_count += 1;
-            Ok(Partition { label, path: None, paths: vec![path, filler_path], writable: false })
+            Ok(Partition { label, paths: vec![path, filler_path], writable: false })
         } else {
-            Ok(Partition { label, path: Some(path), paths: vec![], writable: false })
+            Ok(Partition { label, paths: vec![path], writable: false })
         }
     };
     for (i, apex) in apexes.iter().enumerate() {
diff --git a/vmconfig/src/lib.rs b/vmconfig/src/lib.rs
index e5c8e1b..7b0d2a5 100644
--- a/vmconfig/src/lib.rs
+++ b/vmconfig/src/lib.rs
@@ -121,9 +121,6 @@
     pub label: String,
     /// The filename of the partition image.
     #[serde(default)]
-    pub path: Option<PathBuf>,
-    /// The filename of the partition image.
-    #[serde(default)]
     pub paths: Vec<PathBuf>,
     /// Whether the partition should be writable.
     #[serde(default)]
@@ -132,26 +129,15 @@
 
 impl Partition {
     fn to_parcelable(&self) -> Result<AidlPartition> {
-        if !self.paths.is_empty() {
-            if self.path.is_some() {
-                bail!("Partition {} contains both path/paths", &self.label);
-            }
-            let images = self
-                .paths
-                .iter()
-                .map(|path| open_parcel_file(&path, self.writable))
-                .collect::<Result<Vec<_>, _>>()?;
-            Ok(AidlPartition { images, writable: self.writable, label: self.label.to_owned() })
-        } else {
-            let path = self.path.as_ref().ok_or_else(|| {
-                Error::msg(format!("Partition {} doesn't set path/paths", &self.label))
-            })?;
-            Ok(AidlPartition {
-                images: vec![open_parcel_file(&path, self.writable)?],
-                writable: self.writable,
-                label: self.label.to_owned(),
-            })
+        if self.paths.is_empty() {
+            bail!("Partition {} contains no paths", &self.label);
         }
+        let images = self
+            .paths
+            .iter()
+            .map(|path| open_parcel_file(&path, self.writable))
+            .collect::<Result<Vec<_>, _>>()?;
+        Ok(AidlPartition { images, writable: self.writable, label: self.label.to_owned() })
     }
 }
 
