diff --git a/xos/coreapi/apihelper.py b/xos/coreapi/apihelper.py
index 89d1545..9d9134c 100644
--- a/xos/coreapi/apihelper.py
+++ b/xos/coreapi/apihelper.py
@@ -6,6 +6,7 @@
 from protos import xos_pb2
 from google.protobuf.empty_pb2 import Empty
 
+from django.contrib.contenttypes.models import ContentType
 from django.contrib.auth import authenticate as django_authenticate
 from django.db.models import F,Q
 from core.models import *
@@ -98,6 +99,8 @@
         bases = [x for x in bases if issubclass(x, PlCoreBase) or issubclass(x, User)]
         p_obj.class_names = ",".join( [x.__name__ for x in bases] )
 
+        p_obj.self_content_type_id = ContentType.objects.get_for_model(obj).id
+
         return p_obj
 
     def protoToArgs(self, djangoClass, message):
diff --git a/xos/tools/apigen/protobuf.template.txt b/xos/tools/apigen/protobuf.template.txt
index 43afd39..060d218 100644
--- a/xos/tools/apigen/protobuf.template.txt
+++ b/xos/tools/apigen/protobuf.template.txt
@@ -53,6 +53,8 @@
       float {{ field.name }} = {{ loop.index }};
     {%- elif field.get_internal_type() == "GenericIPAddressField" %}
       string {{ field.name }} = {{ loop.index }};
+    {%- elif field.get_internal_type() == "OneToOneField" %}
+      int32 {{ field.name }}_id = {{ loop.index }};
     {%- else %}
       UNKNOWN {{ field.get_internal_type() }} {{ field.name }} = {{ loop.index }};
     {%- endif %}
@@ -62,6 +64,7 @@
     repeated int32 {{ ref.related_name }}_ids  = {{ loop.index+100 }} [(reverseForeignKey).modelName = "{{ ref.camel() }}"];
   {%- endfor %}
   string class_names = 201;
+  int32 self_content_type_id = 202;
 }
 
 message {{ object.camel() }}s {
diff --git a/xos/xos_client/xosapi/orm.py b/xos/xos_client/xosapi/orm.py
index bf59222..8b730a8 100644
--- a/xos/xos_client/xosapi/orm.py
+++ b/xos/xos_client/xosapi/orm.py
@@ -202,9 +202,9 @@
     def ansible_tag(self):
         return "%s_%s" % (self._wrapped_class.__class__.__name__, self.id)
 
-    @property
-    def self_content_type_id(self):
-        return getattr(self.stub, self._wrapped_class.__class__.__name__).content_type_id
+#    @property
+#    def self_content_type_id(self):
+#        return getattr(self.stub, self._wrapped_class.__class__.__name__).content_type_id
 
 class ORMQuerySet(list):
     """ Makes lists look like django querysets """
