diff --git a/plstackapi/core/serializers.py b/plstackapi/core/serializers.py
new file mode 100644
index 0000000..62ac271
--- /dev/null
+++ b/plstackapi/core/serializers.py
@@ -0,0 +1,93 @@
+from django.forms import widgets
+from rest_framework import serializers
+from models import *
+
+
+class SliceSerializer(serializers.HyperlinkedModelSerializer):
+
+    site = serializers.HyperlinkedRelatedField(view_name='site-detail')
+
+    class Meta:
+        model = Slice
+        fields = ('url',
+                  'name',
+                  'instantiation',
+                  'omf_friendly',
+                  'description',
+                  'slice_url',
+                  'site',
+                  'updated',
+                  'created')
+
+class SiteSerializer(serializers.HyperlinkedModelSerializer):
+
+    #Experimenting with whether to use ids, hyperlinks, or nested includes
+    #slices = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
+    #slices = serializers.RelatedField(many=True, read_only=True)
+    #slices = SliceSerializer(many=True)
+    slices = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='slice-detail')
+    deploymentNetworks = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='sitedeploymentnetwork-detail')
+
+    class Meta:
+        model = Site
+        fields = ('url',
+                  'name',
+                  'deploymentNetworks',
+                  'slices',
+                  'site_url',
+                  'enabled',
+                  'longitude',
+                  'latitude',
+                  'login_base',
+                  'is_public',
+                  'abbreviated_name',
+                  'updated',
+                  'created')
+
+class DeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
+
+    sites = serializers.HyperlinkedRelatedField(view_name='sitedeploymentnetwork-detail')
+    class Meta:
+        model = DeploymentNetwork
+        fields = ('url',
+                  'name',
+                  'sites'
+                 )
+
+class SiteDeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
+
+    site = serializers.HyperlinkedRelatedField(view_name='site-detail')
+    deploymentNetwork = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail')
+
+    class Meta:
+        model = SiteDeploymentNetwork
+        fields = ('url',
+                 'site',
+                 'deploymentNetwork')
+
+class SliverSerializer(serializers.ModelSerializer):
+    slice = serializers.RelatedField(read_only=True)
+    #slice = serializers.PrimaryKeyRelatedField(read_only=True)
+
+    class Meta:
+        model = Sliver
+        fields = ('id',
+                  'slice',
+                 'name')
+
+class NodeSerializer(serializers.ModelSerializer):
+
+    class Meta:
+        model = Node
+        fields = ('id',
+                 'name')
+
+
+serializerLookUp = { Site: SiteSerializer,
+                 Slice: SliceSerializer,
+                 Node: NodeSerializer,
+                 Sliver: SliverSerializer,
+                 DeploymentNetwork: DeploymentNetworkSerializer,
+                 SiteDeploymentNetwork: SiteDeploymentNetworkSerializer,
+                 None: None,
+                }
