diff --git a/src/trellis/proto/BUILD b/src/trellis/proto/BUILD
deleted file mode 100644
index 2cace6f..0000000
--- a/src/trellis/proto/BUILD
+++ /dev/null
@@ -1,11 +0,0 @@
-licenses(["notice"])
-
-proto_library(
-    name = "proto",
-    srcs = glob(["*.proto"]),
-    cc_api_version = 2,
-    compatible_with = ["//buildenv/target:appengine"],
-    deps = [
-        "//google/protobuf:duration",
-    ],
-)
diff --git a/src/trellis/proto/action_payload.proto b/src/trellis/proto/action_payload.proto
deleted file mode 100644
index 114b062..0000000
--- a/src/trellis/proto/action_payload.proto
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-// The data needed by the server to handle action recording. This information is
-// opaque to the client and will be the information that is round-tripped so the
-// server can properly handle the action. For the Not Interested In action, this
-// data will contain the ids needed to record that the user is not interested
-// in that particular topic or source.
-// NOTE: it is important to keep this to a bare minimum amount of data.
-message ActionPayload {
-  // Reserved fields for renderable unit extensions
-  // Please use CL numbers you own for extension numbers.
-  extensions 257605906;  // ActionPayloadData
-}
diff --git a/src/trellis/proto/action_request.proto b/src/trellis/proto/action_request.proto
deleted file mode 100644
index fb27d60..0000000
--- a/src/trellis/proto/action_request.proto
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-// Top level request message.
-message ActionRequest {
-  // Supported versions of request messages are specified as extensions to
-  // the top-level request message.  An enum is used to denote the expected
-  // extensions for this request.
-  enum RequestVersion {
-    UNKNOWN_ACTION_REQUEST_VERSION = 0;
-    FEED_UPLOAD_ACTION = 1;
-  }
-  optional RequestVersion request_version = 1;
-
-  extensions 1000;  // FeedActionRequest
-}
diff --git a/src/trellis/proto/action_response.proto b/src/trellis/proto/action_response.proto
deleted file mode 100644
index 706648f..0000000
--- a/src/trellis/proto/action_response.proto
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-// Top level response message.
-message ActionResponse {
-  // Supported versions of response messages are specified as extensions to
-  // the top-level response message.  An enum is used to denote the expected
-  // extensions for this response.
-  enum ResponseVersion {
-    UNKNOWN_ACTION_RESPONSE_VERSION = 0;
-    FEED_UPLOAD_ACTION_RESPONSE = 1;
-  }
-  optional ResponseVersion response_version = 1;
-
-  extensions 1000;  // FeedActionResponse
-}
diff --git a/src/trellis/proto/capability.proto b/src/trellis/proto/capability.proto
deleted file mode 100644
index e488299..0000000
--- a/src/trellis/proto/capability.proto
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-// Feature capability of either the client or the server.
-// Next ID: 20
-enum Capability {
-  UNKNOWN_CAPABILITY = 0;
-  // The client is capable of a basic UI.
-  BASE_UI = 1;
-
-  INFINITE_FEED = 5;
-  // Enable Dismiss command
-  DISMISS_COMMAND = 9;
-  // Enable Undo in Dismiss
-  UNDO_FOR_DISMISS_COMMAND = 10;
-  REDACTED_11 = 11;
-  // The client is only considered capable of supporting a minimal heirloomed
-  // feed.
-  HEIRLOOMED_FEED = 13;
-  // The client is capable of supporting sports features.
-  SPORTS_FEATURE = 14;
-  // The client is capable of supporting ads content.
-  PAID_CONTENT = 15;
-  // Enable open video command.
-  OPEN_VIDEO_COMMAND = 16;
-  REDACTED_17 = 17;
-  // Enable inline video autoplay.
-  INLINE_VIDEO_AUTOPLAY = 18;
-  // Enable the card menu.
-  CARD_MENU = 19;
-  reserved 2 to 4, 6 to 8, 12;
-}
diff --git a/src/trellis/proto/client_info.proto b/src/trellis/proto/client_info.proto
deleted file mode 100644
index b421e00..0000000
--- a/src/trellis/proto/client_info.proto
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-import "src/trellis/proto/display_info.proto";
-import "src/trellis/proto/version.proto";
-
-// Information about the client performing the request similar to a user-agent
-// string in HTTP.
-// Next ID: 10.
-message ClientInfo {
-  enum PlatformType {
-    UNKNOWN_PLATFORM = 0;
-    ANDROID = 1;
-    IOS = 2;
-  }
-
-  enum AppType {
-    CHROME = 3;
-    reserved 0, 1, 2, 4;
-  }
-
-  // The type of OS that the client is running.
-  optional PlatformType platform_type = 1;
-
-  // The version of the OS that the client is running.
-  optional Version platform_version = 2;
-
-  // The type of client app.
-  optional AppType app_type = 3;
-
-  // The version of the client app.
-  optional Version app_version = 4;
-
-  // A string identifying the language and region preferences of the client.
-  // Follows the BCP 47 format such as "en-US" or "fr-CA"
-  optional string locale = 5;
-
-  // The information about the screen of the client. This is repeated because
-  // there are some devices that might have multiple display screens.
-  // (Ex fold-able phones)
-  repeated DisplayInfo display_info = 6;
-
-  // Identifier of the user's device. For Android devices, contains a hash of
-  // the gaia email and android_id, which uniquely identifies the device for
-  // the user. Currently set by Android clients version 4.1 and later.
-  optional string client_instance_id = 7;
-
-  // An Android device level identifier used for advertising, required for
-  // conversion tracking, see more at:
-  // https://support.google.com/googleplay/android-developer/answer/6048248
-  optional string advertising_id = 8;
-
-  // Two-letter country code as detected by the device. On Android devices,
-  // this comes from GServices check-in which uses the SIM card MCC (mobile
-  // country code), with fallback to IP geo lookup.
-  optional string device_country = 9;
-}
diff --git a/src/trellis/proto/consistency_token.proto b/src/trellis/proto/consistency_token.proto
deleted file mode 100644
index 1818f45..0000000
--- a/src/trellis/proto/consistency_token.proto
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-// A consistency token.
-message ConsistencyToken {
-  // Indicates the min version of storage to read from.
-  optional bytes token = 1;
-}
diff --git a/src/trellis/proto/content_id.proto b/src/trellis/proto/content_id.proto
deleted file mode 100644
index ba8b7f8..0000000
--- a/src/trellis/proto/content_id.proto
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-// An identifier for a piece of content served by Now or delivered to the Now
-// client(s).
-// See [INTERNAL LINK] for the design of this feature.
-// ContentId comprises a unique key for all content. The client will never have
-// more than one piece of content with the same ContentID.
-message ContentId {
-  optional string content_domain = 1;
-
-  // The type of content this represents. Generally, this is somewhat redundant,
-  // as this ContentId proto will be embedded within a particular parent proto
-  // that implies its type. It is repeated here for the purpose of making
-  // ContentId fully self-contained, able to completely specify a piece of
-  // content's ID without additional context.
-  // Since Type is one of the components of content's uniqueness, it is safe
-  // and reasonable for two related pieces of content with different types
-  // (e.g. a card and its attached notification) to share the same id and
-  // content_domain, and to differ only in their type.  However, Type is **not**
-  // included when determing if two ContentIds are equivalent.
-  enum Type {
-    // Undefined type - DO NOT USE
-    TYPE_UNDEFINED = 0;
-    CARD = 1;
-    CLUSTER = 3;
-    // A feature, which is the indivisible unit of Feed content.
-    FEATURE = 4;
-    // A ContentId used only for identifying nodes in a tree structure.
-    TREE_STRUCTURE = 7;
-    // A ContentId for a collection.
-    COLLECTION = 8;
-    // A ContentId for a token, e.g. a NextPage token.
-    TOKEN = 9;
-
-    reserved 2, 5, 6;
-  }
-  // The type of content this represents
-  optional Type type = 2;
-
-  optional fixed64 id = 3;
-}
diff --git a/src/trellis/proto/data_operation.proto b/src/trellis/proto/data_operation.proto
deleted file mode 100644
index ab90636..0000000
--- a/src/trellis/proto/data_operation.proto
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-import "src/trellis/proto/feature.proto";
-import "src/trellis/proto/in_place_update_handle.proto";
-import "src/trellis/proto/payload_metadata.proto";
-import "src/trellis/proto/render_data.proto";
-import "src/trellis/proto/templates.proto";
-import "src/trellis/proto/token.proto";
-
-// An extensible operation to change the state of data on the client.
-message DataOperation {
-  // Next tag: 8
-
-  enum Operation {
-    UNKNOWN_OPERATION = 0;
-    // Remove all stored content of all types
-    CLEAR_ALL = 1;
-    // Update content if it exists, else append to the bottom of the feed
-    UPDATE_OR_APPEND = 2;
-    // Remove the item from the stream
-    REMOVE = 3;
-  }
-
-  // The operation to perform on the data.
-  optional Operation operation = 1;
-
-  // Data common to all payload types.
-  optional PayloadMetadata metadata = 2;
-
-  // The actual data being supplied.
-  oneof payload {
-    // A stream UI level feature such as a cluster or card.
-    Feature feature = 3;
-
-    // A token, capable of making a next page request.
-    Token next_page_token = 5;
-
-    // Information to help render the content in the response.
-    RenderData render_data = 6;
-
-    // A handle for updating one or more pieces of content in place.
-    InPlaceUpdateHandle in_place_update_handle = 8;
-
-    // A collection of templates.
-    Templates templates = 4 [deprecated = true];
-  }
-}
diff --git a/src/trellis/proto/display_info.proto b/src/trellis/proto/display_info.proto
deleted file mode 100644
index eaab034..0000000
--- a/src/trellis/proto/display_info.proto
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-// The information about the client's screen.
-// Next id: 4
-message DisplayInfo {
-  // Density of the screen in physical pixels per density independent pixel
-  // (DIP); see:
-  // http://developer.android.com/reference/android/util/DisplayMetrics.html#density
-  optional float screen_density = 1;
-
-  // The width of the screen in pixels.
-  optional uint32 screen_width_in_pixels = 2;
-
-  // The height of the screen in pixels.
-  optional uint32 screen_height_in_pixels = 3;
-}
diff --git a/src/trellis/proto/expiration_info.proto b/src/trellis/proto/expiration_info.proto
deleted file mode 100644
index 485031b..0000000
--- a/src/trellis/proto/expiration_info.proto
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-import "google/protobuf/duration.proto";
-
-
-/* Information about whether and when a feature should expire and be removed
- * from Discover. */
-message ExpirationInfo {
-  // Whether the feature can expire.
-  optional bool should_expire = 1;
-
-  // Indicates how long after this response was received the client should wait
-  // before expiring (and hiding) this content. This expiration time is a best
-  // effort, and should not be done while the content is visible on screen.
-  // There are no penalties with showing the content after the expiry, though
-  // some uses of this API (ads in particular) do have SLA's about how often
-  // items can be shown after expiration.
-  optional google.protobuf.Duration expiration_duration = 2;
-}
diff --git a/src/trellis/proto/feature.proto b/src/trellis/proto/feature.proto
deleted file mode 100644
index 688762f..0000000
--- a/src/trellis/proto/feature.proto
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-import "src/trellis/proto/content_id.proto";
-import "src/trellis/proto/expiration_info.proto";
-
-// Features define both the structure and content found in the Stream.
-message Feature {
-  // The ContentId identifying the parent feature for this feature.
-  optional ContentId parent_id = 1;
-
-  // Enum denoting which extension containing the renderable data is associated
-  // with this Feature.
-  enum RenderableUnit {
-    UNKNOWN_RENDERABLE_UNIT = 0;
-    STREAM = 1;
-    CONTENT = 3;
-    CLUSTER = 4;
-    REDACTED_10 = 10;
-    REDACTED_11 = 11;
-    reserved 2, 5, 6, 7, 8, 9;
-  }
-  optional RenderableUnit renderable_unit = 2;
-
-  // Indicates whether this feature should expire, and additional metadata
-  // necessariy to handle expiration. Note that clients may not support
-  // expiration of every type of feature.
-  optional ExpirationInfo expiration_info = 3;
-
-  extensions 185431437;  // Stream
-  extensions 185431438;  // Card
-  extensions 185431439;  // Content
-  extensions 190812910;  // Cluster
-  extensions 194964015;  // Token
-  extensions 286406442;  // REDACTED
-  extensions 286406443;  // REDACTED
-
-  reserved 246375740, 274598443, 274598444, 277068786;
-}
diff --git a/src/trellis/proto/feed_action.proto b/src/trellis/proto/feed_action.proto
deleted file mode 100644
index 3aba890..0000000
--- a/src/trellis/proto/feed_action.proto
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-import "src/trellis/proto/action_payload.proto";
-import "src/trellis/proto/content_id.proto";
-
-message FeedAction {
-  // The Id for the content that this action was triggered on.
-  optional ContentId content_id = 1;
-  // Additional logging data that is on a per-action level
-  optional ActionPayload action_payload = 2;
-  // Client-generated data that pertains to the action.
-  optional ClientData client_data = 3;
-  // Next Id: 7
-
-  // The data the client provides to the server.
-  message ClientData {
-    // When the action was recorded on the client
-    optional int64 timestamp_seconds = 1;
-
-    // A monotonically-increasing sequence number that increments per
-    // user + device. Used in experiments to measure action loss between client
-    // and server.
-    optional int64 sequence_number = 2;
-
-    // The duration for the action in milliseconds. In case of view actions this
-    // is the duration for which the content is considered "viewed".
-    optional int64 duration_ms = 3;
-  }
-  reserved 4, 5, 6;
-}
diff --git a/src/trellis/proto/feed_action_request.proto b/src/trellis/proto/feed_action_request.proto
deleted file mode 100644
index 049201a..0000000
--- a/src/trellis/proto/feed_action_request.proto
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-import "src/trellis/proto/action_request.proto";
-import "src/trellis/proto/consistency_token.proto";
-import "src/trellis/proto/feed_action.proto";
-
-// Request to upload new actions to the Actions Endpoint
-message FeedActionRequest {
-  extend ActionRequest {
-    optional FeedActionRequest feed_action_request = 1000;
-  }
-  // Data related to recordable actions performed on the client.
-  repeated FeedAction feed_action = 1;
-  // Token used to write to the same storage.
-  optional ConsistencyToken consistency_token = 2;
-}
diff --git a/src/trellis/proto/feed_action_response.proto b/src/trellis/proto/feed_action_response.proto
deleted file mode 100644
index 3960681..0000000
--- a/src/trellis/proto/feed_action_response.proto
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-import "src/trellis/proto/action_response.proto";
-import "src/trellis/proto/consistency_token.proto";
-
-// A feed action response returns when an action has been successfully uploaded
-// to the server.
-message FeedActionResponse {
-  extend ActionResponse {
-    optional FeedActionResponse feed_action_response = 1000;
-  }
-  // Token used to read or write to the same storage.
-  optional ConsistencyToken consistency_token = 1;
-}
diff --git a/src/trellis/proto/feed_id.proto b/src/trellis/proto/feed_id.proto
deleted file mode 100644
index db57fcf..0000000
--- a/src/trellis/proto/feed_id.proto
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-// This proto is used to uniquely identify a Feed of cards.
-// The main use case is for the paginated feed, storing multiple
-// feeds on the server, and needing to identify them individually.
-// It is an empty extension holder because the client should not ever know
-// or care what's in the FeedId, and so we can change the definition
-// of what a FeedId for the server without worrying about users possibly
-// looking into the implementation details.
-message FeedId {
-  extensions 1 to 6;
-}
diff --git a/src/trellis/proto/feed_query.proto b/src/trellis/proto/feed_query.proto
deleted file mode 100644
index e942f24..0000000
--- a/src/trellis/proto/feed_query.proto
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-import "src/trellis/proto/token.proto";
-
-message FeedQuery {
-  enum RequestReason {
-    // Bucket for any not listed. Should not be used (prefer adding a new
-    // request reason)
-    UNKNOWN_REQUEST_REASON = 0;
-
-    // App is manually triggering a request, outside of scheduling a request.
-    // Should be used rarely.
-    MANUAL_REFRESH = 1;
-
-    // Host wants a request to refresh content.
-    SCHEDULED_REFRESH = 2;
-
-    // Host wants a request to load more content.
-    NEXT_PAGE_SCROLL = 3;
-
-    REDACTED_4 = 4;
-
-    // Host wants to update content in place.
-    IN_PLACE_UPDATE = 5;
-  }
-
-  // The reason the query is being initiated.
-  optional RequestReason reason = 1;
-
-  // A collection of Token messages, wrapped in a message so it can be used in a
-  // oneof.
-  message Tokens {
-    repeated Token tokens = 1;
-  }
-
-  oneof token {
-    // The token for requesting the next page of Feed content, to be used with
-    // reason = NEXT_PAGE_SCROLL.
-    Token next_page_token = 3;
-    // Tokens from InPlaceUpdateHandle for content to update in place, if
-    // reason = IN_PLACE_UPDATE.
-    Tokens in_place_update_tokens = 5;
-  }
-
-  reserved 2;
-}
diff --git a/src/trellis/proto/feed_request.proto b/src/trellis/proto/feed_request.proto
deleted file mode 100644
index f83f0fc..0000000
--- a/src/trellis/proto/feed_request.proto
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-import "src/trellis/proto/capability.proto";
-import "src/trellis/proto/client_info.proto";
-import "src/trellis/proto/consistency_token.proto";
-import "src/trellis/proto/feed_id.proto";
-import "src/trellis/proto/feed_query.proto";
-import "src/trellis/proto/request.proto";
-
-// Request to fetch new data for the feed
-message FeedRequest {
-  extend Request {
-    optional FeedRequest feed_request = 1000;
-  }
-  // Information about the client making the request.
-  optional ClientInfo client_info = 1;
-
-  // Query parameters to fetch feed data.
-  optional FeedQuery feed_query = 2;
-
-  // The list of client supported capabilities.
-  repeated Capability client_capability = 4;
-
-  // Token used to read from/write to the same storage.
-  optional ConsistencyToken consistency_token = 5;
-
-  // Created on the server and used by the client to identify the feed when
-  // clients will store multiple infinite feeds.
-  // See [INTERNAL LINK]
-  repeated FeedId feed_ids_to_preserve = 12;
-
-  reserved 3, 13;
-}
diff --git a/src/trellis/proto/feed_response.proto b/src/trellis/proto/feed_response.proto
deleted file mode 100644
index 52c63af..0000000
--- a/src/trellis/proto/feed_response.proto
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-import "src/trellis/proto/capability.proto";
-import "src/trellis/proto/data_operation.proto";
-import "src/trellis/proto/feed_id.proto";
-import "src/trellis/proto/response.proto";
-import "src/trellis/proto/response_status_code.proto";
-
-// A feed response is  a series of directives to manipulate backend storage,
-// similar to database commands.  Individual data operations contain all the
-// necessary information to manipulate the client state.
-message FeedResponse {
-  extend Response {
-    optional FeedResponse feed_response = 1000;
-  }
-  // DataOperations are applied on the client in order in which they are
-  // received.
-  repeated DataOperation data_operation = 1;
-  // Metadata for the entire FeedResponse.
-  optional FeedResponseMetadata feed_response_metadata = 2;
-
-  // The list of server-response supported capabilities.
-  repeated Capability server_capabilities = 3;
-
-  // The status code for this response.
-  optional ResponseStatusCode response_status_code = 4;
-}
-
-// Data which is relevant for the whole response made by the server.
-message FeedResponseMetadata {
-  // Time at which the server fulfilled this response. This is needed as client
-  // cannot be the source of truth.
-  optional int64 response_time_ms = 1;
-
-  // Created on the server and used by the client to identify the feed when
-  // clients will store multiple infinite feeds.
-  // See [INTERNAL LINK]
-  optional FeedId feed_id = 3;
-
-  reserved 2;
-}
diff --git a/src/trellis/proto/in_place_update_handle.proto b/src/trellis/proto/in_place_update_handle.proto
deleted file mode 100644
index 7a99603..0000000
--- a/src/trellis/proto/in_place_update_handle.proto
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-import "google/protobuf/duration.proto";
-import "src/trellis/proto/token.proto";
-
-// InPlaceUpdateHandle is a handle for the client to send to the server in order
-// to update content in-place.
-message InPlaceUpdateHandle {
-  // Indicates how long after this response ws received the client should wait
-  // before sending the token back to the server. It is not an error to send the
-  // token earlier, but in that case the server may just replace the handle with
-  // and an updated use_after and the same token.
-  optional google.protobuf.Duration use_after = 1;
-
-  // Opaque token to use in a request for the server to send updated versions of
-  // its associated content.
-  optional Token token = 2;
-}
diff --git a/src/trellis/proto/next_page_token.proto b/src/trellis/proto/next_page_token.proto
deleted file mode 100644
index 210f9da..0000000
--- a/src/trellis/proto/next_page_token.proto
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-import "src/trellis/proto/token.proto";
-
-message NextPageToken {
-  extend Token {
-    optional NextPageToken next_page_token_extension = 1002;
-  }
-  optional bytes next_page_token = 1;
-}
diff --git a/src/trellis/proto/payload_metadata.proto b/src/trellis/proto/payload_metadata.proto
deleted file mode 100644
index b0aa418..0000000
--- a/src/trellis/proto/payload_metadata.proto
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-import "src/trellis/proto/content_id.proto";
-
-// Metadata common to all payloads in a DataOperation.
-message PayloadMetadata {
-  // The unique identifier of the payload.
-  optional ContentId content_id = 1;
-
-  reserved 2, 3, 4, 5;
-}
diff --git a/src/trellis/proto/render_data.proto b/src/trellis/proto/render_data.proto
deleted file mode 100644
index f1f1288..0000000
--- a/src/trellis/proto/render_data.proto
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-// Contains data to use during client-side rendering of the response, like
-// templates and themes.
-message RenderData {
-  // Enum denoting which extension contains the render data.
-  enum RenderDataType {
-    UNKNOWN_RENDER_DATA_TYPE = 0;
-    ELEMENTS = 1;
-  }
-  optional RenderDataType render_data_type = 1;
-
-  extensions 1000;  // ElementsRenderData
-}
diff --git a/src/trellis/proto/request.proto b/src/trellis/proto/request.proto
deleted file mode 100644
index ff455af..0000000
--- a/src/trellis/proto/request.proto
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-// Top level request message.
-message Request {
-  // Supported versions of request messages are specified as extensions to
-  // the top-level request message.  An enum is used to denote the expected
-  // extensions for this request.
-  enum RequestVersion {
-    UNKNOWN_REQUEST_VERSION = 0;
-    FEED_QUERY = 1;
-  }
-  optional RequestVersion request_version = 1;
-
-  // Please use CL numbers you own for extension numbers.
-  extensions 1000;  // FeedRequest
-}
diff --git a/src/trellis/proto/response.proto b/src/trellis/proto/response.proto
deleted file mode 100644
index bffdb6b..0000000
--- a/src/trellis/proto/response.proto
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-// Top level response message.
-message Response {
-  // Supported versions of response messages are specified as extensions to
-  // the top-level response message.  An enum is used to denote the expected
-  // extensions for this response.
-  enum ResponseVersion {
-    UNKNOWN_RESPONSE_VERSION = 0;
-    FEED_RESPONSE = 1;
-  }
-  optional ResponseVersion response_version = 1;
-
-  // Please use CL numbers you own for extension numbers.
-  extensions 1000;  // FeedResponse
-}
diff --git a/src/trellis/proto/response_status_code.proto b/src/trellis/proto/response_status_code.proto
deleted file mode 100644
index bbbe9ab..0000000
--- a/src/trellis/proto/response_status_code.proto
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-// Status for the Feed response.
-enum ResponseStatusCode {
-  UNKNOWN_STATUS_CODE = 0;
-
-  // Eligible for feed and no errors encountered.
-  STATUS_OK = 1;
-
-  // Ineligible for Feed.
-  STATUS_INELIGIBLE_FOR_FEED = 2;
-
-  // No cards.
-  STATUS_NO_CONTENT_RETURNED = 3;
-}
diff --git a/src/trellis/proto/stream_structure.proto b/src/trellis/proto/stream_structure.proto
deleted file mode 100644
index e8e7201..0000000
--- a/src/trellis/proto/stream_structure.proto
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-import "src/trellis/proto/feature.proto";
-
-// Top level feature which shows a stream of cards.  Provides any UI information
-// which may be needed in order to render the stream of cards.
-message Stream {
-  extend Feature {
-    optional Stream stream_extension = 185431437;
-  }
-}
-
-// Feature which represents a cluster in a Stream. May have a Card or Content
-// as children.
-// TODO Determine if Clusters can be removed.
-message Cluster {
-  extend Feature {
-    optional Cluster cluster_extension = 190812910;
-  }
-
-  // Empty for now as we don't support any custom information.
-}
-
-// Feature which represents a full card in a Stream.  Allows metadata to be sent
-// to describe how to render the card.
-message Card {
-  extend Feature {
-    optional Card card_extension = 185431438;
-  }
-}
-
-// Feature which is able to show actual content in a stream. This could be
-// inside or outside a card. Actual data on what to display will be sent on an
-// extension.
-message Content {
-  extend Feature {
-    optional Content content_extension = 185431439;
-  }
-
-  enum Type {
-    UNKNOWN_CONTENT = 0;
-    XUIKIT = 1;
-  }
-  optional Type type = 1;
-
-  optional bool is_ad = 3;
-
-  extensions 1000;  // ElementsContent
-
-  reserved 2;
-}
diff --git a/src/trellis/proto/templates.proto b/src/trellis/proto/templates.proto
deleted file mode 100644
index ed2ba75..0000000
--- a/src/trellis/proto/templates.proto
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-// Templates provide a way to separate formatting from content.
-// Deprecated: use RenderData instead.
-message Templates {
-  option deprecated = true;
-
-  // Enum denoting which extension contains template data.
-  enum TemplateType {
-    UNKNOWN_TEMPLATE_TYPE = 0;
-    ELEMENTS = 1;
-  }
-  optional TemplateType template_type = 1;
-
-  extensions 264680549;  // ElementsTemplates
-}
diff --git a/src/trellis/proto/token.proto b/src/trellis/proto/token.proto
deleted file mode 100644
index 86b60c9..0000000
--- a/src/trellis/proto/token.proto
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-import "src/trellis/proto/content_id.proto";
-
-// A structure containing client-opaque data relating to a request.
-message Token {
-  // The ContentId identifying the parent for this feature. Needed for tokens
-  // used in a data operation.
-  optional ContentId parent_id = 2;
-
-  extensions 1001;  // REDACTED
-  extensions 1002;  // NextPageToken
-  extensions 1003;  // InPlaceUpdateToken
-
-  reserved 1, 194964015;
-}
diff --git a/src/trellis/proto/version.proto b/src/trellis/proto/version.proto
deleted file mode 100644
index 8c1d12f..0000000
--- a/src/trellis/proto/version.proto
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2020 The Feed Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto2";
-
-package feedwire;
-
-option optimize_for=LITE_RUNTIME;
-
-// Specification of an application or OS version.
-// A version string typically looks like: 'major.minor.build.revision'
-message Version {
-  optional int32 major = 1;
-  optional int32 minor = 2;
-  optional int32 build = 3;
-  optional int32 revision = 4;
-
-  // The CPU architecture that the native libraries support
-  enum Architecture {
-    UNKNOWN_ARCHITECTURE = 0;
-    ARM = 1;
-    ARM64 = 2;
-    MIPS = 3;
-    MIPS64 = 4;
-    X86 = 5;
-    X86_64 = 6;
-  }
-  optional Architecture architecture = 5;
-
-  // The release stage of the build
-  enum BuildType {
-    UNKNOWN_BUILD_TYPE = 0;
-    DEV = 1;
-    ALPHA = 2;
-    BETA = 3;
-    RELEASE = 4;
-  }
-  optional BuildType build_type = 6;
-
-  // Specific to Android OS versions. Specifies the API version that the OS
-  // supports.
-  optional int32 api_version = 7;
-}
