diff --git a/src/metafiles.rs b/src/metafiles.rs
index 75ad0250..b8a2b4ee 100644
--- a/src/metafiles.rs
+++ b/src/metafiles.rs
@@ -2,3 +2,5 @@ mod cvs;
 pub use cvs::*;
 
 pub mod v1;
+
+pub mod binstall_v1;
diff --git a/src/metafiles/binstall_v1.rs b/src/metafiles/binstall_v1.rs
index e3f059f7..35e78ed8 100644
--- a/src/metafiles/binstall_v1.rs
+++ b/src/metafiles/binstall_v1.rs
@@ -1,15 +1,67 @@
-/*
-{
-    "name": "cargo-binstall",
-    "version_req": none,
-    "current_version": "0.10.0"
-    "source": {
-        "type": "Registry",
-        "url": "https://crates.io",
-     },
-     "target": none,
-     "bins": [
-         "cargo-binstall",
-      ],
+use compact_str::CompactString;
+use semver::Version;
+use serde::{Deserialize, Serialize};
+use url::Url;
+
+use crate::binstall::MetaData;
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct Entry {
+    pub name: CompactString,
+    pub version_req: CompactString,
+    pub current_version: Version,
+    pub source: Source,
+    pub target: CompactString,
+    pub bins: Vec<CompactString>,
+}
+impl Entry {
+    pub fn new(metadata: MetaData) -> Self {
+        let MetaData {
+            bins,
+            cvs:
+                super::CrateVersionSource {
+                    name,
+                    version,
+                    source,
+                },
+            version_req,
+            target,
+        } = metadata;
+
+        Self {
+            name: name.into(),
+            version_req: version_req.into(),
+            current_version: version,
+            source: source.into(),
+            target: target.into(),
+            bins,
+        }
+    }
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct Source {
+    source_type: CompactString,
+    url: Url,
+}
+
+impl From<super::Source> for Source {
+    fn from(src: super::Source) -> Self {
+        use super::Source::*;
+
+        match src {
+            Git(url) => Source {
+                source_type: "Git".into(),
+                url,
+            },
+            Path(url) => Source {
+                source_type: "Path".into(),
+                url,
+            },
+            Registry(url) => Source {
+                source_type: "Registry".into(),
+                url,
+            },
+        }
+    }
 }
- */