diff --git a/lbrynet/schema/baseschema.py b/lbrynet/schema/baseschema.py
new file mode 100644
index 000000000..b6eb857cb
--- /dev/null
+++ b/lbrynet/schema/baseschema.py
@@ -0,0 +1,15 @@
+import json
+import google.protobuf.json_format as json_pb  # pylint: disable=no-name-in-module
+from google.protobuf.message import Message  # pylint: disable=no-name-in-module,import-error
+
+
+class Schema(Message):
+    @classmethod
+    def load(cls, message):
+        raise NotImplementedError
+
+    @classmethod
+    def _load(cls, data, message):
+        if isinstance(data, dict):
+            data = json.dumps(data)
+        return json_pb.Parse(data, message)