diff --git a/proto/certificate.proto b/proto/v1/certificate.proto
similarity index 100%
rename from proto/certificate.proto
rename to proto/v1/certificate.proto
diff --git a/proto/claim.proto b/proto/v1/claim.proto
similarity index 100%
rename from proto/claim.proto
rename to proto/v1/claim.proto
diff --git a/proto/fee.proto b/proto/v1/fee.proto
similarity index 100%
rename from proto/fee.proto
rename to proto/v1/fee.proto
diff --git a/proto/metadata.proto b/proto/v1/metadata.proto
similarity index 100%
rename from proto/metadata.proto
rename to proto/v1/metadata.proto
diff --git a/proto/signature.proto b/proto/v1/signature.proto
similarity index 100%
rename from proto/signature.proto
rename to proto/v1/signature.proto
diff --git a/proto/source.proto b/proto/v1/source.proto
similarity index 100%
rename from proto/source.proto
rename to proto/v1/source.proto
diff --git a/proto/stream.proto b/proto/v1/stream.proto
similarity index 100%
rename from proto/stream.proto
rename to proto/v1/stream.proto
diff --git a/proto/v2/channel.proto b/proto/v2/channel.proto
new file mode 100644
index 0000000..db92a2b
--- /dev/null
+++ b/proto/v2/channel.proto
@@ -0,0 +1,7 @@
+syntax = "proto3";
+
+package pb;
+
+message Channel {
+    bytes public_key = 1;
+}
diff --git a/proto/v2/claim.proto b/proto/v2/claim.proto
new file mode 100644
index 0000000..3e7b6e1
--- /dev/null
+++ b/proto/v2/claim.proto
@@ -0,0 +1,18 @@
+syntax = "proto3";
+
+package pb;
+
+import "stream.proto";
+import "channel.proto";
+
+message Claim {
+    enum Type {
+        UNKNOWN = 0;
+        STREAM = 1;
+        CHANNEL = 2;
+    }
+
+    Type type = 1; // do we need this?
+    Stream stream = 2;
+    Channel channel = 3;
+}
diff --git a/proto/v2/fee.proto b/proto/v2/fee.proto
new file mode 100644
index 0000000..9ecdbf8
--- /dev/null
+++ b/proto/v2/fee.proto
@@ -0,0 +1,16 @@
+syntax = "proto3";
+
+package pb;
+
+message Fee {
+    enum Currency {
+        UNKNOWN = 0;
+        LBC = 1;
+        BTC = 2;
+        USD = 3;
+    }
+
+    Currency currency = 1;
+    bytes address = 2;
+    float amount = 3;
+}
diff --git a/proto/v2/file.proto b/proto/v2/file.proto
new file mode 100644
index 0000000..4cc52d1
--- /dev/null
+++ b/proto/v2/file.proto
@@ -0,0 +1,8 @@
+syntax = "proto3";
+
+package pb;
+
+message File {
+    string name = 1;
+    uint64 size = 2;
+}
diff --git a/proto/v2/stream.proto b/proto/v2/stream.proto
new file mode 100644
index 0000000..90a1485
--- /dev/null
+++ b/proto/v2/stream.proto
@@ -0,0 +1,30 @@
+syntax = "proto3";
+
+package pb;
+
+import "fee.proto";
+import "file.proto";
+
+message Stream {
+    bytes hash = 1;
+    string language = 2;
+    string title = 3;
+    string author = 4;
+    string description = 5;
+    string media_type = 6;
+    string license = 7;
+    File file = 8;
+
+    Fee fee = 16;
+    string license_url = 17;
+    string thumbnail = 18;
+    string preview = 19;
+    bool nsfw = 20;
+    uint32 duration = 21;
+    Timestamp release_time = 22;
+}
+
+message Timestamp {
+    sint64 epoch_seconds = 1;
+    sint32 bc_year = 2;
+}
\ No newline at end of file