Merge branch 'master' of ssh://git.planet-lab.org/git/plstackapi into observer3.0
authorSapan Bhatia <gwsapan@gmail.com>
Wed, 16 Jul 2014 04:17:33 +0000 (00:17 -0400)
committerSapan Bhatia <gwsapan@gmail.com>
Wed, 16 Jul 2014 04:17:33 +0000 (00:17 -0400)
Conflicts:
planetstack/core/fixtures/demo_data.json
planetstack/core/fixtures/initial_data.json
planetstack/core/models/plcorebase.py
planetstack/observer/event_loop.py
planetstack/observer/event_manager.py
planetstack/observer/steps/garbage_collector.py
planetstack/observer/syncstep.py

177 files changed:
Makefile
opencloud.spec
planetstack/apigen/api.template.py
planetstack/apigen/modelgen
planetstack/apigen/simple.template.txt
planetstack/cassandra/__init__.py [new file with mode: 0644]
planetstack/cassandra/admin.py [new file with mode: 0644]
planetstack/cassandra/models.py [new file with mode: 0644]
planetstack/core/acl.py [new file with mode: 0644]
planetstack/core/admin.py
planetstack/core/context_processors.py [new file with mode: 0644]
planetstack/core/dashboard/__init__.py [moved from planetstack/core/plus/__init__.py with 100% similarity]
planetstack/core/dashboard/sites.py [moved from planetstack/core/plus/sites.py with 62% similarity]
planetstack/core/dashboard/views/__init__.py [new file with mode: 0644]
planetstack/core/dashboard/views/analytics.py [new file with mode: 0644]
planetstack/core/dashboard/views/cdn.py [new file with mode: 0644]
planetstack/core/dashboard/views/customize.py [new file with mode: 0644]
planetstack/core/dashboard/views/home.py [new file with mode: 0644]
planetstack/core/dashboard/views/interactions.py [new file with mode: 0644]
planetstack/core/dashboard/views/shell.py [new file with mode: 0644]
planetstack/core/dashboard/views/simulator.py [new file with mode: 0644]
planetstack/core/dashboard/views/tenant.py [new file with mode: 0644]
planetstack/core/dashboard/views/test.py [new file with mode: 0644]
planetstack/core/dashboard/views/view_common.py [new file with mode: 0644]
planetstack/core/fixtures/demo_data.json
planetstack/core/fixtures/initial_data.json
planetstack/core/models/__init__.py
planetstack/core/models/dashboard.py [new file with mode: 0644]
planetstack/core/models/deployment.py [deleted file]
planetstack/core/models/image.py
planetstack/core/models/node.py
planetstack/core/models/plcorebase.py
planetstack/core/models/site.py
planetstack/core/models/sliver.py
planetstack/core/models/user.py
planetstack/core/models/userdeployments.py [new file with mode: 0644]
planetstack/core/plus/views.py [deleted file]
planetstack/core/static/img/bg_left_white.gif [new file with mode: 0644]
planetstack/core/static/page_analytics.js
planetstack/core/static/planetstack.css
planetstack/core/static/planetstack_graphs.js
planetstack/core/static/shell/constants.js [new file with mode: 0644]
planetstack/core/static/shell/object_id.js [new file with mode: 0644]
planetstack/core/static/shell/opencloud.js [new file with mode: 0644]
planetstack/core/static/shell/opencloud_shell.css [new file with mode: 0644]
planetstack/core/static/shell/opencloud_shell.js [new file with mode: 0644]
planetstack/core/static/shell/shell_utils.js [new file with mode: 0644]
planetstack/core/static/shell/tokens.js [new file with mode: 0644]
planetstack/core/static/shell/utils.js [new file with mode: 0644]
planetstack/core/tests.py [new file with mode: 0644]
planetstack/core/xoslib/README [new file with mode: 0644]
planetstack/core/xoslib/__init__.py [new file with mode: 0644]
planetstack/core/xoslib/dashboards/gentle.html [new file with mode: 0644]
planetstack/core/xoslib/dashboards/helloworld.html [new file with mode: 0644]
planetstack/core/xoslib/dashboards/index.html [new file with mode: 0644]
planetstack/core/xoslib/dashboards/sliceEditor.html [new file with mode: 0644]
planetstack/core/xoslib/dashboards/sliverListTest.html [new file with mode: 0644]
planetstack/core/xoslib/dashboards/xosDeveloper.html [new file with mode: 0644]
planetstack/core/xoslib/dashboards/xosDeveloper_datatables.html [new file with mode: 0644]
planetstack/core/xoslib/dashboards/xsh.html [new file with mode: 0644]
planetstack/core/xoslib/methods/__init__.py [new file with mode: 0644]
planetstack/core/xoslib/methods/sliceplus.py [new file with mode: 0644]
planetstack/core/xoslib/objects/__init__.py [new file with mode: 0644]
planetstack/core/xoslib/objects/sliceplus.py [new file with mode: 0644]
planetstack/core/xoslib/static/css/sliceEditor.css [new file with mode: 0644]
planetstack/core/xoslib/static/css/xosDeveloper.css [new file with mode: 0644]
planetstack/core/xoslib/static/js/gentle.js [new file with mode: 0644]
planetstack/core/xoslib/static/js/helloworld.js [new file with mode: 0644]
planetstack/core/xoslib/static/js/sliceEditor.js [new file with mode: 0644]
planetstack/core/xoslib/static/js/sliverListTest.js [new file with mode: 0644]
planetstack/core/xoslib/static/js/vendor/ICanHaz.min.js [new file with mode: 0644]
planetstack/core/xoslib/static/js/vendor/backbone-min.js [new file with mode: 0644]
planetstack/core/xoslib/static/js/vendor/backbone-tastypie.js [new file with mode: 0644]
planetstack/core/xoslib/static/js/vendor/backbone.babysitter.js [new file with mode: 0644]
planetstack/core/xoslib/static/js/vendor/backbone.js [new file with mode: 0644]
planetstack/core/xoslib/static/js/vendor/backbone.marionette.js [new file with mode: 0644]
planetstack/core/xoslib/static/js/vendor/backbone.marionette.min.js [new file with mode: 0644]
planetstack/core/xoslib/static/js/vendor/backbone.wreqr.js [new file with mode: 0644]
planetstack/core/xoslib/static/js/vendor/underscore-min.js [new file with mode: 0644]
planetstack/core/xoslib/static/js/xosDeveloper.js [new file with mode: 0644]
planetstack/core/xoslib/static/js/xosDeveloper_datatables.js [new file with mode: 0644]
planetstack/core/xoslib/static/js/xoslib/xos-backbone.js [new file with mode: 0644]
planetstack/core/xoslib/static/js/xsh/constants.js [new file with mode: 0644]
planetstack/core/xoslib/static/js/xsh/object_id.js [new file with mode: 0644]
planetstack/core/xoslib/static/js/xsh/shell_utils.js [new file with mode: 0644]
planetstack/core/xoslib/static/js/xsh/tokens.js [new file with mode: 0644]
planetstack/core/xoslib/static/js/xsh/utils.js [new file with mode: 0644]
planetstack/core/xoslib/static/js/xsh/xsh.js [new file with mode: 0644]
planetstack/core/xoslib/templates/mustache/detailApp.mustache [new file with mode: 0644]
planetstack/core/xoslib/templates/mustache/listApp.mustache [new file with mode: 0644]
planetstack/core/xoslib/templates/mustache/sliverTemplate.mustache [new file with mode: 0644]
planetstack/core/xoslib/templatetags/mustache.py [new file with mode: 0644]
planetstack/core/xoslib/templatetags/straight_include.py [new file with mode: 0644]
planetstack/core/xoslib/up.sh [new file with mode: 0755]
planetstack/genapi.py [new file with mode: 0644]
planetstack/hpc/admin.py
planetstack/hpc/models.py
planetstack/hpc_wizard/bigquery_analytics.py
planetstack/hpc_wizard/planetstack_analytics.py
planetstack/kairos/__init__.py [new file with mode: 0644]
planetstack/kairos/admin.py [new file with mode: 0644]
planetstack/kairos/models.py [new file with mode: 0644]
planetstack/nagios/__init__.py [new file with mode: 0644]
planetstack/nagios/admin.py [new file with mode: 0644]
planetstack/nagios/models.py [new file with mode: 0644]
planetstack/nginx/planetstack.conf [new file with mode: 0644]
planetstack/observer/event_loop.py
planetstack/observer/event_manager.py
planetstack/observer/steps/__init__.py
planetstack/observer/steps/garbage_collector.py [new file with mode: 0644]
planetstack/observer/steps/sync_image_deployments.py [new file with mode: 0644]
planetstack/observer/steps/sync_images.py
planetstack/observer/steps/sync_network_deployments.py
planetstack/observer/steps/sync_network_slivers.py
planetstack/observer/steps/sync_nodes.py
planetstack/observer/steps/sync_roles.py
planetstack/observer/steps/sync_site_deployments.py
planetstack/observer/steps/sync_site_privileges.py
planetstack/observer/steps/sync_slice_deployments.py
planetstack/observer/steps/sync_slice_memberships.py
planetstack/observer/steps/sync_slivers.py
planetstack/observer/steps/sync_user_deployments.py
planetstack/observer/steps/sync_users.py
planetstack/observer/syncstep.py
planetstack/openstack/client.py
planetstack/openstack/driver.py
planetstack/planetstack-backend.py
planetstack/planetstack-config.py [new file with mode: 0755]
planetstack/planetstack/settings.py
planetstack/planetstack/urls.py
planetstack/plstackapi_config
planetstack/requestrouter/admin.py
planetstack/requestrouter/models.py
planetstack/rr_observer/configurationPush.py [new file with mode: 0644]
planetstack/rr_observer/deleters/servicemap_deleter.py [new file with mode: 0644]
planetstack/rr_observer/model-deps [new file with mode: 0644]
planetstack/rr_observer/playbook/roles/delete_demux/handlers/main.yml [new file with mode: 0644]
planetstack/rr_observer/playbook/roles/delete_demux/tasks/main.yml [new file with mode: 0644]
planetstack/rr_observer/playbook/roles/delete_demux/vars/main.yml [new file with mode: 0644]
planetstack/rr_observer/playbook/roles/delete_redir/handlers/main.yml [new file with mode: 0644]
planetstack/rr_observer/playbook/roles/delete_redir/tasks/main.yml [new file with mode: 0644]
planetstack/rr_observer/playbook/roles/delete_redir/vars/main.yml [new file with mode: 0644]
planetstack/rr_observer/playbook/roles/demux/handlers/main.yml [new file with mode: 0644]
planetstack/rr_observer/playbook/roles/demux/tasks/main.yml [new file with mode: 0644]
planetstack/rr_observer/playbook/roles/demux/vars/main.yml [new file with mode: 0644]
planetstack/rr_observer/playbook/roles/redir/handlers/main.yml [new file with mode: 0644]
planetstack/rr_observer/playbook/roles/redir/tasks/main.yml [new file with mode: 0644]
planetstack/rr_observer/playbook/roles/redir/vars/main.yml [new file with mode: 0644]
planetstack/rr_observer/playbook/site_demux.yml [new file with mode: 0644]
planetstack/rr_observer/playbook/site_demux_delete.yml [new file with mode: 0644]
planetstack/rr_observer/playbook/site_redir.yml [new file with mode: 0644]
planetstack/rr_observer/playbook/site_redir_delete.yml [new file with mode: 0644]
planetstack/rr_observer/rr_observer_config [new file with mode: 0644]
planetstack/rr_observer/rrlib.py [new file with mode: 0644]
planetstack/rr_observer/rrlib_config.py [new file with mode: 0644]
planetstack/rr_observer/steps/sync_requestrouterservices.py [new file with mode: 0644]
planetstack/rr_observer/steps/sync_servicemap.py [new file with mode: 0644]
planetstack/scripts/opencloud
planetstack/syndicate/admin.py
planetstack/syndicate/models.py
planetstack/templates/admin/base.html
planetstack/templates/admin/dashboard/cdn_nodes.html
planetstack/templates/admin/dashboard/cdnoperations.html [new file with mode: 0644]
planetstack/templates/admin/dashboard/customize.html [new file with mode: 0644]
planetstack/templates/admin/dashboard/dashboard_base.html [new file with mode: 0644]
planetstack/templates/admin/dashboard/developer.html [new file with mode: 0644]
planetstack/templates/admin/dashboard/shell.html [new file with mode: 0644]
planetstack/templates/admin/dashboard/slice_interactions.html
planetstack/templates/admin/dashboard/tenant.html
planetstack/templates/admin/dashboard/welcome.html
planetstack/templates/admin/login.html
planetstack/templates/admin/newminidashboard.html
planetstack/templates/admin/request_account.html [new file with mode: 0644]
planetstack/tests/GetConfiguration.py
planetstack/tests/generate_billing_sample.py
planetstack/uwsgi/planetstack.ini [new file with mode: 0644]
setup.py

index 7f36f03..86fe485 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -11,7 +11,7 @@ dist rpm: $(NAME)-$(VERSION)-$(RELEASE).rpm
 
 $(NAME)-$(VERSION).tar.gz:
        mkdir -p $(NAME)-$(VERSION)
-       rsync -av --exclude=.svn --exclude=.git --exclude=*.tar.gz --exclude=__history --exclude=$(NAME)-$(VERSION)/ ./ $(NAME)-$(VERSION)
+       rsync -av --exclude=.svn --exclude=.git --exclude=*.tar.gz --exclude=*.rpm --exclude=__history --exclude=$(NAME)-$(VERSION)/ ./ $(NAME)-$(VERSION)
        tar -czf $@ $(NAME)-$(VERSION)
        rm -fr $(NAME)-$(VERSION)
 
@@ -40,8 +40,14 @@ ifndef UPLOAD_HOST
 endif
        scp $(NAME)-$(VERSION)-$(RELEASE).x86_64.rpm $(UPLOAD_SLICE)@$(UPLOAD_HOST):/root/
        ssh $(UPLOAD_SLICE)@$(UPLOAD_HOST) yum -y install gcc graphviz-devel graphviz-python postgresql postgresql-server python-pip python-psycopg2 libxslt-devel python-httplib2 GeoIP
-       ssh $(UPLOAD_SLICE)@$(UPLOAD_HOST) rpm --install --upgrade --replacepkgs /root/$(NAME)-$(VERSION)-$(RELEASE).x86_64.rpm   
+       ssh $(UPLOAD_SLICE)@$(UPLOAD_HOST) rpm --install --upgrade --replacefiles --replacepkgs /root/$(NAME)-$(VERSION)-$(RELEASE).x86_64.rpm   
        scp /opt/planetstack/hpc_wizard/bigquery_credentials.dat /opt/planetstack/hpc_wizard/client_secrets.json $(UPLOAD_SLICE)@$(UPLOAD_HOST):/opt/planetstack/hpc_wizard/ 
 
+install-keys:
+ifndef UPLOAD_HOST
+       $(error please specify UPLOAD_HOST=<hostname> on make command line)
+endif
+       scp /opt/planetstack/hpc_wizard/bigquery_credentials.dat /opt/planetstack/hpc_wizard/client_secrets.json $(UPLOAD_SLICE)@$(UPLOAD_HOST):/opt/planetstack/hpc_wizard/
+
 .PHONY: dist
 
index 2828bdb..3b9d35a 100644 (file)
@@ -1,6 +1,6 @@
 Summary: OpenCloud core services
 Name: opencloud
-Version: 1.0.8
+Version: 1.0.20
 Release: 1
 License: GPL+
 Group: Development/Tools
@@ -29,7 +29,7 @@ requires: GeoIP
 # Empty section.
 
 %pre
-pip-python install django==1.5
+#pip-python install django==1.5
 pip-python install djangorestframework
 pip-python install markdown  # Markdown support for the browseable API.
 pip-python install pyyaml    # YAML content-type support.
@@ -59,28 +59,46 @@ if [ ! -f /usr/share/GeoIP/GeoLiteCity.dat ]; then
    gzip -d /usr/share/GeoIP/GeoLiteCity*.gz
 fi
 
+if [ "$1" == 2 ] ; then
+    if [[ -e /opt/planetstack/scripts/opencloud ]]; then
+        echo "UPGRADE - saving current state"
+        /opt/planetstack/scripts/opencloud dumpdata
+    fi
+fi
+
 %install
 rm -rf %{buildroot}
 mkdir -p  %{buildroot}
 install -d %{buildroot}/opt/planetstack
 
 # in builddir
-cp -rp /opt/plstackapi/planetstack %{buildroot}/opt/.
+cp -rp ./planetstack %{buildroot}/opt/.
 
-find %{buildroot}/opt/planetstack -type f -print | sed "s@^$RPM_BUILD_ROOT@@g"  > %{_tmppath}/tmp-filelist
+find %{buildroot}/opt/planetstack -type f -print | sed "s@^$RPM_BUILD_ROOT@@g" > %{_tmppath}/tmp-filelist
+cp %{_tmppath}/tmp-filelist /tmp/tmp-filelist
 
 %clean
 rm -rf %{buildroot}
 
 %files -f %{_tmppath}/tmp-filelist
 %defattr(-,root,root,-)
+%config /opt/planetstack/plstackapi_config
+%config /opt/planetstack/deployment_auth.py
 
 %post
-/opt/planetstack/scripts/opencloud initdb
+if [ "$1" == 1 ] ; then
+    echo "NEW INSTALL - initializing database"
+    /opt/planetstack/scripts/opencloud initdb
+else
+    echo "UPGRADE - doing evolution"
+    /opt/planetstack/scripts/opencloud evolvedb
+fi
+# start the server
+/opt/planetstack/scripts/opencloud runserver
 
 %preun
 if [ "$1" = 0 ] ; then
-    echo "doing preuninstall"
+    echo "UNINSTALL - destroying planetstack"
     rm -rf /opt/planetstack
 fi
 
index 84f7613..ef9884c 100644 (file)
@@ -2,6 +2,7 @@ from rest_framework.decorators import api_view
 from rest_framework.response import Response
 from rest_framework.reverse import reverse
 from rest_framework import serializers
+from rest_framework import generics
 from core.models import *
 from django.forms import widgets
 
@@ -35,11 +36,30 @@ def api_root(request, format=None):
 class {{ object.camel }}Serializer(serializers.HyperlinkedModelSerializer):
        id = serializers.Field()
        {% for ref in object.refs %}
-       {{ ref.plural }} = serializers.HyperlinkedRelatedField(view_name='{{ ref }}-detail')
+       {% if ref.multi %}
+       {{ ref.plural }} = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='{{ ref }}-detail')
+       {% else %}
+       {{ ref }} = serializers.HyperlinkedRelatedField(read_only=True, view_name='{{ ref }}-detail')
+       {% endif %}
        {% endfor %}
        class Meta:
-               model = {{ object }}
-               fields = ({% for prop in object.props %}'{{ prop }}',{% endfor %})
+               model = {{ object.camel }}
+               fields = ({% for prop in object.props %}'{{ prop }}',{% endfor %}{% for ref in object.refs %}{%if ref.multi %}'{{ ref.plural }}'{% else %}'{{ ref }}'{% endif %},{% endfor %})
+
+class {{ object.camel }}IdSerializer(serializers.ModelSerializer):
+       id = serializers.Field()
+       {% for ref in object.refs %}
+       {% if ref.multi %}
+       {{ ref.plural }} = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='{{ ref }}-detail')
+       {% else %}
+       {{ ref }} = serializers.HyperlinkedRelatedField(read_only=True, view_name='{{ ref }}-detail')
+       {% endif %}
+       {% endfor %}
+       class Meta:
+               model = {{ object.camel }}
+               fields = ({% for prop in object.props %}'{{ prop }}',{% endfor %}{% for ref in object.refs %}{%if ref.multi %}'{{ ref.plural }}'{% else %}'{{ ref }}'{% endif %},{% endfor %})
+
+
 {% endfor %}
 
 serializerLookUp = { 
@@ -53,8 +73,17 @@ serializerLookUp = {
 {% for object in generator.all %}
 
 class {{ object.camel }}List(generics.ListCreateAPIView):
-    #queryset = {{ object.camel }}.objects.all()
+    queryset = {{ object.camel }}.objects.select_related().all()
     serializer_class = {{ object.camel }}Serializer
+    id_serializer_class = {{ object.camel }}IdSerializer
+
+    def get_serializer_class(self):
+        no_hyperlinks = self.request.QUERY_PARAMS.get('no_hyperlinks', False)
+        if (no_hyperlinks):
+            return self.id_serializer_class
+        else:
+            return self.serializer_class
+
     
     def get_queryset(self):
         return {{ object.camel }}.select_by_user(self.request.user)
@@ -69,7 +98,7 @@ class {{ object.camel }}List(generics.ListCreateAPIView):
             return Response(status=status.HTTP_400_BAD_REQUEST)
 
 class {{ object.camel }}Detail(generics.RetrieveUpdateDestroyAPIView):
-    #queryset = {{ object.camel }}.objects.all()
+    queryset = {{ object.camel }}.objects.select_related().all()
     serializer_class = {{ object.camel }}Serializer
     
     def get_queryset(self):
index 4c8a0f1..b403c0b 100755 (executable)
@@ -2,24 +2,35 @@
 
 import os
 import pdb
+import copy
 import sys
 import json
 import re
 from django.template import Context, Template
 
+blacklist = ['SingletonModel','PlCoreBase']
+
 # Django set up
 
 sys.path.append('.')
 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "planetstack.settings")
-from django.db.models.fields.related import ForeignKey
+from django.db.models.fields.related import ForeignKey, ManyToManyField
 from core.models import *
 
+def singular(foo, keys):
+       for k in keys:
+               if (foo==k+'es'):
+                       return k
+               elif (foo==k+'s'):
+                       return k
+       raise Exception('Plural to singular error for %s'%foo)
+
 g = globals()
 
 def enum_classes():
        model_classes = []
        for c in g.values():
-               if type(c)==type(PlCoreBase):
+               if type(c)==type(PlCoreBase) and c.__name__ not in blacklist:
                        model_classes.append(c)
        return model_classes
 
@@ -32,17 +43,21 @@ class GenObj(object):
                self.model = m
                self.props = []
                self.refs = []
+               self.plural_name = None
 
        def plural(self):
-               name = str(self)
-               if (name.endswith('s')):
-                       return name+'es'
+               if (self.plural_name):
+                       return self.plural_name
                else:
-                       return name+'s'
+                       name = str(self)
+                       if (name.endswith('s')):
+                               return name+'es'
+                       else:
+                               return name+'s'
 
        def camel(self):
                name = str(self.model.__name__)
-               return name.title()
+               return name
                
 class Generator(dict):
        def all(self):
@@ -59,13 +74,65 @@ class Generator(dict):
 
        def compute_links(self):
                for obj in self.values():
+                       #if (str(obj)=='network'):
+                       #       pdb.set_trace()
                        fields = obj.model._meta.fields
                        for f in fields:
-                               if type(f)==ForeignKey and f.name in self.keys():
-                                       refobj = self[f.name]
-                                       obj.refs.append(refobj)
+                               if (f and f.rel):
+                                       to_name = str(f.rel.to)
+                               else:
+                                       to_name = None
+
+                               if type(f)==ForeignKey and to_name and to_name in self.keys():
+                                       refobj = self[f.to_name]
+
+                                       if (str(obj)=='slice' and f.to_name=='networks'):
+                                               obj.refs.append(refobj)
+                                       related_name = f.related_query_name()
+                                       if (related_name!='+' and related_name.lower()!=str(obj).lower()):
+                                               cobj = copy.deepcopy(obj)
+                                               cobj.multi = True
+                                               cobj.plural_name = related_name
+                                               #if (str(refobj)=='slice' and related_name=='networks'):
+                                               #       pdb.set_trace()
+                                               refobj.refs.append(cobj)
                                else:
                                        obj.props.append(f.name)
+
+                       m2m = obj.model._meta.many_to_many
+                       for f in m2m:
+                               try:
+                                       related_model_name = f.m2m_reverse_field_name()
+                               except:
+                                       related_model_name = f.m2m_db_table().rsplit('_',1)[-1]
+
+                               related_name = f.related_query_name()
+                               if related_model_name in self.keys():
+                       #               pdb.set_trace()
+                                       refobj = self[related_model_name]
+                                       cobj = copy.deepcopy(obj)
+                                       cobj.multi=True
+                                       refobj.refs.append(cobj)
+
+                                # deal with upgradeFrom_rel_+
+                                if (related_name.endswith("+")):
+                                    continue
+
+                               if (related_name!='+' and related_name.lower()!=str(obj).lower()):
+                                       cobj = copy.deepcopy(obj)
+                                       cobj.multi = True
+                                       cobj.plural_name = related_name
+
+                                       #if (str(refobj)=='slice' and related_name=='networks'):
+                                       #       pdb.set_trace()
+                                       refobj.refs.append(cobj)
+
+                                       #if (related_name=='networks'):
+                                               #pdb.set_trace()
+                                               #print str(refobj)
+
+
+
                        
 def main():
        try:
index 109927e..fb00670 100644 (file)
@@ -1,7 +1,8 @@
 {% for object in generator.all %}
 Object {{ object }}:
 Refs:
-{% for ref in object.refs %}{{ ref }}{% endfor %}
+{% for ref in object.refs %}
+{{ ref }}{% endfor %}
 Props:
 {% for prop in object.props %}{{ prop }}
 {% endfor %}
diff --git a/planetstack/cassandra/__init__.py b/planetstack/cassandra/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/planetstack/cassandra/admin.py b/planetstack/cassandra/admin.py
new file mode 100644 (file)
index 0000000..e736815
--- /dev/null
@@ -0,0 +1,32 @@
+from django.contrib import admin
+
+from cassandra.models import *
+from django import forms
+from django.utils.safestring import mark_safe
+from django.contrib.auth.admin import UserAdmin
+from django.contrib.admin.widgets import FilteredSelectMultiple
+from django.contrib.auth.forms import ReadOnlyPasswordHashField
+from django.contrib.auth.signals import user_logged_in
+from django.utils import timezone
+from django.contrib.contenttypes import generic
+from suit.widgets import LinkedSelect
+from core.admin import SingletonAdmin,SliceInline,ServiceAttrAsTabInline, SliceROInline,ServiceAttrAsTabROInline, ReadOnlyAwareAdmin
+
+class CassandraServiceAdmin(SingletonAdmin):
+    model = CassandraService
+    verbose_name = "Cassandra Service"
+    verbose_name_plural = "Cassandra Service"
+    list_display = ("name","enabled")
+    fieldsets = [(None, {'fields': ['name','enabled','versionNumber', 'description','clusterSize','replicationFactor'], 'classes':['suit-tab suit-tab-general']})]
+    inlines = [SliceInline,ServiceAttrAsTabInline]
+
+    user_readonly_inlines = [SliceROInline, ServiceAttrAsTabROInline]
+    user_readonly_fields = ["name", "enabled", "versionNumber", "description", "clusterSize", "replicationFactor"]
+
+    suit_form_tabs =(('general', 'Cassandra Service Details'),
+        ('slices','Slices'),
+        ('serviceattrs','Additional Attributes'),
+    )
+
+admin.site.register(CassandraService, CassandraServiceAdmin)
+
diff --git a/planetstack/cassandra/models.py b/planetstack/cassandra/models.py
new file mode 100644 (file)
index 0000000..12479b3
--- /dev/null
@@ -0,0 +1,17 @@
+from core.models import User,Site,Service,SingletonModel,PlCoreBase, Slice
+import os
+from django.db import models
+from django.forms.models import model_to_dict
+
+# Create your models here.
+
+class CassandraService(SingletonModel,Service):
+    class Meta:
+        app_label = "cassandra"
+        verbose_name = "Cassandra Service"
+
+    clusterSize = models.PositiveIntegerField(default=1)
+    replicationFactor = models.PositiveIntegerField(default=1)
+
+    def __unicode__(self):  return u'Cassandra Service'
+
diff --git a/planetstack/core/acl.py b/planetstack/core/acl.py
new file mode 100644 (file)
index 0000000..7856414
--- /dev/null
@@ -0,0 +1,135 @@
+from fnmatch import fnmatch
+
+"""
+    A General-purpose ACL mechanism.
+
+    [allow | deny] <type_of_object> <text_pattern>\r
+\r
+    "allow all" and "deny all" are shorthand for allowing or denying all objects.\r
+    Lines are executed from top to bottom until a match was found, typical\r
+    iptables style. An implicit 'deny all' exists at the bottom of the list.\r
+\r
+    For example,\r
+    allow site Max Planck Institute\r
+    deny site Arizona\r
+    allow region US\r
+    deny user scott@onlab.us\r
+    allow user *@onlab.us
+"""
+
+class AccessControlList:
+    def __init__(self, aclText=None):
+        self.rules = []
+        if aclText:
+            self.import_text(aclText)
+
+    def import_text(self, aclText):
+        # allow either newline or ';' to separate rules
+        aclText = aclText.replace("\n", ";")
+        for line in aclText.split(";"):
+            line = line.strip()
+            if line.startswith("#"):
+                continue
+
+            if line=="":
+                continue
+
+            parts = line.split()
+
+            if len(parts)==2 and (parts[1]=="all"):
+                # "allow all" has no pattern
+                parts = (parts[0], parts[1], "")
+
+            if len(parts)!=3:
+                raise ACLValidationError(line)
+
+            (action, object, pattern) = parts
+
+            if action not in ["allow", "deny"]:
+                raise ACLValidationError(line)
+
+            if object not in ["site", "user", "all"]:
+                raise ACLValidationError(line)
+
+            self.rules.append( (action, object, pattern) )
+
+    def __str__(self):
+        lines = []
+        for rule in self.rules:
+            lines.append( " ".join(rule) )
+        return ";\n".join(lines)
+
+    def test(self, user, site=None):
+        for rule in self.rules:
+            if self.match_rule(rule, user):
+                return rule[0]
+        return "deny"
+
+    def match_rule(self, rule, user, site=None):
+        (action, object, pattern) = rule
+
+        if (site==None):
+            site = user.site
+
+        if (object == "site"):
+            if fnmatch(site.name, pattern):
+                return True
+        elif (object == "user"):
+            if fnmatch(user.email, pattern):
+                return True
+        elif (object == "all"):
+            return True
+
+        return False
+
+
+if __name__ == '__main__':
+    # self-test
+
+    class fakesite:
+        def __init__(self, siteName):
+            self.name = siteName
+
+    class fakeuser:
+        def __init__(self, email, siteName):
+            self.email = email
+            self.site = fakesite(siteName)
+
+    u_scott = fakeuser("scott@onlab.us", "ON.Lab")
+    u_bill = fakeuser("bill@onlab.us", "ON.Lab")
+    u_andy = fakeuser("acb@cs.princeton.edu", "Princeton")
+    u_john = fakeuser("jhh@cs.arizona.edu", "Arizona")
+    u_hacker = fakeuser("somehacker@foo.com", "Not A Real Site")
+
+    # check the "deny all" rule
+    acl = AccessControlList("deny all")
+    assert(acl.test(u_scott) == "deny")
+
+    # a blank ACL results in "deny all"
+    acl = AccessControlList("")
+    assert(acl.test(u_scott) == "deny")
+
+    # check the "allow all" rule
+    acl = AccessControlList("allow all")
+    assert(acl.test(u_scott) == "allow")
+
+    # allow only one site
+    acl = AccessControlList("allow site ON.Lab")
+    assert(acl.test(u_scott) == "allow")
+    assert(acl.test(u_andy) == "deny")
+
+    # some complicated ACL
+    acl = AccessControlList("""allow site Princeton
+                 allow user *@cs.arizona.edu
+                 deny site Arizona
+                 deny user scott@onlab.us
+                 allow site ON.Lab""")
+
+    assert(acl.test(u_scott) == "deny")
+    assert(acl.test(u_bill) == "allow")
+    assert(acl.test(u_andy) == "allow")
+    assert(acl.test(u_john) == "allow")
+    assert(acl.test(u_hacker) == "deny")
+
+    print acl
+
index 07029a2..8e81b4b 100644 (file)
@@ -48,12 +48,15 @@ class ReadOnlyAwareAdmin(admin.ModelAdmin):
                 # save the original readonly fields\r
                 self.readonly_save = self.readonly_fields\r
                 self.inlines_save = self.inlines\r
-            self.readonly_fields=self.user_readonly_fields\r
-            self.inlines = self.user_readonly_inlines\r
+            if hasattr(self, "user_readonly_fields"):\r
+                self.readonly_fields=self.user_readonly_fields\r
+            if hasattr(self, "user_readonly_inlines"):\r
+                self.inlines = self.user_readonly_inlines\r
         else:\r
             if hasattr(self, "readonly_save"):\r
                 # restore the original readonly fields\r
                 self.readonly_fields = self.readonly_save\r
+            if hasattr(self, "inlines_save"):\r
                 self.inlines = self.inlines_save
 
         try:
@@ -65,12 +68,14 @@ class ReadOnlyAwareAdmin(admin.ModelAdmin):
         request.readonly = True
         return super(ReadOnlyAwareAdmin, self).change_view(request, object_id, extra_context=extra_context)
 
-
     def __user_is_readonly(self, request):
         return request.user.isReadOnlyUser()
 
-class SingletonAdmin (admin.ModelAdmin):
+class SingletonAdmin (ReadOnlyAwareAdmin):
     def has_add_permission(self, request):
+        if not super(SingletonAdmin, self).has_add_permission(request):
+            return False
+
         num_objects = self.model.objects.count()
         if num_objects >= 1:
             return False
@@ -213,12 +218,12 @@ class NetworkLookerUpper:
 
 class SliverROInline(ReadOnlyTabularInline):
     model = Sliver
-    fields = ['ip', 'instance_name', 'slice', 'numberCores', 'image', 'node', 'deploymentNetwork']
+    fields = ['ip', 'instance_name', 'slice', 'numberCores', 'deploymentNetwork', 'image', 'node']
     suit_classes = 'suit-tab suit-tab-slivers'
 
 class SliverInline(PlStackTabularInline):
     model = Sliver
-    fields = ['ip', 'instance_name', 'slice', 'numberCores', 'image', 'node', 'deploymentNetwork']
+    fields = ['ip', 'instance_name', 'slice', 'numberCores', 'deploymentNetwork', 'image', 'node']
     extra = 0
     readonly_fields = ['ip', 'instance_name']
     suit_classes = 'suit-tab suit-tab-slivers'
@@ -226,6 +231,14 @@ class SliverInline(PlStackTabularInline):
     def queryset(self, request):
         return Sliver.select_by_user(request.user)
 
+    def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
+        if db_field.name == 'deploymentNetwork':
+           kwargs['queryset'] = Deployment.select_by_acl(request.user)
+
+        field = super(SliverInline, self).formfield_for_foreignkey(db_field, request, **kwargs)
+
+        return field
+
 # Note this is breaking in the admin.py when trying to use an inline to add a node/image 
 #    def _declared_fieldsets(self):
 #        # Return None so django will call get_fieldsets and we can insert our
@@ -306,25 +319,25 @@ class NodeROInline(ReadOnlyTabularInline):
     model = Node
     extra = 0
     suit_classes = 'suit-tab suit-tab-nodes'
-    fields = ['name','deployment']
+    fields = ['name','deployment','site']
 
 class NodeInline(PlStackTabularInline):
     model = Node
     extra = 0
     suit_classes = 'suit-tab suit-tab-nodes'
-    fields = ['name','deployment']
+    fields = ['name','deployment','site']
 
 class DeploymentPrivilegeROInline(ReadOnlyTabularInline):
     model = DeploymentPrivilege
     extra = 0
     suit_classes = 'suit-tab suit-tab-deploymentprivileges'
-    fields = ['user','role']
+    fields = ['user','role','deployment']
 
 class DeploymentPrivilegeInline(PlStackTabularInline):
     model = DeploymentPrivilege
     extra = 0
     suit_classes = 'suit-tab suit-tab-deploymentprivileges'
-    fields = ['user','role']
+    fields = ['user','role','deployment']
 
     def queryset(self, request):
         return DeploymentPrivilege.select_by_user(request.user)
@@ -357,7 +370,7 @@ class SiteDeploymentROInline(ReadOnlyTabularInline):
     model = SiteDeployments
     #model = Site.deployments.through
     extra = 0
-    suit_classes = 'suit-tab suit-tab-sitedeployments'
+    suit_classes = 'suit-tab suit-tab-deployments'
     fields = ['deployment','site']
 
 class SiteDeploymentInline(PlStackTabularInline):
@@ -417,6 +430,24 @@ class SliceNetworkInline(PlStackTabularInline):
     verbose_name = "Network Connection"
     verbose_name_plural = "Network Connections"
     suit_classes = 'suit-tab suit-tab-slicenetworks'
+    fields = ['network']
+
+class ImageDeploymentsROInline(ReadOnlyTabularInline):
+    model = ImageDeployments
+    extra = 0
+    verbose_name = "Image Deployments"
+    verbose_name_plural = "Image Deployments"
+    suit_classes = 'suit-tab suit-tab-imagedeployments'
+    fields = ['image', 'deployment', 'glance_image_id']
+
+class ImageDeploymentsInline(PlStackTabularInline):
+    model = ImageDeployments
+    extra = 0
+    verbose_name = "Image Deployments"
+    verbose_name_plural = "Image Deployments"
+    suit_classes = 'suit-tab suit-tab-imagedeployments'
+    fields = ['image', 'deployment', 'glance_image_id']
+    readonly_fields = ['glance_image_id']
 
 class PlainTextWidget(forms.HiddenInput):
     input_type = 'hidden'
@@ -455,18 +486,66 @@ class DeploymentAdminForm(forms.ModelForm):
     sites = forms.ModelMultipleChoiceField(
         queryset=Site.objects.all(),
         required=False,
+        help_text="Select which sites are allowed to host nodes in this deployment",
         widget=FilteredSelectMultiple(
             verbose_name=('Sites'), is_stacked=False
         )
     )
+    images = forms.ModelMultipleChoiceField(
+        queryset=Image.objects.all(),
+        required=False,
+        help_text="Select which images should be deployed on this deployment",
+        widget=FilteredSelectMultiple(
+            verbose_name=('Images'), is_stacked=False
+        )
+    )
     class Meta:
         model = Deployment
 
     def __init__(self, *args, **kwargs):
+      request = kwargs.pop('request', None)
       super(DeploymentAdminForm, self).__init__(*args, **kwargs)
 
+      self.fields['accessControl'].initial = "allow site " + request.user.site.name
+
       if self.instance and self.instance.pk:
-        self.fields['sites'].initial = self.instance.sitedeployments_set.all()
+        self.fields['sites'].initial = [x.site for x in self.instance.sitedeployments_set.all()]
+        self.fields['images'].initial = [x.image for x in self.instance.imagedeployments_set.all()]
+
+    def manipulate_m2m_objs(self, this_obj, selected_objs, all_relations, relation_class, local_attrname, foreign_attrname):
+        """ helper function for handling m2m relations from the MultipleChoiceField
+
+            this_obj: the source object we want to link from
+
+            selected_objs: a list of destination objects we want to link to
+
+            all_relations: the full set of relations involving this_obj, including ones we don't want
+
+            relation_class: the class that implements the relation from source to dest
+
+            local_attrname: field name representing this_obj in relation_class
+
+            foreign_attrname: field name representing selected_objs in relation_class
+
+            This function will remove all newobjclass relations from this_obj
+            that are not contained in selected_objs, and add any relations that
+            are in selected_objs but don't exist in the data model yet.
+        """
+
+        existing_dest_objs = []
+        for relation in list(all_relations):
+            if getattr(relation, foreign_attrname) not in selected_objs:
+                #print "deleting site", sdp.site
+                relation.delete()
+            else:
+                existing_dest_objs.append(getattr(relation, foreign_attrname))
+
+        for dest_obj in selected_objs:
+            if dest_obj not in existing_dest_objs:
+                #print "adding site", site
+                kwargs = {foreign_attrname: dest_obj, local_attrname: this_obj}
+                relation = relation_class(**kwargs)
+                relation.save()
 
     def save(self, commit=True):
       deployment = super(DeploymentAdminForm, self).save(commit=False)
@@ -475,27 +554,52 @@ class DeploymentAdminForm(forms.ModelForm):
         deployment.save()
 
       if deployment.pk:
-        deployment.sites = self.cleaned_data['sites']
+        # save_m2m() doesn't seem to work with 'through' relations. So we
+        #    create/destroy the through models ourselves. There has to be
+        #    a better way...
+
+        self.manipulate_m2m_objs(deployment, self.cleaned_data['sites'], deployment.sitedeployments_set.all(), SiteDeployments, "deployment", "site")
+        self.manipulate_m2m_objs(deployment, self.cleaned_data['images'], deployment.imagedeployments_set.all(), ImageDeployments, "deployment", "image")
+
         self.save_m2m()
 
       return deployment
 
+class DeploymentAdminROForm(DeploymentAdminForm):
+    def save(self, commit=True):
+        raise PermissionDenied
+
 class SiteAssocInline(PlStackTabularInline):
     model = Site.deployments.through
     extra = 0
     suit_classes = 'suit-tab suit-tab-sites'
 
 class DeploymentAdmin(PlanetStackBaseAdmin):
-    form = DeploymentAdminForm
     model = Deployment
-    fieldList = ['name','sites']
+    fieldList = ['name','sites', 'images', 'accessControl']
     fieldsets = [(None, {'fields': fieldList, 'classes':['suit-tab suit-tab-sites']})]
-    inlines = [DeploymentPrivilegeInline,NodeInline,TagInline]
+    inlines = [DeploymentPrivilegeInline,NodeInline,TagInline] # ,ImageDeploymentsInline]
 
-    user_readonly_inlines = [DeploymentPrivilegeROInline,NodeROInline,TagROInline]
+    user_readonly_inlines = [DeploymentPrivilegeROInline,NodeROInline,TagROInline] # ,ImageDeploymentsROInline]
     user_readonly_fields = ['name']
 
-    suit_form_tabs =(('sites','Deployment Details'),('nodes','Nodes'),('deploymentprivileges','Privileges'),('tags','Tags'))
+    suit_form_tabs =(('sites','Deployment Details'),('nodes','Nodes'),('deploymentprivileges','Privileges'),('tags','Tags')) # ,('imagedeployments','Images'))
+
+    def get_form(self, request, obj=None, **kwargs):
+        if request.user.isReadOnlyUser():
+            kwargs["form"] = DeploymentAdminROForm
+        else:
+            kwargs["form"] = DeploymentAdminForm
+        adminForm = super(DeploymentAdmin,self).get_form(request, obj, **kwargs)
+
+        # from stackexchange: pass the request object into the form
+
+        class AdminFormMetaClass(adminForm):
+           def __new__(cls, *args, **kwargs):
+               kwargs['request'] = request
+               return adminForm(*args, **kwargs)
+
+        return AdminFormMetaClass
 
 class ServiceAttrAsTabROInline(ReadOnlyTabularInline):
     model = ServiceAttribute
@@ -548,7 +652,6 @@ class SiteAdmin(PlanetStackBaseAdmin):
     search_fields = ['name']
 
     def queryset(self, request):
-        #print dir(UserInline)
         return Site.select_by_user(request.user)
 
     def get_formsets(self, request, obj=None):
@@ -718,16 +821,16 @@ class SlicePrivilegeAdmin(PlanetStackBaseAdmin):
 class ImageAdmin(PlanetStackBaseAdmin):
 
     fieldsets = [('Image Details', 
-                   {'fields': ['image_id', 'name', 'disk_format', 'container_format'], 
+                   {'fields': ['name', 'disk_format', 'container_format'], 
                     'classes': ['suit-tab suit-tab-general']})
                ]
 
-    suit_form_tabs =(('general','Image Details'),('slivers','Slivers'))
+    suit_form_tabs =(('general','Image Details'),('slivers','Slivers'),('imagedeployments','Deployments'))
 
-    inlines = [SliverInline]
-    
-    user_readonly_fields = ['image_id', 'name', 'disk_format', 'container_format']
-    user_readonly_inlines = [SliverROInline]
+    inlines = [SliverInline, ImageDeploymentsInline]
+
+    user_readonly_fields = ['name', 'disk_format', 'container_format']
+    user_readonly_inlines = [SliverROInline, ImageDeploymentsROInline]
     
 class NodeForm(forms.ModelForm):
     class Meta:
@@ -810,6 +913,9 @@ class SliverAdmin(PlanetStackBaseAdmin):
             # hide MyInline in the add view
             if obj is None:
                 continue
+            if isinstance(inline, SliverInline):
+                inline.model.caller = request.user
+            yield inline.get_formset(request, obj)
 
     #def save_model(self, request, obj, form, change):
     #    # update openstack connection to use this site/tenant
@@ -871,6 +977,18 @@ class UserChangeForm(forms.ModelForm):
         # field does not have access to the initial value
         return self.initial["password"]
 
+class UserDashboardViewInline(PlStackTabularInline):
+    model = UserDashboardView
+    extra = 0
+    suit_classes = 'suit-tab suit-tab-dashboards'
+    fields = ['user', 'dashboardView', 'order']
+
+class UserDashboardViewROInline(ReadOnlyTabularInline):
+    model = UserDashboardView
+    extra = 0
+    suit_classes = 'suit-tab suit-tab-dashboards'
+    fields = ['user', 'dashboardView', 'order']
+
 class UserAdmin(UserAdmin):
     class Meta:
         app_label = "core"
@@ -885,7 +1003,7 @@ class UserAdmin(UserAdmin):
     list_display = ('email', 'firstname', 'lastname', 'site', 'last_login')
     #list_display = ('email', 'username','firstname', 'lastname', 'is_admin', 'last_login')
     list_filter = ('site',)
-    inlines = [SlicePrivilegeInline,SitePrivilegeInline,DeploymentPrivilegeInline]
+    inlines = [SlicePrivilegeInline,SitePrivilegeInline,DeploymentPrivilegeInline,UserDashboardViewInline]
 
     fieldListLoginDetails = ['email','site','password','is_readonly','is_amin','public_key']
     fieldListContactInfo = ['firstname','lastname','phone','timezone']
@@ -893,6 +1011,7 @@ class UserAdmin(UserAdmin):
     fieldsets = (
         ('Login Details', {'fields': ['email', 'site','password', 'is_readonly', 'is_admin', 'public_key'], 'classes':['suit-tab suit-tab-general']}),
         ('Contact Information', {'fields': ('firstname','lastname','phone', 'timezone'), 'classes':['suit-tab suit-tab-contact']}),
+        #('Dashboard Views', {'fields': ('dashboards',), 'classes':['suit-tab suit-tab-dashboards']}),
         #('Important dates', {'fields': ('last_login',)}),
     )
     add_fieldsets = (
@@ -905,10 +1024,15 @@ class UserAdmin(UserAdmin):
     ordering = ('email',)
     filter_horizontal = ()
 
-    user_readonly_fields = fieldListLoginDetails
-    user_readonly_inlines = [SlicePrivilegeROInline,SitePrivilegeROInline,DeploymentPrivilegeROInline]
+    user_readonly_fields = fieldListLoginDetails + fieldListContactInfo
+    user_readonly_inlines = [SlicePrivilegeROInline,SitePrivilegeROInline,DeploymentPrivilegeROInline,UserDashboardViewROInline]
 
-    suit_form_tabs =(('general','Login Details'),('contact','Contact Information'),('sliceprivileges','Slice Privileges'),('siteprivileges','Site Privileges'),('deploymentprivileges','Deployment Privileges'))
+    suit_form_tabs =(('general','Login Details'),
+                     ('contact','Contact Information'),
+                     ('sliceprivileges','Slice Privileges'),
+                     ('siteprivileges','Site Privileges'),
+                     ('deploymentprivileges','Deployment Privileges'),
+                     ('dashboards','Dashboard Views'))
 
     def formfield_for_foreignkey(self, db_field, request, **kwargs):
         if db_field.name == 'site':
@@ -934,8 +1058,18 @@ class UserAdmin(UserAdmin):
     def change_view(self,request,object_id, extra_context=None):
 
         if self.__user_is_readonly(request):
+            if not hasattr(self, "readonly_save"):
+                # save the original readonly fields\r
+                self.readonly_save = self.readonly_fields\r
+                self.inlines_save = self.inlines
             self.readonly_fields=self.user_readonly_fields
             self.inlines = self.user_readonly_inlines
+        else:
+            if hasattr(self, "readonly_save"):\r
+                # restore the original readonly fields\r
+                self.readonly_fields = self.readonly_save\r
+                self.inlines = self.inlines_save
+
         try:
             return super(UserAdmin, self).change_view(request, object_id, extra_context=extra_context)
         except PermissionDenied:
@@ -953,7 +1087,13 @@ class UserAdmin(UserAdmin):
     def queryset(self, request):
         return User.select_by_user(request.user)
 
+class DashboardViewAdmin(PlanetStackBaseAdmin):
+    fieldsets = [('Dashboard View Details',
+                   {'fields': ['name', 'url'],
+                    'classes': ['suit-tab suit-tab-general']})
+               ]
 
+    suit_form_tabs =(('general','Dashboard View Details'),)
 
 class ServiceResourceROInline(ReadOnlyTabularInline):
     model = ServiceResource
@@ -1375,4 +1515,5 @@ if True:
     #admin.site.register(SitePrivilege, SitePrivilegeAdmin)
     admin.site.register(Sliver, SliverAdmin)
     admin.site.register(Image, ImageAdmin)
+    admin.site.register(DashboardView, DashboardViewAdmin)
 
diff --git a/planetstack/core/context_processors.py b/planetstack/core/context_processors.py
new file mode 100644 (file)
index 0000000..270ec4e
--- /dev/null
@@ -0,0 +1,4 @@
+from django.conf import settings
+
+def planetstack(request):
+    return {"DISABLE_MINIDASHBOARD": settings.DISABLE_MINIDASHBOARD}
similarity index 62%
rename from planetstack/core/plus/sites.py
rename to planetstack/core/dashboard/sites.py
index 20c2d6a..7200035 100644 (file)
@@ -12,15 +12,29 @@ class AdminMixin(object):
     def get_urls(self):
         """Add our dashboard view to the admin urlconf. Deleted the default index."""
         from django.conf.urls import patterns, url
-        from views import DashboardWelcomeView, DashboardAjaxView, SimulatorView, DashboardSummaryAjaxView, DashboardAddOrRemoveSliverView, DashboardUserSiteView, DashboardAnalyticsAjaxView, TenantViewData,TenantCreateSlice, TenantAddOrRemoveSliverView, TenantPickSitesView, TenantDeleteSliceView,TenantUpdateSlice
+        from views import DashboardCustomize, DashboardDynamicView, DashboardWelcomeView, DashboardAjaxView, SimulatorView, \
+                          DashboardSummaryAjaxView, DashboardAddOrRemoveSliverView, DashboardUserSiteView, DashboardAnalyticsAjaxView, \
+                          TenantViewData,TenantCreateSlice, TenantAddOrRemoveSliverView, TenantPickSitesView, TenantDeleteSliceView, \
+                          TenantUpdateSlice, DashboardSliceInteractions
+
+        from views import view_urls
 
         urls = super(AdminMixin, self).get_urls()
         del urls[0]
-        custom_url = patterns('',
-               url(r'^$', self.admin_view(DashboardWelcomeView.as_view()),
+
+        # these ones are for the views that were written before we implemented
+        # the ability to get the url from the View class.
+        dashboard_urls = [
+               url(r'^$', self.admin_view(DashboardDynamicView.as_view()),
                     name="index"),
                url(r'^test/', self.admin_view(DashboardUserSiteView.as_view()),
                     name="test"),
+               url(r'^sliceinteractions/(?P<name>\w+)/$', self.admin_view(DashboardSliceInteractions.as_view()),
+                    name="interactions"),
+               url(r'^dashboard/(?P<name>\w+)/$', self.admin_view(DashboardDynamicView.as_view()),
+                    name="dashboard"),
+              url(r'^customize/$', self.admin_view(DashboardCustomize.as_view()),
+                    name="customize"),
                url(r'^hpcdashuserslices/', self.admin_view(DashboardUserSiteView.as_view()),
                     name="hpcdashuserslices"),
                url(r'^hpcdashboard/', self.admin_view(DashboardAjaxView.as_view()),        # DEPRECATED
@@ -45,9 +59,13 @@ class AdminMixin(object):
                     name="picksites"),
               url(r'^tenantdeleteslice/$', self.admin_view(TenantDeleteSliceView.as_view()),
                     name="tenantdeleteslice")
-        )
+        ]
+
+        # these ones are for the views that have a "url" member in the class
+        for (view_url, view_classname, view_class) in view_urls:
+            dashboard_urls.append( url(view_url, self.admin_view(view_class.as_view()), name=view_classname.lower()))
 
-        return custom_url + urls
+        return dashboard_urls + urls
 
 
 class SitePlus(AdminMixin, AdminSite):
diff --git a/planetstack/core/dashboard/views/__init__.py b/planetstack/core/dashboard/views/__init__.py
new file mode 100644 (file)
index 0000000..bbe403b
--- /dev/null
@@ -0,0 +1,44 @@
+#from home import DashboardWelcomeView, DashboardDynamicView
+#from tenant import TenantCreateSlice, TenantUpdateSlice, TenantDeleteSliceView, TenantAddOrRemoveSliverView, TenantPickSitesView, TenantViewData
+#from simulator import SimulatorView
+#from cdn import DashboardSummaryAjaxView, DashboardAddOrRemoveSliverView, DashboardAjaxView
+#from analytics import DashboardAnalyticsAjaxView
+#from customize import DashboardCustomize
+#from interactions import DashboardSliceInteractions
+#from test import DashboardUserSiteView
+
+from django.views.generic import View
+from django.conf.urls import patterns, url
+import os, sys
+import inspect
+import importlib
+
+# Find all modules in the current directory that have descendents of the View
+# object, and add them as globals to this module. Also, build up a list of urls
+# based on the "url" field of the view classes.
+
+sys_path_save = sys.path
+try:
+    # __import__() and importlib.import_module() both import modules from
+    # sys.path. So we make sure that the path where we can find the views is
+    # the first thing in sys.path.
+    view_dir = os.path.dirname(os.path.abspath(__file__))
+    sys.path = [view_dir] + sys.path
+    view_urls = []
+    for fn in os.listdir(view_dir):
+        pathname = os.path.join(view_dir,fn)
+        if os.path.isfile(pathname) and fn.endswith(".py") and (fn!="__init__.py"):
+            #module = imp.load_source(fn[:-3],pathname)
+            #module = importlib.import_module(fn[:-3])
+            module = __import__(fn[:-3])
+            for classname in dir(module):
+                c = getattr(module, classname, None)
+
+                if inspect.isclass(c) and issubclass(c, View) and (classname not in globals()):
+                    globals()[classname] = c
+
+                    view_url = getattr(c, "url", None)
+                    if view_url:
+                        view_urls.append( (view_url, classname, c) )
+finally:
+    sys.path = sys_path_save
diff --git a/planetstack/core/dashboard/views/analytics.py b/planetstack/core/dashboard/views/analytics.py
new file mode 100644 (file)
index 0000000..e1794c1
--- /dev/null
@@ -0,0 +1,10 @@
+from view_common import *
+import random
+
+class DashboardAnalyticsAjaxView(View):
+    def get(self, request, name="hello_world", **kwargs):
+        if (name == "bigquery"):
+            (mimetype, data) = DoPlanetStackAnalytics(request)
+            return HttpResponse(data, content_type=mimetype)
+        else:
+            return HttpResponse(json.dumps("Unknown"), content_type='application/javascript')
diff --git a/planetstack/core/dashboard/views/cdn.py b/planetstack/core/dashboard/views/cdn.py
new file mode 100644 (file)
index 0000000..4fb29cb
--- /dev/null
@@ -0,0 +1,49 @@
+from view_common import *
+
+class DashboardSummaryAjaxView(View):
+    def get(self, request, **kwargs):
+        def avg(x):
+            if len(x)==0:
+                return 0
+            return float(sum(x))/len(x)
+
+        sites = getCDNOperatorData().values()
+
+        sites = [site for site in sites if site["numHPCSlivers"]>0]
+
+        total_slivers = sum( [site["numHPCSlivers"] for site in sites] )
+        total_bandwidth = sum( [site["bandwidth"] for site in sites] )
+        average_cpu = int(avg( [site["load"] for site in sites] ))
+
+        result= {"total_slivers": total_slivers,
+                "total_bandwidth": total_bandwidth,
+                "average_cpu": average_cpu}
+
+        return HttpResponse(json.dumps(result), content_type='application/javascript')
+
+class DashboardAddOrRemoveSliverView(View):
+    # TODO: deprecate this view in favor of using TenantAddOrRemoveSliverView
+
+    def post(self, request, *args, **kwargs):
+        siteName = request.POST.get("site", None)
+        actionToDo = request.POST.get("actionToDo", "0")
+
+        siteList = [Site.objects.get(name=siteName)]
+        slice = Slice.objects.get(name="HyperCache")
+
+        if request.user.isReadOnlyUser():
+            return HttpResponseForbidden("User is in read-only mode")
+
+        if (actionToDo == "add"):
+            user_ip = request.GET.get("ip", get_ip(request))
+            slice_increase_slivers(request.user, user_ip, siteList, slice, 1)
+        elif (actionToDo == "rem"):
+            slice_decrease_slivers(request.user, siteList, slice, 1)
+
+        print '*' * 50
+        print 'Ask for site: ' + siteName + ' to ' + actionToDo + ' another HPC Sliver'
+        return HttpResponse(json.dumps("Success"), content_type='application/javascript')
+
+class DashboardAjaxView(View):
+    def get(self, request, **kwargs):
+        return HttpResponse(json.dumps(getCDNOperatorData(True)), content_type='application/javascript')
diff --git a/planetstack/core/dashboard/views/customize.py b/planetstack/core/dashboard/views/customize.py
new file mode 100644 (file)
index 0000000..212cc4d
--- /dev/null
@@ -0,0 +1,22 @@
+from view_common import *
+
+class DashboardCustomize(View):
+    def post(self, request, *args, **kwargs):\r
+        if request.user.isReadOnlyUser():\r
+            return HttpResponseForbidden("User is in read-only mode")\r
+\r
+        dashboards = request.POST.get("dashboards", None)\r
+        if not dashboards:\r
+            dashboards=[]\r
+        else:\r
+            dashboards = [x.strip() for x in dashboards.split(",")]\r
+            dashboards = [DashboardView.objects.get(name=x) for x in dashboards]\r
+\r
+        request.user.dashboardViews.all().delete()\r
+\r
+        for i,dashboard in enumerate(dashboards):\r
+            udbv = UserDashboardView(user=request.user, dashboardView=dashboard, order=i)\r
+            udbv.save()\r
+\r
+        return HttpResponse(json.dumps("Success"), content_type='application/javascript')
+
diff --git a/planetstack/core/dashboard/views/home.py b/planetstack/core/dashboard/views/home.py
new file mode 100644 (file)
index 0000000..ff6c445
--- /dev/null
@@ -0,0 +1,106 @@
+from view_common import *
+
+class DashboardWelcomeView(TemplateView):
+    template_name = 'admin/dashboard/welcome.html'
+
+    def get(self, request, *args, **kwargs):
+        context = self.get_context_data(**kwargs)
+        context = getDashboardContext(request.user, context)
+        return self.render_to_response(context=context)
+
+class DashboardDynamicView(TemplateView):
+    head_template = r"""{% extends "admin/dashboard/dashboard_base.html" %}
+       {% load admin_static %}
+       {% block content %}
+    """
+
+    tail_template = r"{% endblock %}"
+
+    def get(self, request, name="root", *args, **kwargs):
+        context = self.get_context_data(**kwargs)
+        context = getDashboardContext(request.user, context)
+
+        if name=="root":
+            return self.multiDashboardView(request, context)
+        else:
+            return self.singleDashboardView(request, name, context)
+
+    def readTemplate(self, fn):
+        TEMPLATE_DIRS = ["/opt/planetstack/templates/admin/dashboard/",
+                         "/opt/planetstack/core/xoslib/dashboards/"]
+
+        for template_dir in TEMPLATE_DIRS:
+            pathname = os.path.join(template_dir, fn) + ".html"
+            if os.path.exists(pathname):
+                break
+        else:
+            return "failed to find %s in %s" % (fn, TEMPLATE_DIRS)
+
+        template= open(pathname, "r").read()
+        if (fn=="tenant"):
+            # fix for tenant view - it writes html to a div called tabs-5
+            template = '<div id="tabs-5"></div>' + template
+        return template
+
+    def embedDashboard(self, url):
+        if url.startswith("template:"):
+            fn = url[9:]
+            return self.readTemplate(fn)
+        elif url.startswith("http"):
+            return '<iframe src="%s" width="100%%" height="100%%" style="min-height: 1024px;" frameBorder="0"></iframe>' % url
+        else:
+            return "don't know how to load dashboard %s" % url
+
+    def multiDashboardView(self, request, context):
+        head_template = self.head_template
+        tail_template = self.tail_template
+
+        body = """
+         <div id="hometabs" >
+         <ul id="suit_form_tabs" class="nav nav-tabs nav-tabs-suit" data-tab-prefix="suit-tab">
+        """
+
+        dashboards = request.user.get_dashboards()
+
+        # customize is a special dashboard they always get
+        customize = DashboardView.objects.filter(name="Customize")
+        if customize:
+            dashboards.append(customize[0])
+
+        for i,view in enumerate(dashboards):
+            body = body + '<li><a href="#dashtab-%d">%s</a></li>\n' % (i, view.name)
+
+        body = body + "</ul>\n"
+
+        for i,view in enumerate(dashboards):
+            url = view.url
+            body = body + '<div id="dashtab-%d">\n' % i
+            body = body + self.embedDashboard(url)
+            body = body + '</div>\n'
+
+        body=body+"</div>\n"
+
+        t = template.Template(head_template + body + self.tail_template)
+
+        response_kwargs = {}
+        response_kwargs.setdefault('content_type', self.content_type)
+        return self.response_class(\r
+            request = request,\r
+            template = t,\r
+            context = context,\r
+            **response_kwargs)
+
+    def singleDashboardView(self, request, name, context):
+        head_template = self.head_template
+        tail_template = self.tail_template
+
+        t = template.Template(head_template + self.readTemplate(name) + self.tail_template)
+
+        response_kwargs = {}
+        response_kwargs.setdefault('content_type', self.content_type)
+        return self.response_class(\r
+            request = request,\r
+            template = t,\r
+            context = context,\r
+            **response_kwargs)
+
diff --git a/planetstack/core/dashboard/views/interactions.py b/planetstack/core/dashboard/views/interactions.py
new file mode 100644 (file)
index 0000000..a2f88ff
--- /dev/null
@@ -0,0 +1,103 @@
+from view_common import *
+
+class DashboardSliceInteractions(View):
+    def get(self, request, name="users", **kwargs):
+        colors = ["#005586", "#6ebe49", "orange", "#707170", "#00c4b3", "#077767", "dodgerblue", "#a79b94", "#c4e76a", "red"]
+
+        groups = []
+        matrix = []
+        slices = list(Slice.objects.all())
+
+        ids_by_slice = self.build_id_list(slices, name)
+
+        slices = [x for x in slices if (len(ids_by_slice[x])>0)]
+
+        for i,slice in enumerate(slices):
+            groups.append({"name": slice.name, "color": colors[i%len(colors)]})
+            row=self.buildMatrix(slice, slices, name, ids_by_slice)
+            matrix.append(row)
+
+        result = {"groups": groups, "matrix": matrix}
+
+        if name=="users":
+            result["title"] = "Slice interactions by user privilege"
+            result["objectName"] = "users"
+        elif name=="networks":
+            result["title"] = "Slice interactions by network membership"
+            result["objectName"] = "networks"
+        elif name=="sites":
+            result["title"] = "Slice interactions by site ownership"
+            result["objectName"] = "sites"
+        elif name=="sliver_sites":
+            result["title"] = "Slice interactions by sliver sites"
+            result["objectName"] = "sites"
+        elif name=="sliver_nodes":
+            result["title"] = "Slice interactions by sliver nodes"
+            result["objectName"] = "nodes"
+
+        return HttpResponse(json.dumps(result), content_type='application/javascript')
+
+    def build_id_list(self, slices, name):
+        ids_by_slice = {}
+        for slice in slices:
+            # build up a list of object ids that are used by each slice
+            ids_by_slice[slice] = self.getIds(slice, name)
+
+        return ids_by_slice
+
+    def buildMatrix(self, slice, slices, name, ids_by_slice):
+        not_only_my_ids = []
+
+        # build up a list of object ids that are used by other slices
+        for otherSlice in ids_by_slice.keys():
+            if (slice != otherSlice):
+                for id in ids_by_slice[otherSlice]:
+                    if not id in not_only_my_ids:
+                        not_only_my_ids.append(id)
+
+        # build up a list of ids that are used only by the slice, and not
+        # shared with any other slice
+        only_my_ids = []
+        for id in ids_by_slice[slice]:
+             if id not in not_only_my_ids:
+                  only_my_ids.append(id)
+
+        row = []
+        for otherSlice in ids_by_slice.keys():
+            if (otherSlice == slice):
+                row.append(len(only_my_ids))
+            else:
+                row.append(self.inCommonIds(ids_by_slice[slice], ids_by_slice[otherSlice]))
+
+        return row
+
+    def getIds(self, slice, name):
+        ids=[]
+        if name=="users":
+            for sp in slice.slice_privileges.all():
+                    if sp.user.id not in ids:
+                        ids.append(sp.user.id)
+        elif name=="networks":
+            for sp in slice.networkslice_set.all():
+                    if sp.network.id not in ids:
+                        ids.append(sp.network.id)
+        elif name=="sites":
+            ids = [slice.site.id]
+        elif name=="sliver_sites":
+            for sp in slice.slivers.all():
+                 if sp.node.site.id not in ids:
+                     ids.append(sp.node.site.id)
+        elif name=="sliver_nodes":
+            for sp in slice.slivers.all():
+                 if sp.node.id not in ids:
+                     ids.append(sp.node.id)
+        return ids
+
+    def inCommonIds(self, ids1, ids2):
+        count = 0
+        for id in ids1:
+            if id in ids2:
+                count+=1
+        return count
+
+
diff --git a/planetstack/core/dashboard/views/shell.py b/planetstack/core/dashboard/views/shell.py
new file mode 100644 (file)
index 0000000..5efe239
--- /dev/null
@@ -0,0 +1,92 @@
+# /opt/planetstack/core/dashboard/views/helloworld.py
+import datetime
+import os
+import sys
+import time
+import json
+from django.http import HttpResponse, HttpResponseServerError, HttpResponseForbidden
+from django.views.generic import TemplateView, View
+from core.models import *
+from django.forms.models import model_to_dict
+
+def ensure_serializable(d):
+    d2={}
+    for (k,v) in d.items():
+        # datetime is not json serializable
+        if isinstance(v, datetime.datetime):
+            d2[k] = time.mktime(v.timetuple())
+        elif v.__class__.__name__ == "Geoposition":
+            pass
+        else:
+            d2[k] = v
+    return d2
+
+def sliver_to_dict(sliver):
+    d = model_to_dict(sliver)
+    d["slice_id"] = sliver.slice.id
+    d["node_id"] = sliver.node.id
+    return d
+
+def slice_to_dict(slice):
+    d = model_to_dict(slice)
+    d["slivers"] = [sliver_to_dict(x) for x in slice.slivers]
+    return d
+
+def node_to_dict(node):
+    d = model_to_dict(node)
+    d["slivers"] = []
+
+
+class OpenCloudData:
+    def __init__(self, user):
+        self.loadAll()
+
+    def loadAll(self):
+        self.allNodes = list(Node.objects.all())
+        self.allSlices = list(Slice.objects.all())
+        self.allSlivers = list(Sliver.objects.all())
+        self.allSites = list(Site.objects.all())
+
+        self.site_id = {}
+        for site in self.allSites:
+            d = model_to_dict(site)
+            d["node_ids"] = []
+            d["slice_ids"] = []
+            self.site_id[site.id] = ensure_serializable(d)
+
+        self.node_id = {}
+        for node in self.allNodes:
+            d = model_to_dict(node)
+            d["sliver_ids"] = []
+            self.node_id[node.id] = ensure_serializable(d)
+            self.site_id[node.site_id]["node_ids"].append(node.id)
+
+        self.slice_id = {}
+        for slice in self.allSlices:
+            d = model_to_dict(slice)
+            d["sliver_ids"] = []
+            self.slice_id[slice.id] = ensure_serializable(d)
+            self.site_id[slice.site_id]["slice_ids"].append(site.id)
+
+        print self.slice_id.keys()
+
+        self.sliver_id = {}
+        for sliver in self.allSlivers:
+            self.sliver_id[sliver.id] = model_to_dict(sliver)
+
+            self.slice_id[sliver.slice_id]["sliver_ids"].append(sliver.id)
+            self.node_id[sliver.node_id]["sliver_ids"].append(sliver.id)
+
+    def get_opencloud_data(self):
+        return {"slices": self.slice_id.values(),
+                "slivers": self.sliver_id.values(),
+                "nodes": self.node_id.values(),
+                "sites": self.site_id.values()}
+
+class ShellDataView(View):
+    url = r'^shelldata/'
+
+    def get(self, request, **kwargs):
+        result = OpenCloudData(request.user).get_opencloud_data()
+
+        return HttpResponse(json.dumps(result), mimetype='application/json')
diff --git a/planetstack/core/dashboard/views/simulator.py b/planetstack/core/dashboard/views/simulator.py
new file mode 100644 (file)
index 0000000..43332ab
--- /dev/null
@@ -0,0 +1,18 @@
+from view_common import *
+
+class SimulatorView(View):
+    def get(self, request, **kwargs):
+        sim = json.loads(file("/tmp/simulator.json","r").read())
+        text = "<html><head></head><body>"
+        text += "Iteration: %d<br>" % sim["iteration"]
+        text += "Elapsed since report %d<br><br>" % sim["elapsed_since_report"]
+        text += "<table border=1>"
+        text += "<tr><th>site</th><th>trend</th><th>weight</th><th>bytes_sent</th><th>hot</th></tr>"
+        for site in sim["site_load"].values():
+            text += "<tr>"
+            text += "<td>%s</td><td>%0.2f</td><td>%0.2f</td><td>%d</td><td>%0.2f</td>" % \
+                        (site["name"], site["trend"], site["weight"], site["bytes_sent"], site["load_frac"])
+            text += "</tr>"
+        text += "</table>"
+        text += "</body></html>"
+        return HttpResponse(text)
diff --git a/planetstack/core/dashboard/views/tenant.py b/planetstack/core/dashboard/views/tenant.py
new file mode 100644 (file)
index 0000000..930ccf6
--- /dev/null
@@ -0,0 +1,339 @@
+from view_common import *
+import functools
+
+BLESSED_SITES = ["Stanford", "Washington", "Princeton", "GeorgiaTech", "MaxPlanck"]
+
+class TenantCreateSlice(View):
+    def post(self, request, *args, **kwargs):
+        if request.user.isReadOnlyUser():
+            return HttpResponseForbidden("User is in read-only mode")
+
+        sliceName = request.POST.get("sliceName", "0")
+        serviceClass = request.POST.get("serviceClass", "0")
+        imageName = request.POST.get("imageName", "0")
+        actionToDo = request.POST.get("actionToDo", "0")
+        networkPorts = request.POST.get("network","0")
+        mountDataSets = request.POST.get("mountDataSets","0")
+        privateVolume = request.POST.get("privateVolume","0")
+        if (actionToDo == "add"):
+           serviceClass = ServiceClass.objects.get(name=serviceClass)
+           site = request.user.site
+           image = Image.objects.get(name=imageName)
+           newSlice = Slice(name=sliceName,serviceClass=serviceClass,site=site,imagePreference=image,mountDataSets=mountDataSets)
+           newSlice.save()
+          privateTemplate="Private"
+          publicTemplate="Public shared IPv4"\r
+          privateNetworkName = sliceName+"-"+privateTemplate\r
+          publicNetworkName = sliceName+"-"+publicTemplate\r
+          slice=Slice.objects.get(name=sliceName)\r
+          addNetwork(privateNetworkName,privateTemplate,slice)\r
+          addNetwork(publicNetworkName,publicTemplate,slice)\r
+          addOrModifyPorts(networkPorts,sliceName)\r
+          if privateVolume=="true":\r
+               privateVolForSlice(request.user,sliceName)
+        return HttpResponse(json.dumps("Slice created"), content_type='application/javascript')
+
+def privateVolForSlice(user,sliceName):
+       if not hasPrivateVolume(sliceName):\r
+          volumeName=createPrivateVolume(user,sliceName)\r
+          readWrite="true"\r
+          mountVolume(sliceName,volumeName,readWrite)
+
+class TenantUpdateSlice(View):
+    def post(self, request, *args, **kwargs):\r
+        if request.user.isReadOnlyUser():\r
+            return HttpResponseForbidden("User is in read-only mode")\r
+\r
+        sliceName = request.POST.get("sliceName", "0")\r
+        serviceClass = request.POST.get("serviceClass", "0")\r
+        imageName = request.POST.get("imageName", "0")\r
+        actionToDo = request.POST.get("actionToDo", "0")\r
+        networkPorts = request.POST.get("networkPorts","0")\r
+        dataSet = request.POST.get("dataSet","0")\r
+        privateVolume = request.POST.get("privateVolume","0")\r
+        slice = Slice.objects.all()\r
+        for entry in slice:\r
+                serviceClass = ServiceClass.objects.get(name=serviceClass)\r
+                if(entry.name==sliceName):\r
+                         if (actionToDo == "update"):\r
+                                setattr(entry,'serviceClass',serviceClass)\r
+                                setattr(entry,'imagePreference',imageName)\r
+                                setattr(entry,'mountDataSets',dataSet)\r
+                                entry.save()\r
+                                break\r
+       addOrModifyPorts(networkPorts,sliceName)\r
+       if privateVolume=="true":\r
+                privateVolForSlice(request.user,sliceName)\r
+        return HttpResponse(json.dumps("Slice updated"), content_type='application/javascript')\r
+\r
+def addNetwork(name,template,sliceName):\r
+       networkTemplate=NetworkTemplate.objects.get(name=template)\r
+       newNetwork = Network(name = name,\r
+                              template = networkTemplate,\r
+                              owner = sliceName)\r
+        newNetwork.save()\r
+       addNetworkSlice(newNetwork,sliceName)\r
+\r
+def addNetworkSlice(networkSlice,sliceName):\r
+       newNetworkSlice=NetworkSlice(network =networkSlice,\r
+                                    slice=sliceName)\r
+       newNetworkSlice.save()\r
+\r
+def addOrModifyPorts(networkPorts,sliceName):\r
+       networkList = Network.objects.all()\r
+        networkInfo = []\r
+        if networkPorts:\r
+           for networkEntry in networkList:\r
+               networkSlices = networkEntry.slices.all()\r
+               for slice in networkSlices:\r
+                   if slice.name==sliceName:\r
+                          if networkEntry.template.name=="Public shared IPv4":\r
+                             setattr(networkEntry,'ports',networkPorts)\r
+                             networkEntry.save()\r
+\r
+def getTenantSliceInfo(user, tableFormat = False):
+    tenantSliceDetails = {}
+    tenantSliceData = getTenantInfo(user)
+    tenantServiceClassData = getServiceClassInfo(user)
+    if (tableFormat):
+       tenantSliceDetails['userSliceInfo'] = userSliceTableFormatter(tenantSliceData)
+       tenantSliceDetails['sliceServiceClass']=userSliceTableFormatter(tenantServiceClassData)
+    else:
+       tenantSliceDetails['userSliceInfo'] = tenantSliceData
+    tenantSliceDetails['sliceServiceClass']=userSliceTableFormatter(tenantServiceClassData)
+    tenantSliceDetails['image']=userSliceTableFormatter(getImageInfo(user))
+    tenantSliceDetails['deploymentSites']=userSliceTableFormatter(getDeploymentSites())
+    tenantSliceDetails['sites'] = userSliceTableFormatter(getTenantSitesInfo())
+    tenantSliceDetails['mountDataSets'] = userSliceTableFormatter(getMountDataSets())
+    tenantSliceDetails['publicKey'] = getPublicKey(user)
+    return tenantSliceDetails
+
+def getTenantInfo(user):
+    slices =Slice.objects.all()
+    userSliceInfo = []
+    for entry in slices:
+       sliceName = Slice.objects.get(id=entry.id).name
+       slice = Slice.objects.get(name=Slice.objects.get(id=entry.id).name)
+       sliceServiceClass = entry.serviceClass.name
+       preferredImage =  entry.imagePreference
+       #sliceDataSet = entry.mountDataSets
+       sliceNetwork = {}
+       numSliver = 0
+       sliceImage=""
+       sliceSite = {}
+       sliceNode = {}
+       sliceInstance= {}
+       #createPrivateVolume(user,sliceName)
+       for sliver in slice.slivers.all():
+           if sliver.node.site.name in BLESSED_SITES:
+                sliceSite[sliver.node.site.name] = sliceSite.get(sliver.node.site.name,0) + 1
+                sliceImage = sliver.image.name
+                sliceNode[str(sliver)] = sliver.node.name
+       numSliver = sum(sliceSite.values())
+       numSites = len(sliceSite)
+       userSliceInfo.append({'sliceName': sliceName,'sliceServiceClass': sliceServiceClass,'preferredImage':preferredImage,'numOfSites':numSites, 'sliceSite':sliceSite,'sliceImage':sliceImage,'numOfSlivers':numSliver,'instanceNodePair':sliceNode})
+    return userSliceInfo
+
+def getTenantSitesInfo():
+       tenantSiteInfo=[]
+        for entry in Site.objects.all():
+            if entry.name in BLESSED_SITES:
+                tenantSiteInfo.append({'siteName':entry.name})
+       return tenantSiteInfo
+
+def getPublicKey(user):
+       users=User.objects.all()\r
+        for key in users:\r
+               if (str(key.email)==str(user)):\r
+                       sshKey = key.public_key\r
+        return sshKey
+
+def getServiceClassInfo(user):
+    serviceClassList = ServiceClass.objects.all()
+    sliceInfo = []
+    for entry in serviceClassList:
+          sliceInfo.append({'serviceClass':entry.name})
+    return sliceInfo
+
+def getImageInfo(user):
+    imageList = Image.objects.all()
+    #imageList = ['Fedora 16 LXC rev 1.3','Hadoop','MPI']
+    imageInfo = []
+    for imageEntry in imageList:
+          imageInfo.append({'Image':imageEntry.name})
+          #imageInfo.append({'Image':imageEntry})
+    return imageInfo
+
+def createPrivateVolume(user, sliceName):
+    caps = Volume.CAP_READ_DATA | Volume.CAP_WRITE_DATA | Volume.CAP_HOST_DATA
+    getattr(Volume.default_gateway_caps,"read data") | \
+           getattr(Volume.default_gateway_caps,"write data") | \
+           getattr(Volume.default_gateway_caps,"host files")
+    v = Volume(name="private_" + sliceName, owner_id=user, description="private volume for %s" % sliceName, blocksize=61440, private=True, archive=False, default_gateway_caps = caps)
+    v.save()
+    return v
+
+SYNDICATE_REPLICATE_PORTNUM = 1025
+
+def get_free_port():
+    inuse={}
+    inuse[SYNDICATE_REPLICATE_PORTNUM] = True
+    for vs in VolumeSlice.objects.all():
+        inuse[vs.peer_portnum]=True
+        inuse[vs.replicate_portnum]=True
+    for network in Network.objects.all():
+        if not network.ports:
+            continue
+        network_ports = [x.strip() for x in network.ports.split(",")]
+        for network_port in network_ports:
+            try:
+                inuse[int(network_port)] = True
+            except:
+                # in case someone has put a malformed port number in the list
+                pass
+    for i in range(1025, 65535):
+        if not inuse.get(i,False):
+            return i
+    return False
+
+def mountVolume(sliceName, volumeName, readWrite):
+    slice = Slice.objects.get(name=sliceName)
+    volume = Volume.objects.get(name=volumeName)
+    # choose some unused port numbers
+    flags = Volume.CAP_READ_DATA
+    if readWrite:
+        flags = flags | Volume.CAP_WRITE_DATA
+    vs = VolumeSlice(volume_id = volume, slice_id = slice, gateway_caps=flags, peer_portnum = get_free_port(), replicate_portnum = SYNDICATE_REPLICATE_PORTNUM)
+    vs.save()
+
+def hasPrivateVolume(sliceName):
+     slice = Slice.objects.get(name=sliceName)
+     for vs in VolumeSlice.objects.filter(slice_id=slice):
+         if vs.volume_id.private:
+             return True
+     return False
+
+def getMountDataSets():
+        dataSetInfo=[]\r
+        for volume in Volume.objects.all():\r
+            if not volume.private:\r
+                dataSetInfo.append({'DataSet': volume.name})\r
+\r
+        return dataSetInfo
+
+def getDeploymentSites():
+    deploymentList = Deployment.objects.all()
+    deploymentInfo = []
+    for entry in deploymentList:
+        deploymentInfo.append({'DeploymentSite':entry.name})
+    return deploymentInfo
+
+class TenantDeleteSliceView(View):
+        def post(self,request):\r
+                if request.user.isReadOnlyUser():\r
+                    return HttpResponseForbidden("User is in read-only mode")\r
+                sliceName = request.POST.get("sliceName",None)\r
+                slice = Slice.objects.get(name=sliceName)\r
+                #print slice, slice.id\r
+                sliceToDel=Slice(name=sliceName, id=slice.id)\r
+                sliceToDel.delete()
+                return HttpResponse(json.dumps("Slice deleted"), content_type='application/javascript')
+
+class TenantAddOrRemoveSliverView(View):
+    """ Add or remove slivers from a Slice
+
+        Arguments:
+            siteName - name of site. If not specified, PlanetStack will pick the
+                       best site.,
+            actionToDo - [add | rem]
+            count - number of slivers to add or remove
+            sliceName - name of slice
+            noAct - if set, no changes will be made to db, but result will still
+                    show which sites would have been modified.
+
+        Returns:
+            Dictionary of sites that were modified, and the count of nodes
+            that were added or removed at each site.
+    """
+    def post(self, request, *args, **kwargs):
+        siteName = request.POST.get("siteName", None)
+        actionToDo = request.POST.get("actionToDo", None)
+        count = int(request.POST.get("count","0"))
+       sliceName = request.POST.get("slice", None)
+        noAct = request.POST.get("noAct", False)
+
+        if not sliceName:
+            return HttpResponseServerError("No slice name given")
+
+        slice = Slice.objects.get(name=sliceName)
+
+        if siteName:
+            siteList = [Site.objects.get(name=siteName)]
+        else:
+            siteList = None
+
+        if (actionToDo == "add"):
+            user_ip = request.GET.get("ip", get_ip(request))
+            if (siteList is None):
+                siteList = tenant_pick_sites(user, user_ip, slice, count)
+
+            sitesChanged = slice_increase_slivers(request.user, user_ip, siteList, slice, count, noAct)
+        elif (actionToDo == "rem"):
+            sitesChanged = slice_decrease_slivers(request.user, siteList, slice, count, noAct)
+        else:
+            return HttpResponseServerError("Unknown actionToDo %s" % actionToDo)
+
+        return HttpResponse(json.dumps(sitesChanged), content_type='application/javascript')
+
+    def get(self, request, *args, **kwargs):
+        request.POST = request.GET
+        return self.post(request, *args, **kwargs)  # for testing REST in browser
+        #return HttpResponseServerError("GET is not supported")
+
+class TenantPickSitesView(View):
+    """ primarily just for testing purposes """
+    def get(self, request, *args, **kwargs):
+        count = request.GET.get("count","0")
+       slice = request.GET.get("slice",None)
+        if slice:
+            slice = Slice.objects.get(name=slice)
+        ip = request.GET.get("ip", get_ip(request))
+        sites = tenant_pick_sites(request.user, user_ip=ip, count=0, slice=slice)
+        sites = [x.name for x in sites]
+        return HttpResponse(json.dumps(sites), content_type='application/javascript')
+
+def siteSortKey(site, slice=None, count=None, lat=None, lon=None):
+    # try to pick a site we're already using
+    has_slivers_here=False
+    if slice:
+        for sliver in slice.slivers.all():
+            if sliver.node.site.name == site.name:
+                has_slivers_here=True
+
+    # Haversine method
+    d = haversine(site.location.latitude, site.location.longitude, lat, lon)
+
+    return (-has_slivers_here, d)
+
+def tenant_pick_sites(user, user_ip=None, slice=None, count=None):
+    """ Returns list of sites, sorted from most favorable to least favorable """
+    lat=None
+    lon=None
+    try:
+        client_geo = GeoIP().city(user_ip)
+        if client_geo:
+            lat=float(client_geo["latitude"])
+            lon=float(client_geo["longitude"])
+    except:
+        print "exception in geo code"
+        traceback.print_exc()
+
+    sites = Site.objects.all()
+    sites = [x for x in sites if x.name in BLESSED_SITES]
+    sites = sorted(sites, key=functools.partial(siteSortKey, slice=slice, count=count, lat=lat, lon=lon))
+
+    return sites
+
+class TenantViewData(View):
+    def get(self, request, **kwargs):
+        return HttpResponse(json.dumps(getTenantSliceInfo(request.user, True)), content_type='application/javascript')
diff --git a/planetstack/core/dashboard/views/test.py b/planetstack/core/dashboard/views/test.py
new file mode 100644 (file)
index 0000000..4eae215
--- /dev/null
@@ -0,0 +1,5 @@
+from view_common import *
+
+class DashboardUserSiteView(View):
+    def get(self, request, **kwargs):
+        return HttpResponse(json.dumps(getDashboardContext(request.user, tableFormat=True)), content_type='application/javascript')
diff --git a/planetstack/core/dashboard/views/view_common.py b/planetstack/core/dashboard/views/view_common.py
new file mode 100644 (file)
index 0000000..1c74f73
--- /dev/null
@@ -0,0 +1,254 @@
+import os
+import sys
+from django.views.generic import TemplateView, View
+import datetime
+from pprint import pprint
+import json
+from syndicate.models import *
+from core.models import *
+from hpc.models import ContentProvider
+from operator import attrgetter
+from django import template
+from django.views.decorators.csrf import csrf_exempt
+from django.http import HttpResponse, HttpResponseServerError, HttpResponseForbidden
+from django.core import urlresolvers
+from django.contrib.gis.geoip import GeoIP
+from django.db.models import Q
+from ipware.ip import get_ip
+from operator import itemgetter, attrgetter
+import traceback
+import math
+
+if os.path.exists("/home/smbaker/projects/vicci/cdn/bigquery"):
+    sys.path.append("/home/smbaker/projects/vicci/cdn/bigquery")
+else:
+    sys.path.append("/opt/planetstack/hpc_wizard")
+from planetstack_analytics import DoPlanetStackAnalytics, PlanetStackAnalytics, RED_LOAD, BLUE_LOAD
+
+def getDashboardContext(user, context={}, tableFormat = False):
+        context = {}
+
+        userSliceData = getSliceInfo(user)
+        if (tableFormat):
+            context['userSliceInfo'] = userSliceTableFormatter(userSliceData)
+        else:
+            context['userSliceInfo'] = userSliceData
+        context['cdnData'] = getCDNOperatorData(wait=False)
+        context['cdnContentProviders'] = getCDNContentProviderData()
+
+        (dashboards, unusedDashboards)= getDashboards(user)
+        unusedDashboards=[x for x in unusedDashboards if x!="Customize"]
+        context['dashboards'] = dashboards
+        context['unusedDashboards'] = unusedDashboards
+
+        return context
+
+def getDashboards(user):
+    dashboards = user.get_dashboards()
+
+    dashboard_names = [d.name for d in dashboards]
+
+    unused_dashboard_names = []
+    for dashboardView in DashboardView.objects.all():
+        if not dashboardView.name in dashboard_names:
+            unused_dashboard_names.append(dashboardView.name)
+
+    return (dashboard_names, unused_dashboard_names)
+
+def getSliceInfo(user):
+    sliceList = Slice.objects.all()
+    slicePrivs = SlicePrivilege.objects.filter(user=user)
+    userSliceInfo = []
+    for entry in slicePrivs:
+
+        slicename = Slice.objects.get(id=entry.slice.id).name
+        slice = Slice.objects.get(name=Slice.objects.get(id=entry.slice.id).name)
+        sliverList=Sliver.objects.all()
+        sites_used = {}
+        for sliver in slice.slivers.all():
+             #sites_used['deploymentSites'] = sliver.node.deployment.name
+             # sites_used[sliver.image.name] = sliver.image.name
+             sites_used[sliver.node.site.name] = sliver.numberCores
+        sliceid = Slice.objects.get(id=entry.slice.id).id
+        try:
+            sliverList = Sliver.objects.filter(slice=entry.slice.id)
+            siteList = {}
+            for x in sliverList:
+               if x.node.site not in siteList:
+                  siteList[x.node.site] = 1
+            slivercount = len(sliverList)
+            sitecount = len(siteList)
+        except:
+            traceback.print_exc()
+            slivercount = 0
+            sitecount = 0
+
+        userSliceInfo.append({'slicename': slicename, 'sliceid':sliceid,
+                              'sitesUsed':sites_used,
+                              'role': SliceRole.objects.get(id=entry.role.id).role,
+                              'slivercount': slivercount,
+                              'sitecount':sitecount})
+
+    return userSliceInfo
+
+def getCDNContentProviderData():
+    cps = []
+    for dm_cp in ContentProvider.objects.all():
+        cp = {"name": dm_cp.name,
+              "account": dm_cp.account}
+        cps.append(cp)
+
+    return cps
+
+def getCDNOperatorData(randomizeData = False, wait=True):
+    HPC_SLICE_NAME = "HyperCache"
+
+    bq = PlanetStackAnalytics()
+
+    rows = bq.get_cached_query_results(bq.compose_cached_query(), wait)
+
+    # wait=False on the first time the Dashboard is opened. This means we might
+    # not have any rows yet. The dashboard code polls every 30 seconds, so it
+    # will eventually pick them up.
+
+    if rows:
+        rows = bq.postprocess_results(rows, filter={"event": "hpc_heartbeat"}, maxi=["cpu"], count=["hostname"], computed=["bytes_sent/elapsed"], groupBy=["Time","site"], maxDeltaTime=80)
+
+        # dictionaryize the statistics rows by site name
+        stats_rows = {}
+        for row in rows:
+            stats_rows[row["site"]] = row
+    else:
+        stats_rows = {}
+
+    slice = Slice.objects.filter(name=HPC_SLICE_NAME)
+    if slice:
+        slice_slivers = list(slice[0].slivers.all())
+    else:
+        slice_slivers = []
+
+    new_rows = {}
+    for site in Site.objects.all():
+        # compute number of slivers allocated in the data model
+        allocated_slivers = 0
+        for sliver in slice_slivers:
+            if sliver.node.site == site:
+                allocated_slivers = allocated_slivers + 1
+
+        stats_row = stats_rows.get(site.name,{})
+
+        max_cpu = stats_row.get("max_avg_cpu", stats_row.get("max_cpu",0))
+        cpu=float(max_cpu)/100.0
+        hotness = max(0.0, ((cpu*RED_LOAD) - BLUE_LOAD)/(RED_LOAD-BLUE_LOAD))
+
+        try:
+           lat=float(site.location.latitude)
+           long=float(site.location.longitude)
+        except:
+           lat=0
+           long=0
+
+        # format it to what that CDN Operations View is expecting
+        new_row = {"lat": lat,
+               "long": long,
+               "health": 0,
+               "numNodes": int(site.nodes.count()),
+               "activeHPCSlivers": int(stats_row.get("count_hostname", 0)),     # measured number of slivers, from bigquery statistics
+               "numHPCSlivers": allocated_slivers,                              # allocated number of slivers, from data model
+               "siteUrl": str(site.site_url),
+               "bandwidth": stats_row.get("sum_computed_bytes_sent_div_elapsed",0),
+               "load": max_cpu,
+               "hot": float(hotness)}
+        new_rows[str(site.name)] = new_row
+
+    # get rid of sites with 0 slivers that overlap other sites with >0 slivers
+    for (k,v) in new_rows.items():
+        bad=False
+        if v["numHPCSlivers"]==0:
+            for v2 in new_rows.values():
+                if (v!=v2) and (v2["numHPCSlivers"]>=0):
+                    d = haversine(v["lat"],v["long"],v2["lat"],v2["long"])
+                    if d<100:
+                         bad=True
+            if bad:
+                del new_rows[k]
+
+    return new_rows
+
+def slice_increase_slivers(user, user_ip, siteList, slice, count, noAct=False):
+    sitesChanged = {}
+
+    # let's compute how many slivers are in use in each node of each site
+    for site in siteList:
+        site.nodeList = list(site.nodes.all())
+        for node in site.nodeList:
+            node.sliverCount = 0
+            for sliver in node.slivers.all():
+                 if sliver.slice.id == slice.id:
+                     node.sliverCount = node.sliverCount + 1
+
+    # Allocate slivers to nodes
+    # for now, assume we want to allocate all slivers from the same site
+    nodes = siteList[0].nodeList
+    while (count>0):
+        # Sort the node list by number of slivers per node, then pick the
+        # node with the least number of slivers.
+        nodes = sorted(nodes, key=attrgetter("sliverCount"))
+        node = nodes[0]
+
+        print "adding sliver at node", node.name, "of site", node.site.name
+
+        if not noAct:
+            sliver = Sliver(name=node.name,
+                        slice=slice,
+                        node=node,
+                        image = Image.objects.all()[0],
+                        creator = User.objects.get(email=user),
+                        deploymentNetwork=node.deployment,
+                        numberCores =1 )
+            sliver.save()
+
+        node.sliverCount = node.sliverCount + 1
+
+        count = count - 1
+
+        sitesChanged[node.site.name] = sitesChanged.get(node.site.name,0) + 1
+
+    return sitesChanged
+
+def slice_decrease_slivers(user, siteList, slice, count, noAct=False):
+    sitesChanged = {}
+    if siteList:
+        siteNames = [site.name for site in siteList]
+    else:
+        siteNames = None
+
+    for sliver in list(slice.slivers.all()):
+        if count>0:
+            if(not siteNames) or (sliver.node.site.name in siteNames):
+                sliver.delete()\r
+                print "deleting sliver",sliver.name,"at node",sliver.node.name\r
+                count=count-1\r
+                sitesChanged[sliver.node.site.name] = sitesChanged.get(sliver.node.site.name,0) - 1\r
+\r
+    return sitesChanged
+
+def haversine(site_lat, site_lon, lat, lon):
+    d=0
+    if lat and lon and site_lat and site_lon:
+        site_lat = float(site_lat)
+        site_lon = float(site_lon)
+        lat = float(lat)
+        lon = float(lon)
+        R = 6378.1
+        a = math.sin( math.radians((lat - site_lat)/2.0) )**2 + math.cos( math.radians(lat) )*math.cos( math.radians(site_lat) )*(math.sin( math.radians((lon - site_lon)/2.0 ) )**2)
+        c = 2 * math.atan2( math.sqrt(a), math.sqrt(1 - a) )
+        d = R * c
+
+    return d
+
+def userSliceTableFormatter(data):
+    formattedData = {
+                     'rows' : data
+                    }
+    return formattedData
index 362105f..adeea1d 100644 (file)
@@ -7,9 +7,10 @@
         "description": "Used to help accelerate delivery of content through the CDN.", 
         "created": "2013-11-26T12:45:24.212Z", 
         "enabled": true, 
+        "name": "HPC Service", 
         "versionNumber": "1.0", 
         "published": true, 
-        "name": "HPC Service"
+        "enacted": null
     }
 },
 {
         "description": "Service to help load balance and direct traffic flow to content within the CDN", 
         "created": "2013-11-26T12:45:59.003Z", 
         "enabled": true, 
+        "name": "Request Router Service", 
         "versionNumber": "1.0", 
         "published": true, 
-        "name": "Request Router Service"
+        "enacted": null
     }
 },
 {
         "description": "Syndicate Shared Filesystem.", 
         "created": "2013-12-04T22:51:07.137Z", 
         "enabled": true, 
+        "name": "Syndicate", 
         "versionNumber": "", 
         "published": true, 
-        "name": "Syndicate"
+        "enacted": null
     }
 },
 {
         "description": "A provisioning service for long-term experiments.", 
         "created": "2013-12-13T21:48:58.304Z", 
         "enabled": true, 
+        "name": "Raven", 
         "versionNumber": "1.0", 
         "published": true, 
-        "name": "Raven"
+        "enacted": null
+    }
+},
+{
+    "pk": 11, 
+    "model": "core.service", 
+    "fields": {
+        "updated": "2014-05-20T18:56:51.847Z", 
+        "description": "Cassandra distributed database management system", 
+        "created": "2014-05-20T18:56:51.847Z", 
+        "enabled": true, 
+        "name": "Cassandra", 
+        "versionNumber": "2.0.7", 
+        "published": true, 
+        "enacted": null
+    }
+},
+{
+    "pk": 12, 
+    "model": "core.service", 
+    "fields": {
+        "updated": "2014-05-20T18:57:33.778Z", 
+        "description": "KairosDB Time Series Database Service", 
+        "created": "2014-05-20T18:57:33.778Z", 
+        "enabled": true, 
+        "name": "KairosDB", 
+        "versionNumber": "0.9.3", 
+        "published": true, 
+        "enacted": null
+    }
+},
+{
+    "pk": 13, 
+    "model": "core.service", 
+    "fields": {
+        "updated": "2014-05-20T18:58:53.563Z", 
+        "description": "Nagios Monitoring Service", 
+        "created": "2014-05-20T18:58:53.563Z", 
+        "enabled": true, 
+        "name": "Nagios", 
+        "versionNumber": "4.0.6", 
+        "published": true, 
+        "enacted": null
     }
 },
 {
         "updated": "2013-12-17T18:00:47.910Z", 
         "name": "Stanford", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.stanford.edu/", 
         "location": "37.4294,-122.17200000000003", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            5
-        ], 
-        "abbreviated_name": ""
+        "abbreviated_name": "", 
+        "enacted": null
     }
 },
 {
         "updated": "2013-12-17T18:00:38.431Z", 
         "name": "Washington", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "https://www.washington.edu/", 
         "location": "47.6531,-122.31299999999999", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            6
-        ], 
-        "abbreviated_name": ""
+        "abbreviated_name": "", 
+        "enacted": null
     }
 },
 {
         "updated": "2013-12-17T18:00:28.495Z", 
         "name": "Princeton", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://princeton.edu/", 
         "location": "40.3502,-74.6524", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            7
-        ], 
-        "abbreviated_name": ""
+        "abbreviated_name": "", 
+        "enacted": null
     }
 },
 {
         "updated": "2013-12-17T18:00:18.964Z", 
         "name": "GeorgiaTech", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.gatech.edu/", 
         "location": "33.7772,-84.39760000000001", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            8
-        ], 
-        "abbreviated_name": ""
+        "abbreviated_name": "", 
+        "enacted": null
     }
 },
 {
         "updated": "2013-12-17T18:00:07.704Z", 
         "name": "MaxPlanck", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.mpi-sws.mpg.de/", 
         "location": "49.14,6.588999999999942", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            9
-        ], 
-        "abbreviated_name": ""
+        "abbreviated_name": "", 
+        "enacted": null
     }
 },
 {
         "updated": "2013-06-21T21:17:13.982Z", 
         "name": "I2 Atlanta", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.internet2.edu", 
         "location": "33.0075,-84.0038", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            10
-        ], 
-        "abbreviated_name": ""
+        "abbreviated_name": "", 
+        "enacted": null
     }
 },
 {
         "updated": "2013-06-21T21:17:13.982Z", 
         "name": "I2 Chicago", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.internet2.edu", 
         "location": "41.0085,-87.0065", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            10
-        ], 
-        "abbreviated_name": ""
+        "abbreviated_name": "", 
+        "enacted": null
     }
 },
 {
         "updated": "2013-06-21T21:17:13.982Z", 
         "name": "I2 Houston", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.internet2.edu", 
         "location": "29.0077,-95.0037", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            10
-        ], 
-        "abbreviated_name": ""
+        "abbreviated_name": "", 
+        "enacted": null
     }
 },
 {
         "updated": "2013-06-21T21:17:13.982Z", 
         "name": "I2 Kansas City", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.internet2.edu", 
         "location": "39.0012,-94.0063", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            10
-        ], 
-        "abbreviated_name": ""
+        "abbreviated_name": "", 
+        "enacted": null
     }
 },
 {
         "updated": "2013-06-21T21:17:13.982Z", 
         "name": "I2 Los Angeles", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.internet2.edu", 
         "location": "33.2505,-117.503", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            10
-        ], 
-        "abbreviated_name": ""
+        "abbreviated_name": "", 
+        "enacted": null
     }
 },
 {
         "updated": "2013-06-21T21:17:13.982Z", 
         "name": "I2 New York", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.internet2.edu", 
         "location": "40.72,-73.99", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            10
-        ], 
-        "abbreviated_name": ""
+        "abbreviated_name": "", 
+        "enacted": null
     }
 },
 {
         "updated": "2013-06-21T21:17:13.982Z", 
         "name": "I2 Salt Lake City", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.internet2.edu", 
         "location": "40.7659,-111.844", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            10
-        ], 
-        "abbreviated_name": ""
+        "abbreviated_name": "", 
+        "enacted": null
     }
 },
 {
     "pk": 20, 
     "model": "core.site", 
     "fields": {
-        "updated": "2013-06-21T21:17:13.982Z", 
+        "updated": "2014-03-22T06:27:07.824Z", 
         "name": "I2 Seattle", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
-        "site_url": "http://www.internet2.edu", 
+        "site_url": "http://www.internet2.edu/", 
         "login_base": "i2seat", 
-        "location": "47.6531,-122.313", 
+        "location": "47.6531,-122.31299999999999", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            10
-        ], 
-        "abbreviated_name": ""
+        "abbreviated_name": "", 
+        "enacted": null
     }
 },
 {
         "updated": "2013-06-21T21:17:13.982Z", 
         "name": "I2 Washington DC", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.internet2.edu", 
         "location": "38.009,-77.0003", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            10
-        ], 
-        "abbreviated_name": ""
+        "abbreviated_name": "", 
+        "enacted": null
     }
 },
 {
         "updated": "2013-12-17T17:30:14.491Z", 
         "name": "ON.Lab", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.onlab.us/", 
         "location": "37.452955,-122.18176599999998", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            5, 
-            6, 
-            7, 
-            8, 
-            9, 
-            10
-        ], 
-        "abbreviated_name": ""
+        "abbreviated_name": "", 
+        "enacted": null
     }
 },
 {
         "updated": "2013-12-17T18:21:43.870Z", 
         "name": "I2 Singapore", 
         "created": "2013-12-17T17:08:49.669Z", 
-        "tenant_id": null, 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.internet2.edu/", 
         "location": "1.33544,103.88999999999999", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            10
-        ], 
-        "abbreviated_name": ""
+        "abbreviated_name": "", 
+        "enacted": null
     }
 },
 {
         "updated": "2013-12-17T18:08:01.373Z", 
         "name": "Arizona", 
         "created": "2013-12-17T18:07:14.190Z", 
-        "tenant_id": null, 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.cs.arizona.edu/", 
         "location": "32.2333,-110.94799999999998", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": []
-        "abbreviated_name": ""
+        "abbreviated_name": ""
+        "enacted": null
     }
 },
 {
     "model": "core.siterole", 
     "fields": {
         "updated": "2013-12-17T18:08:54.842Z", 
+        "enacted": null, 
         "role": "pi", 
         "created": "2013-12-17T18:08:54.842Z"
     }
 },
+{
+    "pk": 2, 
+    "model": "core.siterole", 
+    "fields": {
+        "updated": "2014-04-22T11:34:09.655Z", 
+        "enacted": null, 
+        "role": "admin", 
+        "created": "2014-04-22T11:34:09.655Z"
+    }
+},
+{
+    "pk": 3, 
+    "model": "core.siterole", 
+    "fields": {
+        "updated": "2014-04-22T11:34:27.403Z", 
+        "enacted": null, 
+        "role": "tech", 
+        "created": "2014-04-22T11:34:27.403Z"
+    }
+},
+{
+    "pk": 4, 
+    "model": "core.siterole", 
+    "fields": {
+        "updated": "2014-04-22T11:34:39.770Z", 
+        "enacted": null, 
+        "role": "billing", 
+        "created": "2014-04-22T11:34:39.770Z"
+    }
+},
 {
     "pk": 5, 
     "model": "core.deployment", 
     "fields": {
+        "accessControl": "allow all", 
         "updated": "2013-04-03T22:57:23.015Z", 
+        "admin_user": null, 
         "name": "US-Stanford", 
-        "created": "2013-04-03T22:57:23.015Z"
+        "created": "2013-04-03T22:57:23.015Z", 
+        "auth_url": null, 
+        "admin_password": null, 
+        "admin_tenant": null, 
+        "enacted": null
     }
 },
 {
     "pk": 6, 
     "model": "core.deployment", 
     "fields": {
+        "accessControl": "allow all", 
         "updated": "2013-04-03T22:57:23.015Z", 
+        "admin_user": null, 
         "name": "US-Washington", 
-        "created": "2013-04-03T22:57:23.015Z"
+        "created": "2013-04-03T22:57:23.015Z", 
+        "auth_url": null, 
+        "admin_password": null, 
+        "admin_tenant": null, 
+        "enacted": null
     }
 },
 {
     "pk": 7, 
     "model": "core.deployment", 
     "fields": {
+        "accessControl": "allow all", 
         "updated": "2013-04-03T22:57:23.015Z", 
+        "admin_user": null, 
         "name": "US-Princeton", 
-        "created": "2013-04-03T22:57:23.015Z"
+        "created": "2013-04-03T22:57:23.015Z", 
+        "auth_url": null, 
+        "admin_password": null, 
+        "admin_tenant": null, 
+        "enacted": null
     }
 },
 {
     "pk": 8, 
     "model": "core.deployment", 
     "fields": {
+        "accessControl": "allow all", 
         "updated": "2013-04-03T22:57:23.015Z", 
+        "admin_user": null, 
         "name": "US-GeorgiaTech", 
-        "created": "2013-04-03T22:57:23.015Z"
+        "created": "2013-04-03T22:57:23.015Z", 
+        "auth_url": null, 
+        "admin_password": null, 
+        "admin_tenant": null, 
+        "enacted": null
     }
 },
 {
     "pk": 9, 
     "model": "core.deployment", 
     "fields": {
+        "accessControl": "allow all", 
         "updated": "2013-04-03T22:57:23.015Z", 
+        "admin_user": null, 
         "name": "EU-MaxPlanck", 
-        "created": "2013-04-03T22:57:23.015Z"
+        "created": "2013-04-03T22:57:23.015Z", 
+        "auth_url": null, 
+        "admin_password": null, 
+        "admin_tenant": null, 
+        "enacted": null
     }
 },
 {
     "pk": 10, 
     "model": "core.deployment", 
     "fields": {
+        "accessControl": "allow all", 
         "updated": "2013-04-03T22:57:23.015Z", 
+        "admin_user": null, 
         "name": "Internet2", 
-        "created": "2013-04-03T22:57:23.015Z"
+        "created": "2013-04-03T22:57:23.015Z", 
+        "auth_url": null, 
+        "admin_password": null, 
+        "admin_tenant": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 11, 
+    "model": "core.deployment", 
+    "fields": {
+        "accessControl": "allow all", 
+        "updated": "2014-05-22T22:49:27.623Z", 
+        "admin_user": null, 
+        "name": "Amazon EC2", 
+        "created": "2014-05-22T22:49:27.623Z", 
+        "auth_url": null, 
+        "admin_password": null, 
+        "admin_tenant": null, 
+        "enacted": null
     }
 },
 {
     "pk": 1, 
-    "model": "core.user", 
+    "model": "core.sitedeployments", 
     "fields": {
-        "username": "padmin@vicci.org", 
-        "public_key": null, 
-        "updated": "2013-11-26T12:36:49.829Z", 
-        "is_readonly": false, 
-        "firstname": "OpenCloud", 
-        "user_url": null, 
-        "lastname": "Admin", 
-        "created": "2013-11-26T12:36:49.816Z", 
-        "is_active": true, 
-        "site": null, 
-        "phone": null, 
-        "kuser_id": null, 
-        "is_staff": true, 
-        "last_login": "2013-12-13T05:21:52.645Z", 
-        "timezone": "America/New_York", 
-        "is_admin": true, 
-        "password": "pbkdf2_sha256$10000$v5qKhIyhSQ2N$V8vh2mkqYdjQib6d2jBkpwV57eMBfhd/9eiXqaDLUWg=", 
-        "email": "padmin@vicci.org", 
-        "enacted": null,
-        "backend_status":"ok"
+        "updated": "2014-05-07T23:52:01.453Z", 
+        "created": "2014-05-07T23:52:01.453Z", 
+        "tenant_id": null, 
+        "site": 22, 
+        "deployment": 5, 
+        "enacted": null
     }
 },
 {
     "pk": 2, 
-    "model": "core.user", 
+    "model": "core.sitedeployments", 
     "fields": {
-        "username": "tony@onlab.us", 
-        "public_key": null, 
-        "updated": "2013-09-22T21:47:30.993Z", 
-        "is_readonly": false, 
-        "firstname": "Tony", 
-        "user_url": null, 
-        "lastname": "Mack", 
-        "created": "2013-09-22T21:47:30.959Z", 
-        "is_active": true, 
+        "updated": "2014-05-07T23:52:01.455Z", 
+        "created": "2014-05-07T23:52:01.455Z", 
+        "tenant_id": null, 
         "site": 22, 
-        "phone": null, 
-        "kuser_id": null, 
-        "is_staff": true, 
-        "last_login": "2013-12-14T03:21:24.872Z", 
-        "timezone": "America/New_York", 
-        "is_admin": true, 
-        "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
-        "email": "tony@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "deployment": 6, 
+        "enacted": null
     }
 },
 {
     "pk": 3, 
-    "model": "core.user", 
+    "model": "core.sitedeployments", 
     "fields": {
-        "username": "mike@onlab.us", 
-        "public_key": null, 
-        "updated": "2013-09-22T21:47:30.993Z", 
-        "is_readonly": false, 
-        "firstname": "Mike", 
-        "user_url": null, 
-        "lastname": "Wawrzoniak", 
-        "created": "2013-09-22T21:47:30.959Z", 
-        "is_active": true, 
+        "updated": "2014-05-07T23:52:01.456Z", 
+        "created": "2014-05-07T23:52:01.456Z", 
+        "tenant_id": null, 
         "site": 22, 
-        "phone": null, 
-        "kuser_id": null, 
-        "is_staff": true, 
-        "last_login": "2013-12-04T20:46:15.904Z", 
-        "timezone": "America/New_York", 
-        "is_admin": true, 
-        "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
-        "email": "mike@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "deployment": 7, 
+        "enacted": null
     }
 },
 {
     "pk": 4, 
-    "model": "core.user", 
+    "model": "core.sitedeployments", 
     "fields": {
-        "username": "andy@onlab.us", 
-        "public_key": null, 
-        "updated": "2013-09-22T21:47:30.993Z", 
-        "is_readonly": false, 
-        "firstname": "Andy", 
-        "user_url": null, 
-        "lastname": "Bavier", 
-        "created": "2013-09-22T21:47:30.959Z", 
-        "is_active": true, 
+        "updated": "2014-05-07T23:52:01.457Z", 
+        "created": "2014-05-07T23:52:01.456Z", 
+        "tenant_id": null, 
         "site": 22, 
-        "phone": null, 
-        "kuser_id": null, 
-        "is_staff": true, 
-        "last_login": "2013-12-17T18:22:01.970Z", 
-        "timezone": "America/New_York", 
-        "is_admin": true, 
-        "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
-        "email": "andy@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "deployment": 8, 
+        "enacted": null
     }
 },
 {
     "pk": 5, 
-    "model": "core.user", 
+    "model": "core.sitedeployments", 
     "fields": {
-        "username": "sapan@onlab.us", 
-        "public_key": null, 
-        "updated": "2013-09-22T21:47:30.993Z", 
-        "is_readonly": false, 
-        "firstname": "Sapan", 
-        "user_url": null, 
-        "lastname": "Bhatia", 
-        "created": "2013-09-22T21:47:30.959Z", 
-        "is_active": true, 
+        "updated": "2014-05-07T23:52:01.457Z", 
+        "created": "2014-05-07T23:52:01.457Z", 
+        "tenant_id": null, 
         "site": 22, 
-        "phone": null, 
-        "kuser_id": null, 
-        "is_staff": true, 
-        "last_login": "2013-12-17T16:21:46.493Z", 
-        "timezone": "America/New_York", 
-        "is_admin": true, 
-        "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
-        "email": "sapan@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "deployment": 9, 
+        "enacted": null
     }
 },
 {
     "pk": 6, 
-    "model": "core.user", 
+    "model": "core.sitedeployments", 
     "fields": {
-        "username": "jcnelson@cs.princeton.edu", 
-        "public_key": "", 
-        "updated": "2013-12-16T15:44:27.429Z", 
-        "is_readonly": false, 
-        "firstname": "Jude", 
-        "user_url": null, 
-        "lastname": "Nelson", 
-        "created": "2013-09-22T21:47:30.959Z", 
-        "is_active": true, 
-        "site": 10, 
-        "phone": "", 
-        "kuser_id": null, 
-        "is_staff": true, 
-        "last_login": "2013-09-22T21:48:01.047Z", 
-        "timezone": "America/New_York", 
-        "is_admin": true, 
-        "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
-        "email": "jcnelson@cs.princeton.edu", 
-        "enacted": null,
-        "backend_status":"ok"
+        "updated": "2014-05-07T23:52:01.458Z", 
+        "created": "2014-05-07T23:52:01.458Z", 
+        "tenant_id": null, 
+        "site": 22, 
+        "deployment": 10, 
+        "enacted": null
     }
 },
 {
     "pk": 7, 
-    "model": "core.user", 
+    "model": "core.sitedeployments", 
     "fields": {
-        "username": "llp@onlab.us", 
-        "public_key": "", 
-        "updated": "2013-12-04T20:47:03.679Z", 
-        "is_readonly": false, 
-        "firstname": "Larry", 
-        "user_url": null, 
-        "lastname": "Peterson", 
-        "created": "2013-09-22T21:47:30.959Z", 
-        "is_active": true, 
-        "site": 22, 
-        "phone": "", 
-        "kuser_id": null, 
-        "is_staff": true, 
-        "last_login": "2013-12-17T17:29:10.464Z", 
-        "timezone": "America/New_York", 
-        "is_admin": true, 
-        "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
-        "email": "llp@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "updated": "2014-05-08T00:00:37.305Z", 
+        "created": "2014-05-08T00:00:37.305Z", 
+        "tenant_id": null, 
+        "site": 23, 
+        "deployment": 10, 
+        "enacted": null
     }
 },
 {
     "pk": 8, 
-    "model": "core.user", 
+    "model": "core.sitedeployments", 
     "fields": {
-        "username": "scott@onlab.us", 
-        "public_key": null, 
-        "updated": "2013-09-22T21:47:30.993Z", 
-        "is_readonly": false, 
-        "firstname": "Scott", 
-        "user_url": null, 
-        "lastname": "Baker", 
-        "created": "2013-09-22T21:47:30.959Z", 
-        "is_active": true, 
-        "site": 22, 
-        "phone": null, 
-        "kuser_id": null, 
-        "is_staff": true, 
-        "last_login": "2013-12-12T17:31:25.520Z", 
-        "timezone": "America/New_York", 
-        "is_admin": true, 
-        "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
-        "email": "scott@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "updated": "2014-05-08T00:01:18.181Z", 
+        "created": "2014-05-08T00:01:18.181Z", 
+        "tenant_id": null, 
+        "site": 21, 
+        "deployment": 10, 
+        "enacted": null
     }
 },
 {
     "pk": 9, 
-    "model": "core.user", 
+    "model": "core.sitedeployments", 
     "fields": {
-        "username": "ali@onlab.us", 
-        "public_key": null, 
-        "updated": "2013-09-22T21:47:30.993Z", 
-        "is_readonly": false, 
-        "firstname": "Ali", 
-        "user_url": null, 
-        "lastname": "Al-Shabibi", 
-        "created": "2013-09-22T21:47:30.959Z", 
-        "is_active": true, 
-        "site": 22, 
-        "phone": null, 
-        "kuser_id": null, 
-        "is_staff": true, 
-        "last_login": "2013-09-22T21:48:01.047Z", 
-        "timezone": "America/New_York", 
-        "is_admin": true, 
-        "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
-        "email": "ali@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "updated": "2014-05-08T00:01:29.768Z", 
+        "created": "2014-05-08T00:01:29.768Z", 
+        "tenant_id": null, 
+        "site": 20, 
+        "deployment": 10, 
+        "enacted": null
     }
 },
 {
     "pk": 10, 
-    "model": "core.user", 
+    "model": "core.sitedeployments", 
     "fields": {
-        "username": "bill@onlab.us", 
-        "public_key": null, 
-        "updated": "2013-09-22T21:47:30.993Z", 
-        "is_readonly": false, 
-        "firstname": "Bill", 
-        "user_url": null, 
-        "lastname": "Snow", 
-        "created": "2013-09-22T21:47:30.959Z", 
-        "is_active": true, 
-        "site": 22, 
-        "phone": null, 
-        "kuser_id": null, 
-        "is_staff": true, 
-        "last_login": "2013-09-22T21:48:01.047Z", 
-        "timezone": "America/New_York", 
-        "is_admin": true, 
-        "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
-        "email": "bill@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "updated": "2014-05-08T00:01:52.173Z", 
+        "created": "2014-05-08T00:01:52.173Z", 
+        "tenant_id": null, 
+        "site": 19, 
+        "deployment": 10, 
+        "enacted": null
     }
 },
 {
     "pk": 11, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:02:03.435Z", 
+        "created": "2014-05-08T00:02:03.435Z", 
+        "tenant_id": null, 
+        "site": 18, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 12, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:02:16.038Z", 
+        "created": "2014-05-08T00:02:16.038Z", 
+        "tenant_id": null, 
+        "site": 17, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 13, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:02:33.626Z", 
+        "created": "2014-05-08T00:02:33.626Z", 
+        "tenant_id": null, 
+        "site": 16, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 14, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:02:46.549Z", 
+        "created": "2014-05-08T00:02:46.549Z", 
+        "tenant_id": null, 
+        "site": 15, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 15, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:03:01.445Z", 
+        "created": "2014-05-08T00:03:01.445Z", 
+        "tenant_id": null, 
+        "site": 14, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 16, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:03:18.238Z", 
+        "created": "2014-05-08T00:03:18.238Z", 
+        "tenant_id": null, 
+        "site": 13, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 17, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:03:32.156Z", 
+        "created": "2014-05-08T00:03:32.156Z", 
+        "tenant_id": null, 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 18, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:03:45.449Z", 
+        "created": "2014-05-08T00:03:45.448Z", 
+        "tenant_id": null, 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 19, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:03:59.510Z", 
+        "created": "2014-05-08T00:03:59.510Z", 
+        "tenant_id": null, 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 20, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:04:12.516Z", 
+        "created": "2014-05-08T00:04:12.516Z", 
+        "tenant_id": null, 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 21, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:04:25.576Z", 
+        "created": "2014-05-08T00:04:25.576Z", 
+        "tenant_id": null, 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 1, 
+    "model": "core.dashboardview", 
+    "fields": {
+        "url": "template:developer", 
+        "updated": "2014-05-19T22:11:11.408Z", 
+        "enacted": null, 
+        "name": "Developer", 
+        "created": "2014-05-19T22:11:11.408Z"
+    }
+},
+{
+    "pk": 2, 
+    "model": "core.dashboardview", 
+    "fields": {
+        "url": "template:cdnoperations", 
+        "updated": "2014-05-19T22:11:32.782Z", 
+        "enacted": null, 
+        "name": "CDN Operations", 
+        "created": "2014-05-19T22:11:32.781Z"
+    }
+},
+{
+    "pk": 3, 
+    "model": "core.dashboardview", 
+    "fields": {
+        "url": "template:tenant", 
+        "updated": "2014-05-19T22:11:46.731Z", 
+        "enacted": null, 
+        "name": "Tenant", 
+        "created": "2014-05-19T22:11:46.731Z"
+    }
+},
+{
+    "pk": 4, 
+    "model": "core.dashboardview", 
+    "fields": {
+        "url": "template:hpc_historical", 
+        "updated": "2014-05-19T22:11:59.956Z", 
+        "enacted": null, 
+        "name": "Historical", 
+        "created": "2014-05-19T22:11:59.956Z"
+    }
+},
+{
+    "pk": 5, 
+    "model": "core.dashboardview", 
+    "fields": {
+        "url": "template:customize", 
+        "updated": "2014-05-20T00:32:44.462Z", 
+        "enacted": null, 
+        "name": "Customize", 
+        "created": "2014-05-20T00:32:44.462Z"
+    }
+},
+{
+    "pk": 6, 
+    "model": "core.dashboardview", 
+    "fields": {
+        "url": "template:slice_interactions", 
+        "updated": "2014-05-20T00:33:32.454Z", 
+        "enacted": null, 
+        "name": "Slice Interactions", 
+        "created": "2014-05-20T00:33:32.454Z"
+    }
+},
+{
+    "pk": 7, 
+    "model": "core.dashboardview", 
+    "fields": {
+        "url": "template:cdn_nodes", 
+        "updated": "2014-05-26T23:12:15.410Z", 
+        "enacted": null, 
+        "name": "CDN Nodes", 
+        "created": "2014-05-20T00:33:52.101Z"
+    }
+},
+{
+    "pk": 8, 
+    "model": "core.dashboardview", 
+    "fields": {
+        "url": "http://nagiosadmin:letmein@node52.princeton.vicci.org:8088/nagios/cgi-bin/status.cgi?host=all", 
+        "updated": "2014-06-18T00:00:43.149Z", 
+        "enacted": null, 
+        "name": "nagios", 
+        "created": "2014-06-18T00:00:43.149Z"
+    }
+},
+{
+    "pk": 9, 
+    "model": "core.dashboardview", 
+    "fields": {
+        "url": "template:shell", 
+        "updated": "2014-06-19T01:34:07.897Z", 
+        "enacted": null, 
+        "name": "shell", 
+        "created": "2014-06-19T01:34:07.897Z"
+    }
+},
+{
+    "pk": 1, 
     "model": "core.user", 
     "fields": {
-        "username": "guru@onlab.us", 
+        "username": "padmin@vicci.org", 
         "public_key": null, 
-        "updated": "2013-09-22T21:47:30.993Z", 
+        "updated": "2013-11-26T12:36:49.829Z", 
         "is_readonly": false, 
-        "firstname": "Guru", 
+        "firstname": "OpenCloud", 
         "user_url": null, 
-        "lastname": "Parulkar", 
-        "created": "2013-09-22T21:47:30.959Z", 
+        "lastname": "Admin", 
+        "created": "2013-11-26T12:36:49.816Z", 
         "is_active": true, 
-        "site": 22
+        "site": null
         "phone": null, 
-        "kuser_id": null, 
         "is_staff": true, 
-        "last_login": "2013-09-22T21:48:01.047Z", 
+        "last_login": "2014-06-17T11:07:08.691Z", 
         "timezone": "America/New_York", 
         "is_admin": true, 
-        "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
-        "email": "guru@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "password": "pbkdf2_sha256$10000$v5qKhIyhSQ2N$V8vh2mkqYdjQib6d2jBkpwV57eMBfhd/9eiXqaDLUWg=", 
+        "email": "padmin@vicci.org", 
+        "enacted": null
     }
 },
 {
-    "pk": 12, 
+    "pk": 2, 
     "model": "core.user", 
     "fields": {
-        "username": "marc@onlab.us", 
-        "public_key": null
-        "updated": "2013-09-22T21:47:30.993Z", 
+        "username": "tmack@cs.princeton.edu", 
+        "public_key": ""
+        "updated": "2014-03-23T23:10:57.378Z", 
         "is_readonly": false, 
-        "firstname": "Marc", 
+        "firstname": "Tony", 
         "user_url": null, 
-        "lastname": "Fiuczynski", 
+        "lastname": "Mack", 
         "created": "2013-09-22T21:47:30.959Z", 
         "is_active": true, 
-        "site": 22, 
-        "phone": null, 
-        "kuser_id": null, 
+        "site": 10, 
+        "phone": "", 
         "is_staff": true, 
-        "last_login": "2013-09-22T21:48:01.047Z", 
+        "last_login": "2013-12-14T03:21:24.872Z", 
         "timezone": "America/New_York", 
         "is_admin": true, 
         "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
-        "email": "marc@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "email": "tmack@cs.princeton.edu", 
+        "enacted": null
     }
 },
 {
-    "pk": 13, 
+    "pk": 3, 
     "model": "core.user", 
     "fields": {
-        "username": "siobhan@onlab.us", 
-        "public_key": null
-        "updated": "2013-09-22T21:47:30.993Z", 
+        "username": "mhw@cs.princeton.edu", 
+        "public_key": ""
+        "updated": "2014-03-23T23:10:01.387Z", 
         "is_readonly": false, 
-        "firstname": "Siobhan", 
+        "firstname": "Mike", 
         "user_url": null, 
-        "lastname": "Tully", 
+        "lastname": "Wawrzoniak", 
         "created": "2013-09-22T21:47:30.959Z", 
         "is_active": true, 
-        "site": 22, 
-        "phone": null, 
-        "kuser_id": null, 
+        "site": 10, 
+        "phone": "", 
         "is_staff": true, 
-        "last_login": "2013-09-22T21:48:01.047Z", 
+        "last_login": "2013-12-04T20:46:15.904Z", 
         "timezone": "America/New_York", 
         "is_admin": true, 
         "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
-        "email": "siobhan@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "email": "mhw@cs.princeton.edu", 
+        "enacted": null
     }
 },
 {
-    "pk": 14, 
+    "pk": 4, 
     "model": "core.user", 
     "fields": {
-        "username": "demo@onlab.us", 
+        "username": "acb@cs.princeton.edu", 
         "public_key": "", 
-        "updated": "2013-12-06T11:25:52.457Z", 
-        "is_readonly": true, 
-        "firstname": "Demo", 
+        "updated": "2014-03-23T23:09:34.844Z", 
+        "is_readonly": false, 
+        "firstname": "Andy", 
         "user_url": null, 
-        "lastname": "OpenCloud", 
-        "created": "2013-12-06T11:25:41.211Z", 
+        "lastname": "Bavier", 
+        "created": "2013-09-22T21:47:30.959Z", 
         "is_active": true, 
-        "site": 22
+        "site": 10
         "phone": "", 
-        "kuser_id": null, 
         "is_staff": true, 
-        "last_login": "2013-12-17T18:54:01.976Z", 
+        "last_login": "2014-05-28T14:02:29.996Z", 
         "timezone": "America/New_York", 
         "is_admin": true, 
-        "password": "pbkdf2_sha256$10000$jaLSTW2ksHEN$HDpjDKieFDjMvtV5wbF/ow3zfq8EqcFtNXLfuo+150s=", 
-        "email": "demo@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
+        "email": "acb@cs.princeton.edu", 
+        "enacted": null
     }
 },
 {
-    "pk": 15, 
+    "pk": 5, 
     "model": "core.user", 
     "fields": {
-        "username": "jhh@cs.arizona.edu", 
+        "username": "sapanb@cs.princeton.edu", 
         "public_key": "", 
-        "updated": "2013-12-17T18:08:58.288Z", 
+        "updated": "2014-03-23T23:10:35.450Z", 
         "is_readonly": false, 
-        "firstname": "John", 
+        "firstname": "Sapan", 
         "user_url": null, 
-        "lastname": "Hartman", 
-        "created": "2013-12-17T18:08:01.381Z", 
+        "lastname": "Bhatia", 
+        "created": "2013-09-22T21:47:30.959Z", 
         "is_active": true, 
-        "site": 24
+        "site": 10
         "phone": "", 
-        "kuser_id": null, 
         "is_staff": true, 
-        "last_login": "2013-12-17T18:08:01.356Z", 
+        "last_login": "2014-05-28T01:03:05.136Z", 
         "timezone": "America/New_York", 
         "is_admin": true, 
-        "password": "!", 
-        "email": "jhh@cs.arizona.edu", 
-        "enacted": null,
-        "backend_status":"ok"
+        "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
+        "email": "sapanb@cs.princeton.edu", 
+        "enacted": null
     }
 },
 {
-    "pk": 1
-    "model": "core.serviceclass", 
+    "pk": 6
+    "model": "core.user", 
     "fields": {
-        "updated": "2013-05-10T23:30:52.931Z", 
-        "membershipFee": 0, 
-        "membershipFeeMonths": 0, 
-        "created": "2013-05-10T23:30:52.931Z", 
-        "upgradeFrom": [
-            2, 
-            3
-        ], 
-        "commitment": 0, 
-        "name": "Best Effort", 
-        "upgradeRequiresApproval": false, 
-        "description": "Best Effort"
+        "username": "jcnelson@cs.princeton.edu", 
+        "public_key": "", 
+        "updated": "2013-12-16T15:44:27.429Z", 
+        "is_readonly": false, 
+        "firstname": "Jude", 
+        "user_url": null, 
+        "lastname": "Nelson", 
+        "created": "2013-09-22T21:47:30.959Z", 
+        "is_active": true, 
+        "site": 10, 
+        "phone": "", 
+        "is_staff": true, 
+        "last_login": "2014-05-29T21:59:40.654Z", 
+        "timezone": "America/New_York", 
+        "is_admin": true, 
+        "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
+        "email": "jcnelson@cs.princeton.edu", 
+        "enacted": null
     }
 },
 {
-    "pk": 2, 
-    "model": "core.serviceclass", 
+    "pk": 7, 
+    "model": "core.user", 
+    "fields": {
+        "username": "llp@onlab.us", 
+        "public_key": "xxx", 
+        "updated": "2014-05-27T01:55:57.760Z", 
+        "is_readonly": false, 
+        "firstname": "Larry", 
+        "user_url": null, 
+        "lastname": "Peterson", 
+        "created": "2013-09-22T21:47:30.959Z", 
+        "is_active": true, 
+        "site": 22, 
+        "phone": "", 
+        "is_staff": true, 
+        "last_login": "2014-06-06T15:40:08.702Z", 
+        "timezone": "America/New_York", 
+        "is_admin": true, 
+        "password": "pbkdf2_sha256$10000$EOrqG6KzVO8z$4jSJMN/35PKPmJkDEHjAY1c/mDpBfoW1U8XAfk1eDLk=", 
+        "email": "llp@onlab.us", 
+        "enacted": null
+    }
+},
+{
+    "pk": 8, 
+    "model": "core.user", 
+    "fields": {
+        "username": "scott@onlab.us", 
+        "public_key": null, 
+        "updated": "2013-09-22T21:47:30.993Z", 
+        "is_readonly": false, 
+        "firstname": "Scott", 
+        "user_url": null, 
+        "lastname": "Baker", 
+        "created": "2013-09-22T21:47:30.959Z", 
+        "is_active": true, 
+        "site": 22, 
+        "phone": null, 
+        "is_staff": true, 
+        "last_login": "2014-06-19T23:53:48.423Z", 
+        "timezone": "America/New_York", 
+        "is_admin": true, 
+        "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
+        "email": "scott@onlab.us", 
+        "enacted": null
+    }
+},
+{
+    "pk": 9, 
+    "model": "core.user", 
+    "fields": {
+        "username": "ali@onlab.us", 
+        "public_key": null, 
+        "updated": "2013-09-22T21:47:30.993Z", 
+        "is_readonly": false, 
+        "firstname": "Ali", 
+        "user_url": null, 
+        "lastname": "Al-Shabibi", 
+        "created": "2013-09-22T21:47:30.959Z", 
+        "is_active": true, 
+        "site": 22, 
+        "phone": null, 
+        "is_staff": true, 
+        "last_login": "2013-09-22T21:48:01.047Z", 
+        "timezone": "America/New_York", 
+        "is_admin": true, 
+        "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
+        "email": "ali@onlab.us", 
+        "enacted": null
+    }
+},
+{
+    "pk": 10, 
+    "model": "core.user", 
+    "fields": {
+        "username": "bill@onlab.us", 
+        "public_key": null, 
+        "updated": "2013-09-22T21:47:30.993Z", 
+        "is_readonly": false, 
+        "firstname": "Bill", 
+        "user_url": null, 
+        "lastname": "Snow", 
+        "created": "2013-09-22T21:47:30.959Z", 
+        "is_active": true, 
+        "site": 22, 
+        "phone": null, 
+        "is_staff": true, 
+        "last_login": "2013-09-22T21:48:01.047Z", 
+        "timezone": "America/New_York", 
+        "is_admin": true, 
+        "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
+        "email": "bill@onlab.us", 
+        "enacted": null
+    }
+},
+{
+    "pk": 11, 
+    "model": "core.user", 
+    "fields": {
+        "username": "guru@onlab.us", 
+        "public_key": null, 
+        "updated": "2013-09-22T21:47:30.993Z", 
+        "is_readonly": false, 
+        "firstname": "Guru", 
+        "user_url": null, 
+        "lastname": "Parulkar", 
+        "created": "2013-09-22T21:47:30.959Z", 
+        "is_active": true, 
+        "site": 22, 
+        "phone": null, 
+        "is_staff": true, 
+        "last_login": "2013-09-22T21:48:01.047Z", 
+        "timezone": "America/New_York", 
+        "is_admin": true, 
+        "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
+        "email": "guru@onlab.us", 
+        "enacted": null
+    }
+},
+{
+    "pk": 12, 
+    "model": "core.user", 
+    "fields": {
+        "username": "marc@onlab.us", 
+        "public_key": null, 
+        "updated": "2013-09-22T21:47:30.993Z", 
+        "is_readonly": false, 
+        "firstname": "Marc", 
+        "user_url": null, 
+        "lastname": "Fiuczynski", 
+        "created": "2013-09-22T21:47:30.959Z", 
+        "is_active": true, 
+        "site": 22, 
+        "phone": null, 
+        "is_staff": true, 
+        "last_login": "2013-09-22T21:48:01.047Z", 
+        "timezone": "America/New_York", 
+        "is_admin": true, 
+        "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
+        "email": "marc@onlab.us", 
+        "enacted": null
+    }
+},
+{
+    "pk": 13, 
+    "model": "core.user", 
+    "fields": {
+        "username": "siobhan@onlab.us", 
+        "public_key": null, 
+        "updated": "2013-09-22T21:47:30.993Z", 
+        "is_readonly": false, 
+        "firstname": "Siobhan", 
+        "user_url": null, 
+        "lastname": "Tully", 
+        "created": "2013-09-22T21:47:30.959Z", 
+        "is_active": true, 
+        "site": 22, 
+        "phone": null, 
+        "is_staff": true, 
+        "last_login": "2013-09-22T21:48:01.047Z", 
+        "timezone": "America/New_York", 
+        "is_admin": true, 
+        "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
+        "email": "siobhan@onlab.us", 
+        "enacted": null
+    }
+},
+{
+    "pk": 14, 
+    "model": "core.user", 
+    "fields": {
+        "username": "demo@onlab.us", 
+        "public_key": "", 
+        "updated": "2014-05-29T22:27:54.841Z", 
+        "is_readonly": true, 
+        "firstname": "Demo", 
+        "user_url": null, 
+        "lastname": "OpenCloud", 
+        "created": "2013-12-06T11:25:41.211Z", 
+        "is_active": true, 
+        "site": 22, 
+        "phone": "", 
+        "is_staff": true, 
+        "last_login": "2014-06-18T08:35:13.300Z", 
+        "timezone": "America/New_York", 
+        "is_admin": true, 
+        "password": "pbkdf2_sha256$10000$jaLSTW2ksHEN$HDpjDKieFDjMvtV5wbF/ow3zfq8EqcFtNXLfuo+150s=", 
+        "email": "demo@onlab.us", 
+        "enacted": null
+    }
+},
+{
+    "pk": 15, 
+    "model": "core.user", 
+    "fields": {
+        "username": "jhh@cs.arizona.edu", 
+        "public_key": "", 
+        "updated": "2013-12-17T18:08:58.288Z", 
+        "is_readonly": false, 
+        "firstname": "John", 
+        "user_url": null, 
+        "lastname": "Hartman", 
+        "created": "2013-12-17T18:08:01.381Z", 
+        "is_active": true, 
+        "site": 24, 
+        "phone": "", 
+        "is_staff": true, 
+        "last_login": "2013-12-17T18:08:01.356Z", 
+        "timezone": "America/New_York", 
+        "is_admin": true, 
+        "password": "!", 
+        "email": "jhh@cs.arizona.edu", 
+        "enacted": null
+    }
+},
+{
+    "pk": 16, 
+    "model": "core.user", 
+    "fields": {
+        "username": "parichar@akamai.com", 
+        "public_key": "", 
+        "updated": "2014-05-27T15:18:09.991Z", 
+        "is_readonly": false, 
+        "firstname": "Patrick", 
+        "user_url": null, 
+        "lastname": "Richardson", 
+        "created": "2014-05-27T15:17:26.928Z", 
+        "is_active": true, 
+        "site": 22, 
+        "phone": "", 
+        "is_staff": true, 
+        "last_login": "2014-05-27T15:25:28.998Z", 
+        "timezone": "America/New_York", 
+        "is_admin": true, 
+        "password": "pbkdf2_sha256$10000$mEYJIb6cxVqC$cA/LHCpZdYPGvnSs9wCHrgyyenBrK8Y/diHBKhFOnO0=", 
+        "email": "parichar@akamai.com", 
+        "enacted": null
+    }
+},
+{
+    "pk": 1, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-05-29T22:27:54.890Z", 
+        "created": "2014-05-23T22:03:14.097Z", 
+        "dashboardView": 1, 
+        "user": 14, 
+        "order": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 2, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-05-29T22:27:54.910Z", 
+        "created": "2014-05-23T22:03:14.102Z", 
+        "dashboardView": 2, 
+        "user": 14, 
+        "order": 2, 
+        "enacted": null
+    }
+},
+{
+    "pk": 3, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-05-29T22:27:54.919Z", 
+        "created": "2014-05-23T22:03:14.106Z", 
+        "dashboardView": 4, 
+        "user": 14, 
+        "order": 3, 
+        "enacted": null
+    }
+},
+{
+    "pk": 4, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-05-29T22:27:54.927Z", 
+        "created": "2014-05-23T22:03:14.110Z", 
+        "dashboardView": 6, 
+        "user": 14, 
+        "order": 4, 
+        "enacted": null
+    }
+},
+{
+    "pk": 5, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-05-29T22:27:54.936Z", 
+        "created": "2014-05-23T22:03:14.115Z", 
+        "dashboardView": 3, 
+        "user": 14, 
+        "order": 0, 
+        "enacted": null
+    }
+},
+{
+    "pk": 24, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-05-27T15:31:48.271Z", 
+        "created": "2014-05-27T15:31:48.271Z", 
+        "dashboardView": 3, 
+        "user": 16, 
+        "order": 0, 
+        "enacted": null
+    }
+},
+{
+    "pk": 25, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-05-27T15:31:48.316Z", 
+        "created": "2014-05-27T15:31:48.316Z", 
+        "dashboardView": 2, 
+        "user": 16, 
+        "order": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 26, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-05-27T15:31:48.366Z", 
+        "created": "2014-05-27T15:31:48.366Z", 
+        "dashboardView": 7, 
+        "user": 16, 
+        "order": 2, 
+        "enacted": null
+    }
+},
+{
+    "pk": 36, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-05-31T00:22:19.941Z", 
+        "created": "2014-05-31T00:22:19.941Z", 
+        "dashboardView": 3, 
+        "user": 7, 
+        "order": 0, 
+        "enacted": null
+    }
+},
+{
+    "pk": 37, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-05-31T00:22:19.987Z", 
+        "created": "2014-05-31T00:22:19.987Z", 
+        "dashboardView": 1, 
+        "user": 7, 
+        "order": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 38, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-05-31T00:22:20.028Z", 
+        "created": "2014-05-31T00:22:20.028Z", 
+        "dashboardView": 2, 
+        "user": 7, 
+        "order": 2, 
+        "enacted": null
+    }
+},
+{
+    "pk": 39, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-05-31T00:22:20.069Z", 
+        "created": "2014-05-31T00:22:20.069Z", 
+        "dashboardView": 7, 
+        "user": 7, 
+        "order": 3, 
+        "enacted": null
+    }
+},
+{
+    "pk": 40, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-05-31T00:22:20.111Z", 
+        "created": "2014-05-31T00:22:20.111Z", 
+        "dashboardView": 4, 
+        "user": 7, 
+        "order": 4, 
+        "enacted": null
+    }
+},
+{
+    "pk": 41, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-06-17T11:07:32.639Z", 
+        "created": "2014-06-17T11:07:32.639Z", 
+        "dashboardView": 3, 
+        "user": 1, 
+        "order": 0, 
+        "enacted": null
+    }
+},
+{
+    "pk": 42, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-06-17T11:07:32.776Z", 
+        "created": "2014-06-17T11:07:32.776Z", 
+        "dashboardView": 6, 
+        "user": 1, 
+        "order": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 43, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-06-19T23:54:01.961Z", 
+        "created": "2014-06-19T23:54:01.961Z", 
+        "dashboardView": 3, 
+        "user": 8, 
+        "order": 0, 
+        "enacted": null
+    }
+},
+{
+    "pk": 44, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-06-19T23:54:02.007Z", 
+        "created": "2014-06-19T23:54:02.006Z", 
+        "dashboardView": 7, 
+        "user": 8, 
+        "order": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 45, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-06-19T23:54:02.056Z", 
+        "created": "2014-06-19T23:54:02.056Z", 
+        "dashboardView": 6, 
+        "user": 8, 
+        "order": 2, 
+        "enacted": null
+    }
+},
+{
+    "pk": 46, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-06-19T23:54:02.106Z", 
+        "created": "2014-06-19T23:54:02.106Z", 
+        "dashboardView": 4, 
+        "user": 8, 
+        "order": 3, 
+        "enacted": null
+    }
+},
+{
+    "pk": 47, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-06-19T23:54:02.156Z", 
+        "created": "2014-06-19T23:54:02.156Z", 
+        "dashboardView": 1, 
+        "user": 8, 
+        "order": 4, 
+        "enacted": null
+    }
+},
+{
+    "pk": 48, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-06-19T23:54:02.207Z", 
+        "created": "2014-06-19T23:54:02.207Z", 
+        "dashboardView": 2, 
+        "user": 8, 
+        "order": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 49, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-06-19T23:54:02.248Z", 
+        "created": "2014-06-19T23:54:02.248Z", 
+        "dashboardView": 8, 
+        "user": 8, 
+        "order": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 50, 
+    "model": "core.userdashboardview", 
+    "fields": {
+        "updated": "2014-06-19T23:54:02.349Z", 
+        "created": "2014-06-19T23:54:02.349Z", 
+        "dashboardView": 9, 
+        "user": 8, 
+        "order": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 1, 
+    "model": "core.serviceclass", 
+    "fields": {
+        "updated": "2013-05-10T23:30:52.931Z", 
+        "membershipFee": 0, 
+        "description": "Best Effort", 
+        "membershipFeeMonths": 0, 
+        "created": "2013-05-10T23:30:52.931Z", 
+        "upgradeFrom": [
+            2, 
+            3
+        ], 
+        "commitment": 0, 
+        "name": "Best Effort", 
+        "upgradeRequiresApproval": false, 
+        "enacted": null
+    }
+},
+{
+    "pk": 2, 
+    "model": "core.serviceclass", 
     "fields": {
         "updated": "2013-05-10T23:35:51.694Z", 
         "membershipFee": 100, 
+        "description": "Silver", 
         "membershipFeeMonths": 1, 
         "created": "2013-05-10T23:33:24.930Z", 
         "upgradeFrom": [
         "commitment": 365, 
         "name": "Silver", 
         "upgradeRequiresApproval": false, 
-        "description": "Silver"
+        "enacted": null
+    }
+},
+{
+    "pk": 3, 
+    "model": "core.serviceclass", 
+    "fields": {
+        "updated": "2013-05-10T23:34:01.320Z", 
+        "membershipFee": 18000, 
+        "description": "Gold", 
+        "membershipFeeMonths": 12, 
+        "created": "2013-05-10T23:34:01.320Z", 
+        "upgradeFrom": [
+            1, 
+            2
+        ], 
+        "commitment": 365, 
+        "name": "Gold", 
+        "upgradeRequiresApproval": false, 
+        "enacted": null
+    }
+},
+{
+    "pk": 4, 
+    "model": "core.slice", 
+    "fields": {
+        "updated": "2014-03-23T23:13:28.743Z", 
+        "imagePreference": "Ubuntu 12.04 LTS", 
+        "name": "HyperCache", 
+        "service": 3, 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "slice_url": "", 
+        "description": "HyperCache slice for HyperCache service.", 
+        "serviceClass": 1, 
+        "enabled": true, 
+        "site": 22, 
+        "omf_friendly": false, 
+        "network": "Private Only", 
+        "max_slivers": 10, 
+        "mountDataSets": "GenBank", 
+        "creator": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 6, 
+    "model": "core.slice", 
+    "fields": {
+        "updated": "2014-03-23T23:12:27.541Z", 
+        "imagePreference": "Ubuntu 12.04 LTS", 
+        "name": "Syndicate", 
+        "service": 5, 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "slice_url": "", 
+        "description": "", 
+        "serviceClass": 1, 
+        "enabled": true, 
+        "site": 10, 
+        "omf_friendly": false, 
+        "network": "Private Only", 
+        "max_slivers": 10, 
+        "mountDataSets": "GenBank", 
+        "creator": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 8, 
+    "model": "core.slice", 
+    "fields": {
+        "updated": "2014-03-23T23:17:33.686Z", 
+        "imagePreference": "Ubuntu 12.04 LTS", 
+        "name": "DnsRedir", 
+        "service": 4, 
+        "created": "2013-12-04T22:48:35.584Z", 
+        "slice_url": "", 
+        "description": "DNS Redirection slice for RequestRouter service.", 
+        "serviceClass": 2, 
+        "enabled": true, 
+        "site": 22, 
+        "omf_friendly": false, 
+        "network": "Private Only", 
+        "max_slivers": 10, 
+        "mountDataSets": "GenBank", 
+        "creator": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 9, 
+    "model": "core.slice", 
+    "fields": {
+        "updated": "2014-03-23T23:18:00.528Z", 
+        "imagePreference": "Ubuntu 12.04 LTS", 
+        "name": "DnsDemux", 
+        "service": 4, 
+        "created": "2013-12-04T22:49:23.051Z", 
+        "slice_url": "", 
+        "description": "DNS Demultiplexing slice for RequestRouter service. ", 
+        "serviceClass": 2, 
+        "enabled": true, 
+        "site": 22, 
+        "omf_friendly": false, 
+        "network": "Private Only", 
+        "max_slivers": 10, 
+        "mountDataSets": "GenBank", 
+        "creator": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 10, 
+    "model": "core.slice", 
+    "fields": {
+        "updated": "2014-03-23T23:19:56.253Z", 
+        "imagePreference": "Ubuntu 12.04 LTS", 
+        "name": "Infrastructure", 
+        "service": null, 
+        "created": "2013-12-09T14:13:15.392Z", 
+        "slice_url": "", 
+        "description": "", 
+        "serviceClass": 1, 
+        "enabled": true, 
+        "site": 22, 
+        "omf_friendly": false, 
+        "network": "Private Only", 
+        "max_slivers": 10, 
+        "mountDataSets": "GenBank", 
+        "creator": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 11, 
+    "model": "core.slice", 
+    "fields": {
+        "updated": "2014-03-23T23:15:29.953Z", 
+        "imagePreference": "Ubuntu 12.04 LTS", 
+        "name": "Stork", 
+        "service": 8, 
+        "created": "2013-12-13T21:49:59.476Z", 
+        "slice_url": "", 
+        "description": "The Stork Package Management Service", 
+        "serviceClass": 1, 
+        "enabled": true, 
+        "site": 24, 
+        "omf_friendly": false, 
+        "network": "Private Only", 
+        "max_slivers": 10, 
+        "mountDataSets": "GenBank", 
+        "creator": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 12, 
+    "model": "core.slice", 
+    "fields": {
+        "updated": "2014-03-23T23:16:01.742Z", 
+        "imagePreference": "Ubuntu 12.04 LTS", 
+        "name": "Owl", 
+        "service": 8, 
+        "created": "2013-12-13T21:52:15.590Z", 
+        "slice_url": "", 
+        "description": "The Owl Data Collection service", 
+        "serviceClass": 1, 
+        "enabled": true, 
+        "site": 24, 
+        "omf_friendly": false, 
+        "network": "Private Only", 
+        "max_slivers": 10, 
+        "mountDataSets": "GenBank", 
+        "creator": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 13, 
+    "model": "core.slice", 
+    "fields": {
+        "updated": "2014-03-23T23:15:02.712Z", 
+        "imagePreference": "Ubuntu 12.04 LTS", 
+        "name": "Hadoop", 
+        "service": null, 
+        "created": "2013-12-13T21:54:20.895Z", 
+        "slice_url": "", 
+        "description": "Hadoop map-reduce service", 
+        "serviceClass": 2, 
+        "enabled": true, 
+        "site": 22, 
+        "omf_friendly": false, 
+        "network": "Private Only", 
+        "max_slivers": 10, 
+        "mountDataSets": "GenBank", 
+        "creator": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 14, 
+    "model": "core.slice", 
+    "fields": {
+        "updated": "2014-03-23T23:14:27.648Z", 
+        "imagePreference": "Ubuntu 12.04 LTS", 
+        "name": "test", 
+        "service": null, 
+        "created": "2013-12-13T21:56:57.299Z", 
+        "slice_url": "", 
+        "description": "Test slice number one.", 
+        "serviceClass": 1, 
+        "enabled": true, 
+        "site": 10, 
+        "omf_friendly": false, 
+        "network": "Private Only", 
+        "max_slivers": 10, 
+        "mountDataSets": "GenBank", 
+        "creator": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 15, 
+    "model": "core.slice", 
+    "fields": {
+        "updated": "2014-03-23T23:14:00.911Z", 
+        "imagePreference": "Ubuntu 12.04 LTS", 
+        "name": "test2", 
+        "service": null, 
+        "created": "2013-12-13T22:00:03.049Z", 
+        "slice_url": "", 
+        "description": "test slice number two.", 
+        "serviceClass": 1, 
+        "enabled": true, 
+        "site": 10, 
+        "omf_friendly": false, 
+        "network": "Private Only", 
+        "max_slivers": 10, 
+        "mountDataSets": "GenBank", 
+        "creator": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 16, 
+    "model": "core.slice", 
+    "fields": {
+        "updated": "2014-05-27T14:05:40.950Z", 
+        "imagePreference": "Hadoop 2.4.0", 
+        "name": "Analytics", 
+        "service": null, 
+        "created": "2014-05-20T17:54:07.100Z", 
+        "slice_url": "", 
+        "description": "Analytics ", 
+        "serviceClass": 1, 
+        "enabled": true, 
+        "site": 22, 
+        "omf_friendly": false, 
+        "network": "Private Only", 
+        "max_slivers": 10, 
+        "mountDataSets": "GenBank-11-2013", 
+        "creator": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 1, 
+    "model": "core.slicerole", 
+    "fields": {
+        "updated": "2013-12-18T21:09:27.717Z", 
+        "enacted": null, 
+        "role": "admin", 
+        "created": "2013-12-18T21:09:27.717Z"
+    }
+},
+{
+    "pk": 2, 
+    "model": "core.slicerole", 
+    "fields": {
+        "updated": "2013-12-18T21:09:35.074Z", 
+        "enacted": null, 
+        "role": "default", 
+        "created": "2013-12-18T21:09:35.074Z"
+    }
+},
+{
+    "pk": 1, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:37.713Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:21:37.713Z", 
+        "role": 1, 
+        "user": 2, 
+        "enacted": null
+    }
+},
+{
+    "pk": 2, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:37.729Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:21:37.729Z", 
+        "role": 1, 
+        "user": 3, 
+        "enacted": null
+    }
+},
+{
+    "pk": 3, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:37.739Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:21:37.739Z", 
+        "role": 1, 
+        "user": 4, 
+        "enacted": null
+    }
+},
+{
+    "pk": 4, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:37.752Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:21:37.752Z", 
+        "role": 1, 
+        "user": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 5, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:37.771Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:21:37.771Z", 
+        "role": 1, 
+        "user": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 6, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:37.790Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:21:37.789Z", 
+        "role": 1, 
+        "user": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 7, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:37.808Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:21:37.808Z", 
+        "role": 1, 
+        "user": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 8, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:37.835Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:21:37.835Z", 
+        "role": 1, 
+        "user": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 9, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:37.862Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:21:37.862Z", 
+        "role": 1, 
+        "user": 11, 
+        "enacted": null
+    }
+},
+{
+    "pk": 10, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:37.890Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:21:37.890Z", 
+        "role": 1, 
+        "user": 12, 
+        "enacted": null
+    }
+},
+{
+    "pk": 11, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:37.925Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:21:37.925Z", 
+        "role": 1, 
+        "user": 13, 
+        "enacted": null
+    }
+},
+{
+    "pk": 12, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:37.960Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:21:37.960Z", 
+        "role": 1, 
+        "user": 14, 
+        "enacted": null
+    }
+},
+{
+    "pk": 13, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:37.996Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:21:37.996Z", 
+        "role": 1, 
+        "user": 15, 
+        "enacted": null
+    }
+},
+{
+    "pk": 14, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.038Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:21:38.038Z", 
+        "role": 1, 
+        "user": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 15, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.092Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:21:38.091Z", 
+        "role": 1, 
+        "user": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 16, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.103Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:21:38.103Z", 
+        "role": 1, 
+        "user": 2, 
+        "enacted": null
+    }
+},
+{
+    "pk": 17, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.111Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:21:38.111Z", 
+        "role": 1, 
+        "user": 3, 
+        "enacted": null
+    }
+},
+{
+    "pk": 18, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.122Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:21:38.122Z", 
+        "role": 1, 
+        "user": 4, 
+        "enacted": null
+    }
+},
+{
+    "pk": 19, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.141Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:21:38.141Z", 
+        "role": 1, 
+        "user": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 20, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.160Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:21:38.160Z", 
+        "role": 1, 
+        "user": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 21, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.179Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:21:38.179Z", 
+        "role": 1, 
+        "user": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 22, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.206Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:21:38.206Z", 
+        "role": 1, 
+        "user": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 23, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.233Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:21:38.233Z", 
+        "role": 1, 
+        "user": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 24, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.260Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:21:38.260Z", 
+        "role": 1, 
+        "user": 11, 
+        "enacted": null
+    }
+},
+{
+    "pk": 25, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.287Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:21:38.287Z", 
+        "role": 1, 
+        "user": 12, 
+        "enacted": null
+    }
+},
+{
+    "pk": 26, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.322Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:21:38.322Z", 
+        "role": 1, 
+        "user": 13, 
+        "enacted": null
+    }
+},
+{
+    "pk": 27, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.358Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:21:38.358Z", 
+        "role": 1, 
+        "user": 14, 
+        "enacted": null
+    }
+},
+{
+    "pk": 28, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.393Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:21:38.393Z", 
+        "role": 1, 
+        "user": 15, 
+        "enacted": null
+    }
+},
+{
+    "pk": 29, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.428Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:21:38.428Z", 
+        "role": 1, 
+        "user": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 30, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.472Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:21:38.472Z", 
+        "role": 1, 
+        "user": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 31, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.484Z", 
+        "slice": 8, 
+        "created": "2013-12-18T21:21:38.484Z", 
+        "role": 1, 
+        "user": 2, 
+        "enacted": null
+    }
+},
+{
+    "pk": 32, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.492Z", 
+        "slice": 8, 
+        "created": "2013-12-18T21:21:38.492Z", 
+        "role": 1, 
+        "user": 3, 
+        "enacted": null
+    }
+},
+{
+    "pk": 33, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.503Z", 
+        "slice": 8, 
+        "created": "2013-12-18T21:21:38.503Z", 
+        "role": 1, 
+        "user": 4, 
+        "enacted": null
+    }
+},
+{
+    "pk": 34, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.522Z", 
+        "slice": 8, 
+        "created": "2013-12-18T21:21:38.522Z", 
+        "role": 1, 
+        "user": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 35, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.540Z", 
+        "slice": 8, 
+        "created": "2013-12-18T21:21:38.540Z", 
+        "role": 1, 
+        "user": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 36, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.559Z", 
+        "slice": 8, 
+        "created": "2013-12-18T21:21:38.559Z", 
+        "role": 1, 
+        "user": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 37, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.578Z", 
+        "slice": 8, 
+        "created": "2013-12-18T21:21:38.578Z", 
+        "role": 1, 
+        "user": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 38, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.605Z", 
+        "slice": 8, 
+        "created": "2013-12-18T21:21:38.605Z", 
+        "role": 1, 
+        "user": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 39, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.632Z", 
+        "slice": 8, 
+        "created": "2013-12-18T21:21:38.632Z", 
+        "role": 1, 
+        "user": 11, 
+        "enacted": null
+    }
+},
+{
+    "pk": 40, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.660Z", 
+        "slice": 8, 
+        "created": "2013-12-18T21:21:38.660Z", 
+        "role": 1, 
+        "user": 12, 
+        "enacted": null
+    }
+},
+{
+    "pk": 41, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.695Z", 
+        "slice": 8, 
+        "created": "2013-12-18T21:21:38.695Z", 
+        "role": 1, 
+        "user": 13, 
+        "enacted": null
+    }
+},
+{
+    "pk": 42, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.731Z", 
+        "slice": 8, 
+        "created": "2013-12-18T21:21:38.731Z", 
+        "role": 1, 
+        "user": 14, 
+        "enacted": null
+    }
+},
+{
+    "pk": 43, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.766Z", 
+        "slice": 8, 
+        "created": "2013-12-18T21:21:38.766Z", 
+        "role": 1, 
+        "user": 15, 
+        "enacted": null
+    }
+},
+{
+    "pk": 44, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.801Z", 
+        "slice": 8, 
+        "created": "2013-12-18T21:21:38.801Z", 
+        "role": 1, 
+        "user": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 45, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.845Z", 
+        "slice": 8, 
+        "created": "2013-12-18T21:21:38.845Z", 
+        "role": 1, 
+        "user": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 46, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.857Z", 
+        "slice": 9, 
+        "created": "2013-12-18T21:21:38.857Z", 
+        "role": 1, 
+        "user": 2, 
+        "enacted": null
+    }
+},
+{
+    "pk": 47, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.865Z", 
+        "slice": 9, 
+        "created": "2013-12-18T21:21:38.864Z", 
+        "role": 1, 
+        "user": 3, 
+        "enacted": null
+    }
+},
+{
+    "pk": 48, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.875Z", 
+        "slice": 9, 
+        "created": "2013-12-18T21:21:38.875Z", 
+        "role": 1, 
+        "user": 4, 
+        "enacted": null
+    }
+},
+{
+    "pk": 49, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.894Z", 
+        "slice": 9, 
+        "created": "2013-12-18T21:21:38.894Z", 
+        "role": 1, 
+        "user": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 50, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.913Z", 
+        "slice": 9, 
+        "created": "2013-12-18T21:21:38.913Z", 
+        "role": 1, 
+        "user": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 51, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.932Z", 
+        "slice": 9, 
+        "created": "2013-12-18T21:21:38.932Z", 
+        "role": 1, 
+        "user": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 52, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.951Z", 
+        "slice": 9, 
+        "created": "2013-12-18T21:21:38.951Z", 
+        "role": 1, 
+        "user": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 53, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:38.978Z", 
+        "slice": 9, 
+        "created": "2013-12-18T21:21:38.978Z", 
+        "role": 1, 
+        "user": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 54, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.005Z", 
+        "slice": 9, 
+        "created": "2013-12-18T21:21:39.005Z", 
+        "role": 1, 
+        "user": 11, 
+        "enacted": null
+    }
+},
+{
+    "pk": 55, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.032Z", 
+        "slice": 9, 
+        "created": "2013-12-18T21:21:39.032Z", 
+        "role": 1, 
+        "user": 12, 
+        "enacted": null
+    }
+},
+{
+    "pk": 56, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.068Z", 
+        "slice": 9, 
+        "created": "2013-12-18T21:21:39.067Z", 
+        "role": 1, 
+        "user": 13, 
+        "enacted": null
+    }
+},
+{
+    "pk": 57, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.103Z", 
+        "slice": 9, 
+        "created": "2013-12-18T21:21:39.103Z", 
+        "role": 1, 
+        "user": 14, 
+        "enacted": null
+    }
+},
+{
+    "pk": 58, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.139Z", 
+        "slice": 9, 
+        "created": "2013-12-18T21:21:39.139Z", 
+        "role": 1, 
+        "user": 15, 
+        "enacted": null
+    }
+},
+{
+    "pk": 59, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.175Z", 
+        "slice": 9, 
+        "created": "2013-12-18T21:21:39.175Z", 
+        "role": 1, 
+        "user": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 60, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.219Z", 
+        "slice": 9, 
+        "created": "2013-12-18T21:21:39.219Z", 
+        "role": 1, 
+        "user": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 61, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.229Z", 
+        "slice": 10, 
+        "created": "2013-12-18T21:21:39.229Z", 
+        "role": 1, 
+        "user": 2, 
+        "enacted": null
+    }
+},
+{
+    "pk": 62, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.238Z", 
+        "slice": 10, 
+        "created": "2013-12-18T21:21:39.238Z", 
+        "role": 1, 
+        "user": 3, 
+        "enacted": null
+    }
+},
+{
+    "pk": 63, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.248Z", 
+        "slice": 10, 
+        "created": "2013-12-18T21:21:39.248Z", 
+        "role": 1, 
+        "user": 4, 
+        "enacted": null
+    }
+},
+{
+    "pk": 64, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.267Z", 
+        "slice": 10, 
+        "created": "2013-12-18T21:21:39.267Z", 
+        "role": 1, 
+        "user": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 65, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.286Z", 
+        "slice": 10, 
+        "created": "2013-12-18T21:21:39.286Z", 
+        "role": 1, 
+        "user": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 66, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.304Z", 
+        "slice": 10, 
+        "created": "2013-12-18T21:21:39.304Z", 
+        "role": 1, 
+        "user": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 67, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.324Z", 
+        "slice": 10, 
+        "created": "2013-12-18T21:21:39.324Z", 
+        "role": 1, 
+        "user": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 68, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.351Z", 
+        "slice": 10, 
+        "created": "2013-12-18T21:21:39.351Z", 
+        "role": 1, 
+        "user": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 69, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.378Z", 
+        "slice": 10, 
+        "created": "2013-12-18T21:21:39.378Z", 
+        "role": 1, 
+        "user": 11, 
+        "enacted": null
+    }
+},
+{
+    "pk": 70, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.405Z", 
+        "slice": 10, 
+        "created": "2013-12-18T21:21:39.405Z", 
+        "role": 1, 
+        "user": 12, 
+        "enacted": null
+    }
+},
+{
+    "pk": 71, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.440Z", 
+        "slice": 10, 
+        "created": "2013-12-18T21:21:39.440Z", 
+        "role": 1, 
+        "user": 13, 
+        "enacted": null
+    }
+},
+{
+    "pk": 72, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.476Z", 
+        "slice": 10, 
+        "created": "2013-12-18T21:21:39.476Z", 
+        "role": 1, 
+        "user": 14, 
+        "enacted": null
+    }
+},
+{
+    "pk": 73, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.511Z", 
+        "slice": 10, 
+        "created": "2013-12-18T21:21:39.511Z", 
+        "role": 1, 
+        "user": 15, 
+        "enacted": null
+    }
+},
+{
+    "pk": 74, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.547Z", 
+        "slice": 10, 
+        "created": "2013-12-18T21:21:39.547Z", 
+        "role": 1, 
+        "user": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 75, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.590Z", 
+        "slice": 10, 
+        "created": "2013-12-18T21:21:39.590Z", 
+        "role": 1, 
+        "user": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 76, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.602Z", 
+        "slice": 11, 
+        "created": "2013-12-18T21:21:39.602Z", 
+        "role": 1, 
+        "user": 2, 
+        "enacted": null
+    }
+},
+{
+    "pk": 77, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.610Z", 
+        "slice": 11, 
+        "created": "2013-12-18T21:21:39.610Z", 
+        "role": 1, 
+        "user": 3, 
+        "enacted": null
+    }
+},
+{
+    "pk": 78, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.621Z", 
+        "slice": 11, 
+        "created": "2013-12-18T21:21:39.621Z", 
+        "role": 1, 
+        "user": 4, 
+        "enacted": null
+    }
+},
+{
+    "pk": 79, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.640Z", 
+        "slice": 11, 
+        "created": "2013-12-18T21:21:39.640Z", 
+        "role": 1, 
+        "user": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 80, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.659Z", 
+        "slice": 11, 
+        "created": "2013-12-18T21:21:39.659Z", 
+        "role": 1, 
+        "user": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 81, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.678Z", 
+        "slice": 11, 
+        "created": "2013-12-18T21:21:39.678Z", 
+        "role": 1, 
+        "user": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 82, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.705Z", 
+        "slice": 11, 
+        "created": "2013-12-18T21:21:39.705Z", 
+        "role": 1, 
+        "user": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 83, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.732Z", 
+        "slice": 11, 
+        "created": "2013-12-18T21:21:39.732Z", 
+        "role": 1, 
+        "user": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 84, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.759Z", 
+        "slice": 11, 
+        "created": "2013-12-18T21:21:39.759Z", 
+        "role": 1, 
+        "user": 11, 
+        "enacted": null
+    }
+},
+{
+    "pk": 85, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.786Z", 
+        "slice": 11, 
+        "created": "2013-12-18T21:21:39.786Z", 
+        "role": 1, 
+        "user": 12, 
+        "enacted": null
+    }
+},
+{
+    "pk": 86, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.821Z", 
+        "slice": 11, 
+        "created": "2013-12-18T21:21:39.821Z", 
+        "role": 1, 
+        "user": 13, 
+        "enacted": null
+    }
+},
+{
+    "pk": 87, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.857Z", 
+        "slice": 11, 
+        "created": "2013-12-18T21:21:39.857Z", 
+        "role": 1, 
+        "user": 14, 
+        "enacted": null
+    }
+},
+{
+    "pk": 88, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.891Z", 
+        "slice": 11, 
+        "created": "2013-12-18T21:21:39.891Z", 
+        "role": 1, 
+        "user": 15, 
+        "enacted": null
+    }
+},
+{
+    "pk": 89, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.927Z", 
+        "slice": 11, 
+        "created": "2013-12-18T21:21:39.927Z", 
+        "role": 1, 
+        "user": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 90, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.971Z", 
+        "slice": 11, 
+        "created": "2013-12-18T21:21:39.971Z", 
+        "role": 1, 
+        "user": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 91, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.983Z", 
+        "slice": 12, 
+        "created": "2013-12-18T21:21:39.983Z", 
+        "role": 1, 
+        "user": 2, 
+        "enacted": null
+    }
+},
+{
+    "pk": 92, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:39.991Z", 
+        "slice": 12, 
+        "created": "2013-12-18T21:21:39.991Z", 
+        "role": 1, 
+        "user": 3, 
+        "enacted": null
+    }
+},
+{
+    "pk": 93, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.002Z", 
+        "slice": 12, 
+        "created": "2013-12-18T21:21:40.002Z", 
+        "role": 1, 
+        "user": 4, 
+        "enacted": null
+    }
+},
+{
+    "pk": 94, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.020Z", 
+        "slice": 12, 
+        "created": "2013-12-18T21:21:40.020Z", 
+        "role": 1, 
+        "user": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 95, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.039Z", 
+        "slice": 12, 
+        "created": "2013-12-18T21:21:40.039Z", 
+        "role": 1, 
+        "user": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 96, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.058Z", 
+        "slice": 12, 
+        "created": "2013-12-18T21:21:40.058Z", 
+        "role": 1, 
+        "user": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 97, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.077Z", 
+        "slice": 12, 
+        "created": "2013-12-18T21:21:40.077Z", 
+        "role": 1, 
+        "user": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 98, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.104Z", 
+        "slice": 12, 
+        "created": "2013-12-18T21:21:40.104Z", 
+        "role": 1, 
+        "user": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 99, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.131Z", 
+        "slice": 12, 
+        "created": "2013-12-18T21:21:40.131Z", 
+        "role": 1, 
+        "user": 11, 
+        "enacted": null
+    }
+},
+{
+    "pk": 100, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.159Z", 
+        "slice": 12, 
+        "created": "2013-12-18T21:21:40.159Z", 
+        "role": 1, 
+        "user": 12, 
+        "enacted": null
+    }
+},
+{
+    "pk": 101, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.194Z", 
+        "slice": 12, 
+        "created": "2013-12-18T21:21:40.194Z", 
+        "role": 1, 
+        "user": 13, 
+        "enacted": null
+    }
+},
+{
+    "pk": 102, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.230Z", 
+        "slice": 12, 
+        "created": "2013-12-18T21:21:40.230Z", 
+        "role": 1, 
+        "user": 14, 
+        "enacted": null
+    }
+},
+{
+    "pk": 103, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.265Z", 
+        "slice": 12, 
+        "created": "2013-12-18T21:21:40.265Z", 
+        "role": 1, 
+        "user": 15, 
+        "enacted": null
+    }
+},
+{
+    "pk": 104, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.300Z", 
+        "slice": 12, 
+        "created": "2013-12-18T21:21:40.300Z", 
+        "role": 1, 
+        "user": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 105, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.344Z", 
+        "slice": 12, 
+        "created": "2013-12-18T21:21:40.344Z", 
+        "role": 1, 
+        "user": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 106, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.356Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:21:40.355Z", 
+        "role": 1, 
+        "user": 2, 
+        "enacted": null
+    }
+},
+{
+    "pk": 107, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.364Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:21:40.364Z", 
+        "role": 1, 
+        "user": 3, 
+        "enacted": null
+    }
+},
+{
+    "pk": 108, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.374Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:21:40.374Z", 
+        "role": 1, 
+        "user": 4, 
+        "enacted": null
+    }
+},
+{
+    "pk": 109, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.393Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:21:40.393Z", 
+        "role": 1, 
+        "user": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 110, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.412Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:21:40.412Z", 
+        "role": 1, 
+        "user": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 111, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.431Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:21:40.431Z", 
+        "role": 1, 
+        "user": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 112, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.450Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:21:40.450Z", 
+        "role": 1, 
+        "user": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 113, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.477Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:21:40.477Z", 
+        "role": 1, 
+        "user": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 114, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.504Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:21:40.504Z", 
+        "role": 1, 
+        "user": 11, 
+        "enacted": null
+    }
+},
+{
+    "pk": 115, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.531Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:21:40.531Z", 
+        "role": 1, 
+        "user": 12, 
+        "enacted": null
+    }
+},
+{
+    "pk": 116, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.566Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:21:40.566Z", 
+        "role": 1, 
+        "user": 13, 
+        "enacted": null
+    }
+},
+{
+    "pk": 117, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.602Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:21:40.602Z", 
+        "role": 1, 
+        "user": 14, 
+        "enacted": null
+    }
+},
+{
+    "pk": 118, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.637Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:21:40.637Z", 
+        "role": 1, 
+        "user": 15, 
+        "enacted": null
+    }
+},
+{
+    "pk": 119, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.673Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:21:40.673Z", 
+        "role": 1, 
+        "user": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 120, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.717Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:21:40.717Z", 
+        "role": 1, 
+        "user": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 121, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.728Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:21:40.728Z", 
+        "role": 1, 
+        "user": 2, 
+        "enacted": null
+    }
+},
+{
+    "pk": 122, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.736Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:21:40.736Z", 
+        "role": 1, 
+        "user": 3, 
+        "enacted": null
+    }
+},
+{
+    "pk": 123, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.747Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:21:40.747Z", 
+        "role": 1, 
+        "user": 4, 
+        "enacted": null
+    }
+},
+{
+    "pk": 124, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.766Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:21:40.766Z", 
+        "role": 1, 
+        "user": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 125, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.784Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:21:40.784Z", 
+        "role": 1, 
+        "user": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 126, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.803Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:21:40.803Z", 
+        "role": 1, 
+        "user": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 127, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.822Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:21:40.822Z", 
+        "role": 1, 
+        "user": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 128, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.849Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:21:40.849Z", 
+        "role": 1, 
+        "user": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 129, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.877Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:21:40.877Z", 
+        "role": 1, 
+        "user": 11, 
+        "enacted": null
+    }
+},
+{
+    "pk": 130, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.903Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:21:40.903Z", 
+        "role": 1, 
+        "user": 12, 
+        "enacted": null
+    }
+},
+{
+    "pk": 131, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.939Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:21:40.939Z", 
+        "role": 1, 
+        "user": 13, 
+        "enacted": null
+    }
+},
+{
+    "pk": 132, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:40.975Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:21:40.975Z", 
+        "role": 1, 
+        "user": 14, 
+        "enacted": null
+    }
+},
+{
+    "pk": 133, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:41.010Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:21:41.010Z", 
+        "role": 1, 
+        "user": 15, 
+        "enacted": null
+    }
+},
+{
+    "pk": 134, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:41.045Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:21:41.045Z", 
+        "role": 1, 
+        "user": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 135, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:41.089Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:21:41.089Z", 
+        "role": 1, 
+        "user": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 136, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:41.101Z", 
+        "slice": 15, 
+        "created": "2013-12-18T21:21:41.101Z", 
+        "role": 1, 
+        "user": 2, 
+        "enacted": null
+    }
+},
+{
+    "pk": 137, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:41.109Z", 
+        "slice": 15, 
+        "created": "2013-12-18T21:21:41.109Z", 
+        "role": 1, 
+        "user": 3, 
+        "enacted": null
+    }
+},
+{
+    "pk": 138, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:41.119Z", 
+        "slice": 15, 
+        "created": "2013-12-18T21:21:41.119Z", 
+        "role": 1, 
+        "user": 4, 
+        "enacted": null
+    }
+},
+{
+    "pk": 139, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:41.138Z", 
+        "slice": 15, 
+        "created": "2013-12-18T21:21:41.138Z", 
+        "role": 1, 
+        "user": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 140, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:41.157Z", 
+        "slice": 15, 
+        "created": "2013-12-18T21:21:41.157Z", 
+        "role": 1, 
+        "user": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 141, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:41.176Z", 
+        "slice": 15, 
+        "created": "2013-12-18T21:21:41.176Z", 
+        "role": 1, 
+        "user": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 142, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:41.204Z", 
+        "slice": 15, 
+        "created": "2013-12-18T21:21:41.203Z", 
+        "role": 1, 
+        "user": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 143, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:41.231Z", 
+        "slice": 15, 
+        "created": "2013-12-18T21:21:41.231Z", 
+        "role": 1, 
+        "user": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 144, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:41.258Z", 
+        "slice": 15, 
+        "created": "2013-12-18T21:21:41.258Z", 
+        "role": 1, 
+        "user": 11, 
+        "enacted": null
+    }
+},
+{
+    "pk": 145, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:41.285Z", 
+        "slice": 15, 
+        "created": "2013-12-18T21:21:41.285Z", 
+        "role": 1, 
+        "user": 12, 
+        "enacted": null
+    }
+},
+{
+    "pk": 146, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:41.320Z", 
+        "slice": 15, 
+        "created": "2013-12-18T21:21:41.320Z", 
+        "role": 1, 
+        "user": 13, 
+        "enacted": null
+    }
+},
+{
+    "pk": 147, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:41.356Z", 
+        "slice": 15, 
+        "created": "2013-12-18T21:21:41.356Z", 
+        "role": 1, 
+        "user": 14, 
+        "enacted": null
+    }
+},
+{
+    "pk": 148, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:41.391Z", 
+        "slice": 15, 
+        "created": "2013-12-18T21:21:41.391Z", 
+        "role": 1, 
+        "user": 15, 
+        "enacted": null
+    }
+},
+{
+    "pk": 149, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:41.426Z", 
+        "slice": 15, 
+        "created": "2013-12-18T21:21:41.426Z", 
+        "role": 1, 
+        "user": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 150, 
+    "model": "core.sliceprivilege", 
+    "fields": {
+        "updated": "2013-12-18T21:21:41.470Z", 
+        "slice": 15, 
+        "created": "2013-12-18T21:21:41.470Z", 
+        "role": 1, 
+        "user": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 1, 
+    "model": "core.image", 
+    "fields": {
+        "updated": "2013-12-09T14:26:56.787Z", 
+        "name": "Fedora 16 LXC rev 1.3", 
+        "created": "2013-12-09T14:26:56.787Z", 
+        "container_format": "bare", 
+        "disk_format": "raw", 
+        "path": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 2, 
+    "model": "core.image", 
+    "fields": {
+        "updated": "2014-04-23T04:10:59.634Z", 
+        "name": "Ubuntu 12.04 LTS", 
+        "created": "2014-04-23T04:10:59.634Z", 
+        "container_format": "bare", 
+        "disk_format": "raw", 
+        "path": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 3, 
+    "model": "core.image", 
+    "fields": {
+        "updated": "2014-04-23T04:11:24.968Z", 
+        "name": "Hadoop 2.4.0", 
+        "created": "2014-04-23T04:11:24.968Z", 
+        "container_format": "bare", 
+        "disk_format": "raw", 
+        "path": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 4, 
+    "model": "core.image", 
+    "fields": {
+        "updated": "2014-04-23T04:11:37.141Z", 
+        "name": "MPI 1.8", 
+        "created": "2014-04-23T04:11:37.141Z", 
+        "container_format": "bare", 
+        "disk_format": "raw", 
+        "path": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 384, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node1.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 385, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node2.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 386, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node3.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 387, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node4.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 388, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node5.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 389, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node6.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 390, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node7.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 391, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node8.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 392, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node9.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 393, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node10.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 394, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node11.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 395, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node12.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 396, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node13.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 397, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node14.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 398, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node15.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 399, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node16.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 400, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node17.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 401, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node18.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 402, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node19.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 403, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node20.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 404, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node21.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 405, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node22.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 406, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node23.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 407, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node24.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 408, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node25.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 409, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node26.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 410, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node27.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 411, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node28.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 412, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node29.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 413, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node30.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 414, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node31.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 415, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node32.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 416, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node33.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 417, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node34.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 418, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node35.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 419, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node36.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 420, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node37.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 421, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node38.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 422, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node39.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 423, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node40.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 424, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node41.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 425, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node42.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 426, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node43.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 427, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node44.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 428, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node45.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 429, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node46.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 430, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node47.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 431, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node48.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 432, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node49.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 433, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node50.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 434, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node51.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 435, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node52.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 436, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node53.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 437, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node54.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 438, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node55.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 439, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node56.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 440, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node57.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 441, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node58.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 442, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node59.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 443, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node60.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 444, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node61.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 445, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node62.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 446, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node63.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 447, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node64.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 448, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node65.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 449, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node66.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 450, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node67.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 451, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node68.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 452, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node69.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 453, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node70.stanford.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 454, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node1.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 455, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node2.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 456, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node3.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 457, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node4.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 458, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node5.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 459, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node6.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 460, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node7.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 461, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node8.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 462, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node9.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 463, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node10.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 464, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node11.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 465, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node12.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 466, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node13.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 467, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node14.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 468, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node15.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 469, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node16.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 470, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node17.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 471, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node18.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 472, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node19.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 473, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node20.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 474, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node21.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 475, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node22.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 476, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node23.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 477, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node24.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 478, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node25.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 479, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node26.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 480, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node27.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 481, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node28.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 482, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node29.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 483, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node30.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 484, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node31.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 485, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node32.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 486, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node33.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 487, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node34.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 488, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node35.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 489, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node36.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 490, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node37.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 491, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node38.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 492, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node39.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 493, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node40.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 494, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node41.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 495, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node42.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 496, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node43.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 497, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node44.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 498, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node45.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 499, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node46.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 500, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node47.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 501, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node48.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 502, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node49.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 503, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node50.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 504, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node51.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 505, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node52.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 506, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node53.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 507, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node54.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 508, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node55.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 509, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node56.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 510, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node57.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 511, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node58.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 512, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node59.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 513, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node60.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 514, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node61.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 515, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node62.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 516, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node63.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 517, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node64.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 518, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node65.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 519, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node66.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 520, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node67.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 521, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node68.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 522, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node69.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 523, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node70.washington.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 524, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node1.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 525, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node2.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 526, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node3.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 527, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node4.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 528, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node5.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 529, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node6.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 530, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node7.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 531, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node8.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 532, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node9.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 533, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node10.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 534, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node11.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 535, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node12.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 536, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node13.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 537, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node14.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 538, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node15.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 539, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node16.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 540, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node17.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 541, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node18.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 542, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node19.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 543, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node20.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 544, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node21.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 545, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node22.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 546, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node23.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 547, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node24.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 548, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node25.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 549, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node26.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 550, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node27.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 551, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node28.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 552, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node29.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 553, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node30.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 554, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node31.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 555, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node32.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 556, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node33.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 557, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node34.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 558, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node35.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 559, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node36.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 560, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node37.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 561, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node38.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 562, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node39.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 563, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node40.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 564, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node41.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 565, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node42.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 566, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node43.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 567, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node44.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 568, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node45.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 569, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node46.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 570, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node47.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 571, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node48.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 572, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node49.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 573, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node50.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 574, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node51.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 575, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node52.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 576, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node53.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 577, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node54.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 578, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node55.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 579, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node56.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 580, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node57.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 581, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node58.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 582, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node59.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 583, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node60.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 584, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node61.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 585, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node62.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 586, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node63.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 587, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node64.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 588, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node65.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 589, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node66.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 590, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node67.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 591, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node68.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 592, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node69.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 593, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node70.princeton.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 594, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node1.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 595, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node2.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 596, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node3.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 597, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node4.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 598, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node5.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 599, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node6.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 600, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node7.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 601, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node8.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 602, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node9.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 603, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node10.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 604, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node11.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 605, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node12.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 606, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node13.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 607, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node14.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 608, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node15.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 609, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node16.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 610, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node17.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 611, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node18.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 612, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node19.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 613, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node20.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 614, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node21.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 615, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node22.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 616, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node23.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 617, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node24.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 618, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node25.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 619, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node26.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 620, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node27.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 621, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node28.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 622, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node29.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 623, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node30.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 624, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node31.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 625, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node32.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 626, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node33.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 627, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node34.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 628, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node35.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 629, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node36.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 630, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node37.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 631, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node38.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 632, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node39.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 633, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node40.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 634, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node41.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 635, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node42.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 636, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node43.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 637, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node44.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 638, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node45.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 639, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node46.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 640, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node47.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 641, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node48.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 642, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node49.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 643, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node50.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 644, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node51.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 645, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node52.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 646, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node53.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 647, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node54.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 648, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node55.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 649, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node56.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 650, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node57.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 651, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node58.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 652, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node59.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 653, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node60.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 654, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node61.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 655, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node62.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 656, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node63.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 657, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node64.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 658, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node65.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 659, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node66.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 660, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node67.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 661, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node68.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 662, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node69.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 663, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node70.gt.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 664, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node1.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 665, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node2.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 666, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node3.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 667, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node4.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 668, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node5.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 669, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node6.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 670, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node7.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 671, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node8.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 672, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node9.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 673, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node10.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 674, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node11.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 675, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node12.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 676, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node13.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 677, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node14.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 678, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node15.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 679, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node16.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 680, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node17.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 681, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node18.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 682, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node19.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 683, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node20.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 684, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node21.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 685, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node22.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 686, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node23.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 687, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node24.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 688, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node25.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 689, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node26.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 690, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node27.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 691, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node28.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 692, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node29.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 693, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node30.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 694, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node31.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 695, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node32.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 696, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node33.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 697, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node34.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 698, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node35.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 699, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node36.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 700, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node37.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 701, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node38.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 702, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node39.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 703, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node40.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 704, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node41.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 705, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node42.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 706, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node43.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 707, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node44.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 708, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node45.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 709, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node46.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 710, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node47.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 711, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node48.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 712, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node49.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 713, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node50.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 714, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node51.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 715, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node52.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 716, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node53.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 717, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node54.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 718, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node55.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 719, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node56.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 720, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node57.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 721, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node58.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 722, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node59.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 723, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node60.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 724, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node61.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 725, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node62.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 726, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node63.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 727, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node64.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 728, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node65.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 729, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node66.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 730, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node67.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 731, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node68.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 732, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node69.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 733, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node70.mpisws.vicci.org", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 734, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node1.atla.internet2.vini-veritas.net", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 13, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 735, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node2.atla.internet2.vini-veritas.net", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 13, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 736, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node1.chic.internet2.vini-veritas.net", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 14, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 737, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node2.chic.internet2.vini-veritas.net", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 14, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 738, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node1.hous.internet2.vini-veritas.net", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 15, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 739, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node2.hous.internet2.vini-veritas.net", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 15, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 740, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node1.kans.internet2.vini-veritas.net", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 16, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 741, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node2.kans.internet2.vini-veritas.net", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 16, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 742, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node1.losa.internet2.vini-veritas.net", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 17, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 743, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node2.losa.internet2.vini-veritas.net", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 17, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 744, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node1.newy.internet2.vini-veritas.net", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 18, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 745, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node2.newy.internet2.vini-veritas.net", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 18, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 746, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node1.salt.internet2.vini-veritas.net", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 19, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 747, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node2.salt.internet2.vini-veritas.net", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 19, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 748, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node1.seat.internet2.vini-veritas.net", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 20, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 749, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node2.seat.internet2.vini-veritas.net", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 20, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 750, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node1.wash.internet2.vini-veritas.net", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 21, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 751, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-06-21T21:17:13.982Z", 
+        "name": "node2.wash.internet2.vini-veritas.net", 
+        "created": "2013-04-03T23:14:11.072Z", 
+        "site": 21, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 752, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-12-17T17:10:48.740Z", 
+        "name": "opencloud0.sing.internet2.edu", 
+        "created": "2013-12-17T17:10:48.740Z", 
+        "site": 23, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 753, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-12-17T17:10:48.742Z", 
+        "name": "opencloud1.sing.internet2.edu", 
+        "created": "2013-12-17T17:10:48.741Z", 
+        "site": 23, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 754, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-12-17T17:10:48.742Z", 
+        "name": "opencloud2.sing.internet2.edu", 
+        "created": "2013-12-17T17:10:48.742Z", 
+        "site": 23, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 755, 
+    "model": "core.node", 
+    "fields": {
+        "updated": "2013-12-17T17:10:48.743Z", 
+        "name": "opencloud3.sing.internet2.edu", 
+        "created": "2013-12-17T17:10:48.743Z", 
+        "site": 23, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 4, 
+    "model": "core.serviceresource", 
+    "fields": {
+        "updated": "2013-12-11T22:18:00.040Z", 
+        "name": "Cycles", 
+        "bucketMaxSize": 0, 
+        "created": "2013-12-11T22:18:00.040Z", 
+        "serviceClass": 1, 
+        "maxUnitsDeployment": 0, 
+        "calendarReservable": false, 
+        "bucketInRate": 0, 
+        "cost": 7, 
+        "maxUnitsNode": 0, 
+        "maxDuration": 0, 
+        "enacted": null
+    }
+},
+{
+    "pk": 5, 
+    "model": "core.serviceresource", 
+    "fields": {
+        "updated": "2013-12-11T22:18:00.045Z", 
+        "name": "Cycles", 
+        "bucketMaxSize": 0, 
+        "created": "2013-12-11T22:18:00.045Z", 
+        "serviceClass": 2, 
+        "maxUnitsDeployment": 0, 
+        "calendarReservable": false, 
+        "bucketInRate": 0, 
+        "cost": 7, 
+        "maxUnitsNode": 0, 
+        "maxDuration": 0, 
+        "enacted": null
+    }
+},
+{
+    "pk": 6, 
+    "model": "core.serviceresource", 
+    "fields": {
+        "updated": "2013-12-11T22:18:00.053Z", 
+        "name": "Cycles", 
+        "bucketMaxSize": 0, 
+        "created": "2013-12-11T22:18:00.053Z", 
+        "serviceClass": 3, 
+        "maxUnitsDeployment": 0, 
+        "calendarReservable": false, 
+        "bucketInRate": 0, 
+        "cost": 7, 
+        "maxUnitsNode": 0, 
+        "maxDuration": 0, 
+        "enacted": null
+    }
+},
+{
+    "pk": 7, 
+    "model": "core.serviceresource", 
+    "fields": {
+        "updated": "2013-12-11T22:18:00.064Z", 
+        "name": "numberCores", 
+        "bucketMaxSize": 0, 
+        "created": "2013-12-11T22:18:00.064Z", 
+        "serviceClass": 3, 
+        "maxUnitsDeployment": 210, 
+        "calendarReservable": true, 
+        "bucketInRate": 0, 
+        "cost": 0, 
+        "maxUnitsNode": 6, 
+        "maxDuration": 8760, 
+        "enacted": null
+    }
+},
+{
+    "pk": 8, 
+    "model": "core.serviceresource", 
+    "fields": {
+        "updated": "2013-12-11T22:18:00.072Z", 
+        "name": "numberCores", 
+        "bucketMaxSize": 210, 
+        "created": "2013-12-11T22:18:00.072Z", 
+        "serviceClass": 2, 
+        "maxUnitsDeployment": 210, 
+        "calendarReservable": true, 
+        "bucketInRate": 10, 
+        "cost": 7, 
+        "maxUnitsNode": 6, 
+        "maxDuration": 168, 
+        "enacted": null
+    }
+},
+{
+    "pk": 40, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 613, 
+        "instance_name": "instance-000003e8", 
+        "updated": "2013-12-12T17:55:32.455Z", 
+        "slice": 4, 
+        "deploymentNetwork": 8, 
+        "name": "node20.gt.vicci.org", 
+        "created": "2013-12-12T17:55:32.455Z", 
+        "ip": "130.207.98.29", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 41, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 615, 
+        "instance_name": "instance-000003e9", 
+        "updated": "2013-12-12T17:55:32.478Z", 
+        "slice": 4, 
+        "deploymentNetwork": 8, 
+        "name": "node22.gt.vicci.org", 
+        "created": "2013-12-12T17:55:32.478Z", 
+        "ip": "130.207.98.31", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 42, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 617, 
+        "instance_name": "instance-000003ea", 
+        "updated": "2013-12-12T17:55:32.495Z", 
+        "slice": 4, 
+        "deploymentNetwork": 8, 
+        "name": "node24.gt.vicci.org", 
+        "created": "2013-12-12T17:55:32.495Z", 
+        "ip": "130.207.98.33", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 43, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 622, 
+        "instance_name": "instance-000003eb", 
+        "updated": "2013-12-12T17:55:32.512Z", 
+        "slice": 4, 
+        "deploymentNetwork": 8, 
+        "name": "node29.gt.vicci.org", 
+        "created": "2013-12-12T17:55:32.511Z", 
+        "ip": "130.207.98.38", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 44, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 623, 
+        "instance_name": "instance-000003ec", 
+        "updated": "2013-12-12T17:55:32.528Z", 
+        "slice": 4, 
+        "deploymentNetwork": 8, 
+        "name": "node30.gt.vicci.org", 
+        "created": "2013-12-12T17:55:32.528Z", 
+        "ip": "130.207.98.39", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 46, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 625, 
+        "instance_name": "instance-000003ee", 
+        "updated": "2013-12-12T17:55:32.561Z", 
+        "slice": 4, 
+        "deploymentNetwork": 8, 
+        "name": "node32.gt.vicci.org", 
+        "created": "2013-12-12T17:55:32.561Z", 
+        "ip": "130.207.98.41", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 47, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 630, 
+        "instance_name": "instance-000003ef", 
+        "updated": "2013-12-12T17:55:32.577Z", 
+        "slice": 4, 
+        "deploymentNetwork": 8, 
+        "name": "node37.gt.vicci.org", 
+        "created": "2013-12-12T17:55:32.577Z", 
+        "ip": "130.207.98.46", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 48, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 666, 
+        "instance_name": "instance-000003f0", 
+        "updated": "2013-12-12T17:55:32.594Z", 
+        "slice": 4, 
+        "deploymentNetwork": 9, 
+        "name": "node3.mpisws.vicci.org", 
+        "created": "2013-12-12T17:55:32.594Z", 
+        "ip": "141.39.220.13", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 49, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 683, 
+        "instance_name": "instance-000003f1", 
+        "updated": "2013-12-12T17:55:32.611Z", 
+        "slice": 4, 
+        "deploymentNetwork": 9, 
+        "name": "node20.mpisws.vicci.org", 
+        "created": "2013-12-12T17:55:32.610Z", 
+        "ip": "141.39.220.30", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 50, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 684, 
+        "instance_name": "instance-000003f2", 
+        "updated": "2013-12-12T17:55:32.627Z", 
+        "slice": 4, 
+        "deploymentNetwork": 9, 
+        "name": "node21.mpisws.vicci.org", 
+        "created": "2013-12-12T17:55:32.627Z", 
+        "ip": "141.39.220.31", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 51, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 686, 
+        "instance_name": "instance-000003f3", 
+        "updated": "2013-12-12T17:55:32.644Z", 
+        "slice": 4, 
+        "deploymentNetwork": 9, 
+        "name": "node23.mpisws.vicci.org", 
+        "created": "2013-12-12T17:55:32.644Z", 
+        "ip": "141.39.220.33", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 52, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 687, 
+        "instance_name": "instance-000003f4", 
+        "updated": "2013-12-12T17:55:32.660Z", 
+        "slice": 4, 
+        "deploymentNetwork": 9, 
+        "name": "node24.mpisws.vicci.org", 
+        "created": "2013-12-12T17:55:32.660Z", 
+        "ip": "141.39.220.34", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 53, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 691, 
+        "instance_name": "instance-000003f5", 
+        "updated": "2013-12-12T17:55:32.677Z", 
+        "slice": 4, 
+        "deploymentNetwork": 9, 
+        "name": "node28.mpisws.vicci.org", 
+        "created": "2013-12-12T17:55:32.677Z", 
+        "ip": "141.39.220.38", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 54, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 693, 
+        "instance_name": "instance-000003f6", 
+        "updated": "2013-12-12T17:55:32.693Z", 
+        "slice": 4, 
+        "deploymentNetwork": 9, 
+        "name": "node30.mpisws.vicci.org", 
+        "created": "2013-12-12T17:55:32.693Z", 
+        "ip": "141.39.220.40", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 55, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 694, 
+        "instance_name": "instance-000003f7", 
+        "updated": "2013-12-12T17:55:32.710Z", 
+        "slice": 4, 
+        "deploymentNetwork": 9, 
+        "name": "node31.mpisws.vicci.org", 
+        "created": "2013-12-12T17:55:32.710Z", 
+        "ip": "141.39.220.41", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 58, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 561, 
+        "instance_name": "instance-000003fa", 
+        "updated": "2013-12-12T17:55:32.760Z", 
+        "slice": 4, 
+        "deploymentNetwork": 7, 
+        "name": "node38.princeton.vicci.org", 
+        "created": "2013-12-12T17:55:32.759Z", 
+        "ip": "128.112.171.94", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 59, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 562, 
+        "instance_name": "instance-000003fb", 
+        "updated": "2013-12-12T17:55:32.776Z", 
+        "slice": 4, 
+        "deploymentNetwork": 7, 
+        "name": "node39.princeton.vicci.org", 
+        "created": "2013-12-12T17:55:32.776Z", 
+        "ip": "128.112.171.96", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 60, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 563, 
+        "instance_name": "instance-000003fc", 
+        "updated": "2013-12-12T17:55:32.792Z", 
+        "slice": 4, 
+        "deploymentNetwork": 7, 
+        "name": "node40.princeton.vicci.org", 
+        "created": "2013-12-12T17:55:32.792Z", 
+        "ip": "128.112.171.98", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 61, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 565, 
+        "instance_name": "instance-000003fd", 
+        "updated": "2013-12-12T17:55:32.809Z", 
+        "slice": 4, 
+        "deploymentNetwork": 7, 
+        "name": "node42.princeton.vicci.org", 
+        "created": "2013-12-12T17:55:32.809Z", 
+        "ip": "128.112.171.102", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 62, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 566, 
+        "instance_name": "instance-000003fe", 
+        "updated": "2013-12-12T17:55:32.826Z", 
+        "slice": 4, 
+        "deploymentNetwork": 7, 
+        "name": "node43.princeton.vicci.org", 
+        "created": "2013-12-12T17:55:32.826Z", 
+        "ip": "128.112.171.104", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 63, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 568, 
+        "instance_name": "instance-000003ff", 
+        "updated": "2013-12-12T17:55:32.842Z", 
+        "slice": 4, 
+        "deploymentNetwork": 7, 
+        "name": "node45.princeton.vicci.org", 
+        "created": "2013-12-12T17:55:32.842Z", 
+        "ip": "128.112.171.108", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 64, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 404, 
+        "instance_name": "instance-00000400", 
+        "updated": "2013-12-12T17:55:32.859Z", 
+        "slice": 4, 
+        "deploymentNetwork": 5, 
+        "name": "node21.stanford.vicci.org", 
+        "created": "2013-12-12T17:55:32.859Z", 
+        "ip": "171.67.92.159", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 65, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 405, 
+        "instance_name": "instance-00000401", 
+        "updated": "2013-12-12T17:55:32.875Z", 
+        "slice": 4, 
+        "deploymentNetwork": 5, 
+        "name": "node22.stanford.vicci.org", 
+        "created": "2013-12-12T17:55:32.875Z", 
+        "ip": "171.67.92.160", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 66, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 406, 
+        "instance_name": "instance-00000402", 
+        "updated": "2013-12-12T17:55:32.892Z", 
+        "slice": 4, 
+        "deploymentNetwork": 5, 
+        "name": "node23.stanford.vicci.org", 
+        "created": "2013-12-12T17:55:32.892Z", 
+        "ip": "171.67.92.161", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 67, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 407, 
+        "instance_name": "instance-00000403", 
+        "updated": "2013-12-12T17:55:32.909Z", 
+        "slice": 4, 
+        "deploymentNetwork": 5, 
+        "name": "node24.stanford.vicci.org", 
+        "created": "2013-12-12T17:55:32.909Z", 
+        "ip": "171.67.92.162", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 68, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 408, 
+        "instance_name": "instance-00000404", 
+        "updated": "2013-12-12T17:55:32.925Z", 
+        "slice": 4, 
+        "deploymentNetwork": 5, 
+        "name": "node25.stanford.vicci.org", 
+        "created": "2013-12-12T17:55:32.925Z", 
+        "ip": "171.67.92.163", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 69, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 409, 
+        "instance_name": "instance-00000405", 
+        "updated": "2013-12-12T17:55:32.942Z", 
+        "slice": 4, 
+        "deploymentNetwork": 5, 
+        "name": "node26.stanford.vicci.org", 
+        "created": "2013-12-12T17:55:32.942Z", 
+        "ip": "171.67.92.164", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 70, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 412, 
+        "instance_name": "instance-00000406", 
+        "updated": "2013-12-12T17:55:32.958Z", 
+        "slice": 4, 
+        "deploymentNetwork": 5, 
+        "name": "node29.stanford.vicci.org", 
+        "created": "2013-12-12T17:55:32.958Z", 
+        "ip": "171.67.92.167", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 71, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 413, 
+        "instance_name": "instance-00000407", 
+        "updated": "2013-12-12T17:55:32.975Z", 
+        "slice": 4, 
+        "deploymentNetwork": 5, 
+        "name": "node30.stanford.vicci.org", 
+        "created": "2013-12-12T17:55:32.975Z", 
+        "ip": "171.67.92.168", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 72, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 460, 
+        "instance_name": "instance-00000408", 
+        "updated": "2013-12-12T17:55:32.992Z", 
+        "slice": 4, 
+        "deploymentNetwork": 6, 
+        "name": "node7.washington.vicci.org", 
+        "created": "2013-12-12T17:55:32.992Z", 
+        "ip": "128.95.1.112", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 73, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 467, 
+        "instance_name": "instance-00000409", 
+        "updated": "2013-12-12T17:55:33.008Z", 
+        "slice": 4, 
+        "deploymentNetwork": 6, 
+        "name": "node14.washington.vicci.org", 
+        "created": "2013-12-12T17:55:33.008Z", 
+        "ip": "128.95.1.119", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 76, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 470, 
+        "instance_name": "instance-0000040c", 
+        "updated": "2013-12-12T17:55:33.058Z", 
+        "slice": 4, 
+        "deploymentNetwork": 6, 
+        "name": "node17.washington.vicci.org", 
+        "created": "2013-12-12T17:55:33.058Z", 
+        "ip": "128.95.1.122", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 77, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 553, 
+        "instance_name": "instance-0000040d", 
+        "updated": "2013-12-12T17:55:33.110Z", 
+        "slice": 8, 
+        "deploymentNetwork": 7, 
+        "name": "node30.princeton.vicci.org", 
+        "created": "2013-12-12T17:55:33.110Z", 
+        "ip": "128.112.171.78", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 78, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 553, 
+        "instance_name": "instance-0000040e", 
+        "updated": "2013-12-12T17:55:33.142Z", 
+        "slice": 9, 
+        "deploymentNetwork": 7, 
+        "name": "node30.princeton.vicci.org", 
+        "created": "2013-12-12T17:55:33.142Z", 
+        "ip": "128.112.171.78", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 79, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 469, 
+        "instance_name": null, 
+        "updated": "2013-12-13T21:51:36.927Z", 
+        "slice": 11, 
+        "deploymentNetwork": 6, 
+        "name": "Stork", 
+        "created": "2013-12-13T21:51:36.927Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 0, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 80, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 438, 
+        "instance_name": null, 
+        "updated": "2013-12-13T21:53:35.001Z", 
+        "slice": 12, 
+        "deploymentNetwork": 5, 
+        "name": "Owl", 
+        "created": "2013-12-13T21:53:35.001Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 0, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 81, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 588, 
+        "instance_name": null, 
+        "updated": "2013-12-18T22:21:36.513Z", 
+        "slice": 14, 
+        "deploymentNetwork": 7, 
+        "name": "test-slice-1", 
+        "created": "2013-12-13T21:58:13.897Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 0, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 82, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 589, 
+        "instance_name": null, 
+        "updated": "2013-12-18T22:21:36.522Z", 
+        "slice": 14, 
+        "deploymentNetwork": 7, 
+        "name": "test-slice-1", 
+        "created": "2013-12-13T21:58:44.349Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 0, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 83, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 590, 
+        "instance_name": null, 
+        "updated": "2013-12-18T22:21:36.530Z", 
+        "slice": 14, 
+        "deploymentNetwork": 7, 
+        "name": "test-slice-1", 
+        "created": "2013-12-13T21:58:44.350Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 0, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 84, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 384, 
+        "instance_name": null, 
+        "updated": "2013-12-13T21:59:36.723Z", 
+        "slice": 13, 
+        "deploymentNetwork": 5, 
+        "name": "Hadoop", 
+        "created": "2013-12-13T21:59:36.723Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 0, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 85, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 473, 
+        "instance_name": null, 
+        "updated": "2013-12-13T21:59:36.725Z", 
+        "slice": 13, 
+        "deploymentNetwork": 6, 
+        "name": "Hadoop", 
+        "created": "2013-12-13T21:59:36.725Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 0, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 86, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 535, 
+        "instance_name": null, 
+        "updated": "2013-12-13T21:59:36.726Z", 
+        "slice": 13, 
+        "deploymentNetwork": 7, 
+        "name": "Hadoop", 
+        "created": "2013-12-13T21:59:36.726Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 0, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 87, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 592, 
+        "instance_name": null, 
+        "updated": "2013-12-18T22:22:04.726Z", 
+        "slice": 15, 
+        "deploymentNetwork": 7, 
+        "name": "test-slice-2", 
+        "created": "2013-12-13T22:01:30.192Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 0, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 88, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 593, 
+        "instance_name": null, 
+        "updated": "2013-12-18T22:22:04.734Z", 
+        "slice": 15, 
+        "deploymentNetwork": 7, 
+        "name": "test-slice-2", 
+        "created": "2013-12-13T22:01:49.742Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 0, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 288, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 433, 
+        "instance_name": "instance-000005dc", 
+        "updated": "2013-12-18T21:41:49.275Z", 
+        "slice": 6, 
+        "deploymentNetwork": 5, 
+        "name": "node50.stanford.vicci.org", 
+        "created": "2013-12-18T21:41:49.275Z", 
+        "ip": "171.67.92.188", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 289, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 643, 
+        "instance_name": "instance-000005dd", 
+        "updated": "2013-12-18T21:41:49.293Z", 
+        "slice": 6, 
+        "deploymentNetwork": 8, 
+        "name": "node50.gt.vicci.org", 
+        "created": "2013-12-18T21:41:49.293Z", 
+        "ip": "130.207.98.59", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 290, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 713, 
+        "instance_name": "instance-000005de", 
+        "updated": "2013-12-18T21:41:49.310Z", 
+        "slice": 6, 
+        "deploymentNetwork": 9, 
+        "name": "node50.mpisws.vicci.org", 
+        "created": "2013-12-18T21:41:49.310Z", 
+        "ip": "141.39.220.60", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 291, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 503, 
+        "instance_name": "instance-000005df", 
+        "updated": "2013-12-18T21:41:49.326Z", 
+        "slice": 6, 
+        "deploymentNetwork": 6, 
+        "name": "node50.washington.vicci.org", 
+        "created": "2013-12-18T21:41:49.326Z", 
+        "ip": "128.95.1.155", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 292, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 513, 
+        "instance_name": "instance-000005e0", 
+        "updated": "2013-12-18T21:41:49.343Z", 
+        "slice": 6, 
+        "deploymentNetwork": 6, 
+        "name": "node60.washington.vicci.org", 
+        "created": "2013-12-18T21:41:49.343Z", 
+        "ip": "128.95.1.165", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 293, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 723, 
+        "instance_name": "instance-000005e1", 
+        "updated": "2013-12-18T21:41:49.359Z", 
+        "slice": 6, 
+        "deploymentNetwork": 9, 
+        "name": "node60.mpisws.vicci.org", 
+        "created": "2013-12-18T21:41:49.359Z", 
+        "ip": "141.39.220.70", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 294, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 603, 
+        "instance_name": "instance-000005e2", 
+        "updated": "2013-12-18T21:41:49.376Z", 
+        "slice": 6, 
+        "deploymentNetwork": 8, 
+        "name": "node10.gt.vicci.org", 
+        "created": "2013-12-18T21:41:49.376Z", 
+        "ip": "130.207.98.19", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 295, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 559, 
+        "instance_name": "instance-000005e3", 
+        "updated": "2013-12-18T21:41:49.393Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node36.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.393Z", 
+        "ip": "128.112.171.90", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 296, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 560, 
+        "instance_name": "instance-000005e4", 
+        "updated": "2013-12-18T21:41:49.409Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node37.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.409Z", 
+        "ip": "128.112.171.92", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 297, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 561, 
+        "instance_name": "instance-000005e5", 
+        "updated": "2013-12-18T21:41:49.426Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node38.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.426Z", 
+        "ip": "128.112.171.94", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 298, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 562, 
+        "instance_name": "instance-000005e6", 
+        "updated": "2013-12-18T21:41:49.442Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node39.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.442Z", 
+        "ip": "128.112.171.96", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 299, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 563, 
+        "instance_name": "instance-000005e7", 
+        "updated": "2013-12-18T21:41:49.459Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node40.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.459Z", 
+        "ip": "128.112.171.98", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 300, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 564, 
+        "instance_name": "instance-000005e8", 
+        "updated": "2013-12-18T21:41:49.476Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node41.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.475Z", 
+        "ip": "128.112.171.100", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 301, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 565, 
+        "instance_name": "instance-000005e9", 
+        "updated": "2013-12-18T21:41:49.492Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node42.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.492Z", 
+        "ip": "128.112.171.102", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 302, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 566, 
+        "instance_name": "instance-000005ea", 
+        "updated": "2013-12-18T21:41:49.508Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node43.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.508Z", 
+        "ip": "128.112.171.104", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 303, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 567, 
+        "instance_name": "instance-000005eb", 
+        "updated": "2013-12-18T21:41:49.525Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node44.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.525Z", 
+        "ip": "128.112.171.106", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 304, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 568, 
+        "instance_name": "instance-000005ec", 
+        "updated": "2013-12-18T21:41:49.542Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node45.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.542Z", 
+        "ip": "128.112.171.108", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 305, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 569, 
+        "instance_name": "instance-000005ed", 
+        "updated": "2013-12-18T21:41:49.558Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node46.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.558Z", 
+        "ip": "128.112.171.110", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 306, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 570, 
+        "instance_name": "instance-000005ee", 
+        "updated": "2013-12-18T21:41:49.575Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node47.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.575Z", 
+        "ip": "128.112.171.112", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 307, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 571, 
+        "instance_name": "instance-000005ef", 
+        "updated": "2013-12-18T21:41:49.591Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node48.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.591Z", 
+        "ip": "128.112.171.114", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 308, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 572, 
+        "instance_name": "instance-000005f0", 
+        "updated": "2013-12-18T21:41:49.608Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node49.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.608Z", 
+        "ip": "128.112.171.116", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 309, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 573, 
+        "instance_name": "instance-000005f1", 
+        "updated": "2013-12-18T21:41:49.625Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node50.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.625Z", 
+        "ip": "128.112.171.118", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 310, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 574, 
+        "instance_name": "instance-000005f2", 
+        "updated": "2013-12-18T21:41:49.641Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node51.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.641Z", 
+        "ip": "128.112.171.120", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 311, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 575, 
+        "instance_name": "instance-000005f3", 
+        "updated": "2013-12-18T21:41:49.658Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node52.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.658Z", 
+        "ip": "128.112.171.122", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 312, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 576, 
+        "instance_name": "instance-000005f4", 
+        "updated": "2013-12-18T21:41:49.674Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node53.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.674Z", 
+        "ip": "128.112.171.124", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 313, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 577, 
+        "instance_name": "instance-000005f5", 
+        "updated": "2013-12-18T21:41:49.691Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node54.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.691Z", 
+        "ip": "128.112.171.126", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 314, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 578, 
+        "instance_name": "instance-000005f6", 
+        "updated": "2013-12-18T21:41:49.707Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node55.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.707Z", 
+        "ip": "128.112.171.128", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 315, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 579, 
+        "instance_name": "instance-000005f7", 
+        "updated": "2013-12-18T21:41:49.724Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node56.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.724Z", 
+        "ip": "128.112.171.130", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 316, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 580, 
+        "instance_name": "instance-000005f8", 
+        "updated": "2013-12-18T21:41:49.741Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node57.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.740Z", 
+        "ip": "128.112.171.132", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 317, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 581, 
+        "instance_name": "instance-000005f9", 
+        "updated": "2013-12-18T21:41:49.757Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node58.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.757Z", 
+        "ip": "128.112.171.134", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 318, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 582, 
+        "instance_name": "instance-000005fa", 
+        "updated": "2013-12-18T21:41:49.774Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node59.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.774Z", 
+        "ip": "128.112.171.136", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 319, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 583, 
+        "instance_name": "instance-000005fb", 
+        "updated": "2013-12-18T21:41:49.790Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node60.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.790Z", 
+        "ip": "128.112.171.138", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 320, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 584, 
+        "instance_name": "instance-000005fc", 
+        "updated": "2013-12-18T21:41:49.807Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node61.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.807Z", 
+        "ip": "128.112.171.140", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 321, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 585, 
+        "instance_name": "instance-000005fd", 
+        "updated": "2013-12-18T21:41:49.823Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node62.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.823Z", 
+        "ip": "128.112.171.142", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 322, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 586, 
+        "instance_name": "instance-000005fe", 
+        "updated": "2013-12-18T21:41:49.840Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node63.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.840Z", 
+        "ip": "128.112.171.144", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 323, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 587, 
+        "instance_name": "instance-000005ff", 
+        "updated": "2013-12-18T21:41:49.856Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node64.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.856Z", 
+        "ip": "128.112.171.146", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 324, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 588, 
+        "instance_name": "instance-00000600", 
+        "updated": "2013-12-18T21:41:49.873Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node65.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.873Z", 
+        "ip": "128.112.171.148", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 325, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 589, 
+        "instance_name": "instance-00000601", 
+        "updated": "2013-12-18T21:41:49.890Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node66.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.890Z", 
+        "ip": "128.112.171.150", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 326, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 590, 
+        "instance_name": "instance-00000602", 
+        "updated": "2013-12-18T21:41:49.906Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node67.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.906Z", 
+        "ip": "128.112.171.152", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 327, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 591, 
+        "instance_name": "instance-00000603", 
+        "updated": "2013-12-18T21:41:49.923Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node68.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.923Z", 
+        "ip": "128.112.171.154", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 328, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 592, 
+        "instance_name": "instance-00000604", 
+        "updated": "2013-12-18T21:41:49.939Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node69.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.939Z", 
+        "ip": "128.112.171.156", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 329, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 593, 
+        "instance_name": "instance-00000605", 
+        "updated": "2013-12-18T21:41:49.956Z", 
+        "slice": 6, 
+        "deploymentNetwork": 7, 
+        "name": "node70.princeton.vicci.org", 
+        "created": "2013-12-18T21:41:49.956Z", 
+        "ip": "128.112.171.158", 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 330, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 453, 
+        "instance_name": null, 
+        "updated": "2014-05-20T16:19:07.852Z", 
+        "slice": 13, 
+        "deploymentNetwork": 5, 
+        "name": "node70.stanford.vicci.org", 
+        "created": "2014-05-20T16:19:07.852Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 331, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 523, 
+        "instance_name": null, 
+        "updated": "2014-05-20T16:19:07.940Z", 
+        "slice": 13, 
+        "deploymentNetwork": 6, 
+        "name": "node70.washington.vicci.org", 
+        "created": "2014-05-20T16:19:07.940Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 332, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 452, 
+        "instance_name": null, 
+        "updated": "2014-05-20T16:19:08.011Z", 
+        "slice": 13, 
+        "deploymentNetwork": 5, 
+        "name": "node69.stanford.vicci.org", 
+        "created": "2014-05-20T16:19:08.011Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 333, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 522, 
+        "instance_name": null, 
+        "updated": "2014-05-20T16:19:08.076Z", 
+        "slice": 13, 
+        "deploymentNetwork": 6, 
+        "name": "node69.washington.vicci.org", 
+        "created": "2014-05-20T16:19:08.076Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 334, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 451, 
+        "instance_name": null, 
+        "updated": "2014-05-20T16:19:08.160Z", 
+        "slice": 13, 
+        "deploymentNetwork": 5, 
+        "name": "node68.stanford.vicci.org", 
+        "created": "2014-05-20T16:19:08.159Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 335, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 521, 
+        "instance_name": null, 
+        "updated": "2014-05-20T16:19:08.244Z", 
+        "slice": 13, 
+        "deploymentNetwork": 6, 
+        "name": "node68.washington.vicci.org", 
+        "created": "2014-05-20T16:19:08.244Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 336, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 450, 
+        "instance_name": null, 
+        "updated": "2014-05-20T16:19:08.305Z", 
+        "slice": 13, 
+        "deploymentNetwork": 5, 
+        "name": "node67.stanford.vicci.org", 
+        "created": "2014-05-20T16:19:08.305Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 3, 
-    "model": "core.serviceclass", 
+    "pk": 337
+    "model": "core.sliver", 
     "fields": {
-        "updated": "2013-05-10T23:34:01.320Z", 
-        "membershipFee": 18000, 
-        "membershipFeeMonths": 12, 
-        "created": "2013-05-10T23:34:01.320Z", 
-        "upgradeFrom": [
-            1, 
-            2
-        ], 
-        "commitment": 365, 
-        "name": "Gold", 
-        "upgradeRequiresApproval": false, 
-        "description": "Gold"
+        "node": 593, 
+        "instance_name": null, 
+        "updated": "2014-05-20T16:19:08.403Z", 
+        "slice": 13, 
+        "deploymentNetwork": 7, 
+        "name": "node70.princeton.vicci.org", 
+        "created": "2014-05-20T16:19:08.397Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 4
-    "model": "core.slice", 
+    "pk": 338
+    "model": "core.sliver", 
     "fields": {
-        "router_id": null, 
-        "updated": "2013-12-05T01:41:11.410Z", 
-        "name": "HyperCache", 
-        "service": 3, 
-        "created": "2013-04-03T23:14:11.072Z", 
-        "network_id": null, 
-        "tenant_id": "", 
-        "serviceClass": 1, 
-        "enabled": true, 
-        "site": 22, 
-        "omf_friendly": false, 
-        "subnet_id": null, 
-        "slice_url": "", 
-        "creator": 1, 
-        "description": "HyperCache slice for HyperCache service."
+        "node": 520, 
+        "instance_name": null, 
+        "updated": "2014-05-20T16:19:08.421Z", 
+        "slice": 13, 
+        "deploymentNetwork": 6, 
+        "name": "node67.washington.vicci.org", 
+        "created": "2014-05-20T16:19:08.421Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 6
-    "model": "core.slice", 
+    "pk": 339
+    "model": "core.sliver", 
     "fields": {
-        "router_id": null, 
-        "updated": "2013-12-05T01:41:23.032Z", 
-        "name": "Syndicate", 
-        "service": 5, 
-        "created": "2013-04-03T23:14:11.072Z", 
-        "network_id": null, 
-        "tenant_id": "", 
-        "serviceClass": 1, 
-        "enabled": true, 
-        "site": 22, 
-        "omf_friendly": false, 
-        "subnet_id": null, 
-        "slice_url": "", 
-        "creator": 1, 
-        "description": ""
+        "node": 449, 
+        "instance_name": null, 
+        "updated": "2014-05-20T16:19:08.465Z", 
+        "slice": 13, 
+        "deploymentNetwork": 5, 
+        "name": "node66.stanford.vicci.org", 
+        "created": "2014-05-20T16:19:08.465Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 8
-    "model": "core.slice", 
+    "pk": 340
+    "model": "core.sliver", 
     "fields": {
-        "router_id": null, 
-        "updated": "2013-12-12T18:11:27.780Z", 
-        "name": "DnsRedir", 
-        "service": 4, 
-        "created": "2013-12-04T22:48:35.584Z", 
-        "network_id": null, 
-        "tenant_id": "", 
-        "serviceClass": 2, 
-        "enabled": true, 
-        "site": 22, 
-        "omf_friendly": false, 
-        "subnet_id": null, 
-        "slice_url": "", 
-        "creator": 8, 
-        "description": "DNS Redirection slice for RequestRouter service."
+        "node": 592, 
+        "instance_name": null, 
+        "updated": "2014-05-20T16:19:08.555Z", 
+        "slice": 13, 
+        "deploymentNetwork": 7, 
+        "name": "node69.princeton.vicci.org", 
+        "created": "2014-05-20T16:19:08.555Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 9
-    "model": "core.slice", 
+    "pk": 341
+    "model": "core.sliver", 
     "fields": {
-        "router_id": null, 
-        "updated": "2013-12-12T18:12:41.375Z", 
-        "name": "DnsDemux", 
-        "service": 4, 
-        "created": "2013-12-04T22:49:23.051Z", 
-        "network_id": null, 
-        "tenant_id": "", 
-        "serviceClass": 2, 
-        "enabled": true, 
-        "site": 22, 
-        "omf_friendly": false, 
-        "subnet_id": null, 
-        "slice_url": "", 
-        "creator": 8, 
-        "description": "DNS Demultiplexing slice for RequestRouter service. "
+        "node": 519, 
+        "instance_name": null, 
+        "updated": "2014-05-20T16:19:08.567Z", 
+        "slice": 13, 
+        "deploymentNetwork": 6, 
+        "name": "node66.washington.vicci.org", 
+        "created": "2014-05-20T16:19:08.567Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 10
-    "model": "core.slice", 
+    "pk": 342
+    "model": "core.sliver", 
     "fields": {
-        "router_id": null, 
-        "updated": "2013-12-09T14:19:28.458Z", 
-        "name": "Infrastructure", 
-        "service": null, 
-        "created": "2013-12-09T14:13:15.392Z", 
-        "network_id": null, 
-        "tenant_id": "", 
-        "serviceClass": 1, 
-        "enabled": true, 
-        "site": 22, 
-        "omf_friendly": false, 
-        "subnet_id": null, 
-        "slice_url": "", 
-        "creator": null, 
-        "description": ""
+        "node": 591, 
+        "instance_name": null, 
+        "updated": "2014-05-20T16:19:08.788Z", 
+        "slice": 13, 
+        "deploymentNetwork": 7, 
+        "name": "node68.princeton.vicci.org", 
+        "created": "2014-05-20T16:19:08.788Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 11
-    "model": "core.slice", 
+    "pk": 343
+    "model": "core.sliver", 
     "fields": {
-        "router_id": null, 
-        "updated": "2013-12-17T18:09:29.065Z", 
-        "name": "Stork", 
-        "service": 8, 
-        "created": "2013-12-13T21:49:59.476Z", 
-        "network_id": null, 
-        "tenant_id": "", 
-        "serviceClass": 1, 
-        "enabled": true, 
-        "site": 24, 
-        "omf_friendly": false, 
-        "subnet_id": null, 
-        "slice_url": "", 
-        "creator": null, 
-        "description": "The Stork Package Management Service"
+        "node": 590, 
+        "instance_name": null, 
+        "updated": "2014-05-20T16:19:08.903Z", 
+        "slice": 13, 
+        "deploymentNetwork": 7, 
+        "name": "node67.princeton.vicci.org", 
+        "created": "2014-05-20T16:19:08.903Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 12
-    "model": "core.slice", 
+    "pk": 344
+    "model": "core.sliver", 
     "fields": {
-        "router_id": null, 
-        "updated": "2013-12-17T18:09:20.587Z", 
-        "name": "Owl", 
-        "service": 8, 
-        "created": "2013-12-13T21:52:15.590Z", 
-        "network_id": null, 
-        "tenant_id": "", 
-        "serviceClass": 1, 
-        "enabled": true, 
-        "site": 24, 
-        "omf_friendly": false, 
-        "subnet_id": null, 
-        "slice_url": "", 
-        "creator": null, 
-        "description": "The Owl Data Collection service"
+        "node": 589, 
+        "instance_name": null, 
+        "updated": "2014-05-20T16:19:08.995Z", 
+        "slice": 13, 
+        "deploymentNetwork": 7, 
+        "name": "node66.princeton.vicci.org", 
+        "created": "2014-05-20T16:19:08.995Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 13
-    "model": "core.slice", 
+    "pk": 345
+    "model": "core.sliver", 
     "fields": {
-        "router_id": null, 
-        "updated": "2013-12-13T21:59:36.718Z", 
-        "name": "Hadoop", 
-        "service": null, 
-        "created": "2013-12-13T21:54:20.895Z", 
-        "network_id": null, 
-        "tenant_id": "", 
-        "serviceClass": 2, 
-        "enabled": true, 
-        "site": 22, 
-        "omf_friendly": false, 
-        "subnet_id": null, 
-        "slice_url": "", 
-        "creator": null, 
-        "description": "Hadoop map-reduce service"
+        "node": 535, 
+        "instance_name": null, 
+        "updated": "2014-05-20T17:55:00.654Z", 
+        "slice": 16, 
+        "deploymentNetwork": 7, 
+        "name": "Analytics", 
+        "created": "2014-05-20T17:55:00.654Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 0, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 14
-    "model": "core.slice", 
+    "pk": 346
+    "model": "core.sliver", 
     "fields": {
-        "router_id": null, 
-        "updated": "2013-12-13T21:58:44.338Z", 
-        "name": "test-slice-1", 
-        "service": null, 
-        "created": "2013-12-13T21:56:57.299Z", 
-        "network_id": null, 
-        "tenant_id": "", 
-        "serviceClass": 1, 
-        "enabled": true, 
-        "site": 10, 
-        "omf_friendly": false, 
-        "subnet_id": null, 
-        "slice_url": "", 
-        "creator": null, 
-        "description": "Test slice number one."
+        "node": 384, 
+        "instance_name": null, 
+        "updated": "2014-05-20T23:45:35.304Z", 
+        "slice": 16, 
+        "deploymentNetwork": 5, 
+        "name": "node1.stanford.vicci.org", 
+        "created": "2014-05-20T23:45:35.304Z", 
+        "ip": null, 
+        "image": 2, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 15
-    "model": "core.slice", 
+    "pk": 347
+    "model": "core.sliver", 
     "fields": {
-        "router_id": null, 
-        "updated": "2013-12-13T22:01:49.732Z", 
-        "name": "test-slice-2", 
-        "service": null, 
-        "created": "2013-12-13T22:00:03.049Z", 
-        "network_id": null, 
-        "tenant_id": "", 
-        "serviceClass": 1, 
-        "enabled": true, 
-        "site": 10, 
-        "omf_friendly": false, 
-        "subnet_id": null, 
-        "slice_url": "", 
-        "creator": null, 
-        "description": "test slice number two."
+        "node": 454, 
+        "instance_name": null, 
+        "updated": "2014-05-20T23:45:35.322Z", 
+        "slice": 16, 
+        "deploymentNetwork": 6, 
+        "name": "node1.washington.vicci.org", 
+        "created": "2014-05-20T23:45:35.322Z", 
+        "ip": null, 
+        "image": 2, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 1
-    "model": "core.image", 
+    "pk": 348
+    "model": "core.sliver", 
     "fields": {
-        "updated": "2013-12-09T14:26:56.787Z", 
-        "name": "Fedora 16 LXC rev 1.3", 
-        "created": "2013-12-09T14:26:56.787Z", 
-        "container_format": "bare", 
-        "disk_format": "raw", 
-        "image_id": "d4bdbba2-6883-4232-863a-202fd4c56c21"
+        "node": 385, 
+        "instance_name": null, 
+        "updated": "2014-05-20T23:45:35.397Z", 
+        "slice": 16, 
+        "deploymentNetwork": 5, 
+        "name": "node2.stanford.vicci.org", 
+        "created": "2014-05-20T23:45:35.397Z", 
+        "ip": null, 
+        "image": 2, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 384
-    "model": "core.node", 
+    "pk": 349
+    "model": "core.sliver", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node1.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "node": 455, 
+        "instance_name": null, 
+        "updated": "2014-05-20T23:45:35.436Z", 
+        "slice": 16, 
+        "deploymentNetwork": 6, 
+        "name": "node2.washington.vicci.org", 
+        "created": "2014-05-20T23:45:35.436Z", 
+        "ip": null, 
+        "image": 2, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 385
-    "model": "core.node", 
+    "pk": 350
+    "model": "core.sliver", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node2.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "node": 524, 
+        "instance_name": null, 
+        "updated": "2014-05-20T23:45:35.461Z", 
+        "slice": 16, 
+        "deploymentNetwork": 7, 
+        "name": "node1.princeton.vicci.org", 
+        "created": "2014-05-20T23:45:35.461Z", 
+        "ip": null, 
+        "image": 2, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 351, 
+    "model": "core.sliver", 
+    "fields": {
+        "node": 386, 
+        "instance_name": null, 
+        "updated": "2014-05-20T23:45:35.472Z", 
+        "slice": 16, 
+        "deploymentNetwork": 5, 
+        "name": "node3.stanford.vicci.org", 
+        "created": "2014-05-20T23:45:35.472Z", 
+        "ip": null, 
+        "image": 2, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 386
-    "model": "core.node", 
+    "pk": 352
+    "model": "core.sliver", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node3.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "node": 456, 
+        "instance_name": null, 
+        "updated": "2014-05-20T23:45:35.508Z", 
+        "slice": 16, 
+        "deploymentNetwork": 6, 
+        "name": "node3.washington.vicci.org", 
+        "created": "2014-05-20T23:45:35.508Z", 
+        "ip": null, 
+        "image": 2, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 387
-    "model": "core.node", 
+    "pk": 353
+    "model": "core.sliver", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node4.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "node": 525, 
+        "instance_name": null, 
+        "updated": "2014-05-20T23:45:35.565Z", 
+        "slice": 16, 
+        "deploymentNetwork": 7, 
+        "name": "node2.princeton.vicci.org", 
+        "created": "2014-05-20T23:45:35.565Z", 
+        "ip": null, 
+        "image": 2, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 388
-    "model": "core.node", 
+    "pk": 354
+    "model": "core.sliver", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node5.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "node": 457, 
+        "instance_name": null, 
+        "updated": "2014-05-20T23:45:35.707Z", 
+        "slice": 16, 
+        "deploymentNetwork": 6, 
+        "name": "node4.washington.vicci.org", 
+        "created": "2014-05-20T23:45:35.706Z", 
+        "ip": null, 
+        "image": 2, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 389
-    "model": "core.node", 
+    "pk": 355
+    "model": "core.sliver", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node6.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "node": 526, 
+        "instance_name": null, 
+        "updated": "2014-05-20T23:45:35.812Z", 
+        "slice": 16, 
+        "deploymentNetwork": 7, 
+        "name": "node3.princeton.vicci.org", 
+        "created": "2014-05-20T23:45:35.812Z", 
+        "ip": null, 
+        "image": 2, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 390
-    "model": "core.node", 
+    "pk": 356
+    "model": "core.sliver", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node7.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "node": 458, 
+        "instance_name": null, 
+        "updated": "2014-05-20T23:45:35.860Z", 
+        "slice": 16, 
+        "deploymentNetwork": 6, 
+        "name": "node5.washington.vicci.org", 
+        "created": "2014-05-20T23:45:35.860Z", 
+        "ip": null, 
+        "image": 2, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 391
-    "model": "core.node", 
+    "pk": 357
+    "model": "core.sliver", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node8.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "node": 527, 
+        "instance_name": null, 
+        "updated": "2014-05-20T23:45:35.887Z", 
+        "slice": 16, 
+        "deploymentNetwork": 7, 
+        "name": "node4.princeton.vicci.org", 
+        "created": "2014-05-20T23:45:35.887Z", 
+        "ip": null, 
+        "image": 2, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 392
-    "model": "core.node", 
+    "pk": 358
+    "model": "core.sliver", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node9.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "node": 459, 
+        "instance_name": null, 
+        "updated": "2014-05-20T23:45:35.926Z", 
+        "slice": 16, 
+        "deploymentNetwork": 6, 
+        "name": "node6.washington.vicci.org", 
+        "created": "2014-05-20T23:45:35.926Z", 
+        "ip": null, 
+        "image": 2, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 393
-    "model": "core.node", 
+    "pk": 359
+    "model": "core.sliver", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node10.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "node": 528, 
+        "instance_name": null, 
+        "updated": "2014-05-20T23:45:35.961Z", 
+        "slice": 16, 
+        "deploymentNetwork": 7, 
+        "name": "node5.princeton.vicci.org", 
+        "created": "2014-05-20T23:45:35.961Z", 
+        "ip": null, 
+        "image": 2, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 394
-    "model": "core.node", 
+    "pk": 360
+    "model": "core.sliver", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node11.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "node": 387, 
+        "instance_name": null, 
+        "updated": "2014-05-20T23:46:01.919Z", 
+        "slice": 16, 
+        "deploymentNetwork": 5, 
+        "name": "node4.stanford.vicci.org", 
+        "created": "2014-05-20T23:46:01.919Z", 
+        "ip": null, 
+        "image": 2, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 395
-    "model": "core.node", 
+    "pk": 361
+    "model": "core.sliver", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node12.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "node": 388, 
+        "instance_name": null, 
+        "updated": "2014-05-20T23:46:01.987Z", 
+        "slice": 16, 
+        "deploymentNetwork": 5, 
+        "name": "node5.stanford.vicci.org", 
+        "created": "2014-05-20T23:46:01.987Z", 
+        "ip": null, 
+        "image": 2, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 396
-    "model": "core.node", 
+    "pk": 362
+    "model": "core.sliver", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node13.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "node": 389, 
+        "instance_name": null, 
+        "updated": "2014-05-20T23:46:02.054Z", 
+        "slice": 16, 
+        "deploymentNetwork": 5, 
+        "name": "node6.stanford.vicci.org", 
+        "created": "2014-05-20T23:46:02.054Z", 
+        "ip": null, 
+        "image": 2, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 397
-    "model": "core.node", 
+    "pk": 363
+    "model": "core.sliver", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node14.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "node": 663, 
+        "instance_name": null, 
+        "updated": "2014-05-27T15:29:38.516Z", 
+        "slice": 4, 
+        "deploymentNetwork": 8, 
+        "name": "node70.gt.vicci.org", 
+        "created": "2014-05-27T15:29:38.516Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 16, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 398
-    "model": "core.node", 
+    "pk": 365
+    "model": "core.sliver", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node15.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "node": 661, 
+        "instance_name": null, 
+        "updated": "2014-05-27T15:30:14.655Z", 
+        "slice": 4, 
+        "deploymentNetwork": 8, 
+        "name": "node68.gt.vicci.org", 
+        "created": "2014-05-27T15:30:14.655Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 16, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 399
-    "model": "core.node", 
+    "pk": 366
+    "model": "core.sliver", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node16.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "node": 593, 
+        "instance_name": null, 
+        "updated": "2014-05-28T10:01:53.533Z", 
+        "slice": 4, 
+        "deploymentNetwork": 7, 
+        "name": "node70.princeton.vicci.org", 
+        "created": "2014-05-28T10:01:53.533Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 16, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 400
-    "model": "core.node", 
+    "pk": 368
+    "model": "core.sliver", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node17.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "node": 453, 
+        "instance_name": null, 
+        "updated": "2014-05-28T12:15:02.758Z", 
+        "slice": 4, 
+        "deploymentNetwork": 5, 
+        "name": "node70.stanford.vicci.org", 
+        "created": "2014-05-28T12:15:02.758Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 16, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 401
-    "model": "core.node", 
+    "pk": 369
+    "model": "core.sliver", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node18.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "node": 452, 
+        "instance_name": null, 
+        "updated": "2014-05-28T12:15:49.381Z", 
+        "slice": 4, 
+        "deploymentNetwork": 5, 
+        "name": "node69.stanford.vicci.org", 
+        "created": "2014-05-28T12:15:49.381Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 16, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 402
-    "model": "core.node", 
+    "pk": 370
+    "model": "core.sliver", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node19.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "node": 660, 
+        "instance_name": null, 
+        "updated": "2014-05-28T12:44:22.130Z", 
+        "slice": 4, 
+        "deploymentNetwork": 8, 
+        "name": "node67.gt.vicci.org", 
+        "created": "2014-05-28T12:44:22.130Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 16, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 403
-    "model": "core.node", 
+    "pk": 371
+    "model": "core.sliver", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node20.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "node": 523, 
+        "instance_name": null, 
+        "updated": "2014-05-28T12:51:19.616Z", 
+        "slice": 4, 
+        "deploymentNetwork": 6, 
+        "name": "node70.washington.vicci.org", 
+        "created": "2014-05-28T12:51:19.616Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 16, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 404
-    "model": "core.node", 
+    "pk": 372
+    "model": "core.sliver", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node21.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "node": 522, 
+        "instance_name": null, 
+        "updated": "2014-05-29T17:07:47.912Z", 
+        "slice": 4, 
+        "deploymentNetwork": 6, 
+        "name": "node69.washington.vicci.org", 
+        "created": "2014-05-29T17:07:47.912Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 8, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 405
-    "model": "core.node", 
+    "pk": 373
+    "model": "core.sliver", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node22.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "node": 733, 
+        "instance_name": null, 
+        "updated": "2014-06-04T00:34:59.093Z", 
+        "slice": 4, 
+        "deploymentNetwork": 9, 
+        "name": "node70.mpisws.vicci.org", 
+        "created": "2014-06-04T00:34:59.093Z", 
+        "ip": null, 
+        "image": 1, 
+        "creator": 7, 
+        "numberCores": 1, 
+        "instance_id": null, 
+        "userData": null, 
+        "enacted": null
     }
 },
 {
-    "pk": 406
-    "model": "core.node", 
+    "pk": 1
+    "model": "core.reservation", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node23.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T23:32:41.619Z", 
+        "slice": 9, 
+        "created": "2013-12-18T23:32:07.665Z", 
+        "startTime": "2013-12-20T20:31:42Z", 
+        "duration": 48, 
+        "enacted": null
     }
 },
 {
-    "pk": 407
-    "model": "core.node", 
+    "pk": 2
+    "model": "core.reservation", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node24.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T23:34:02.148Z", 
+        "slice": 8, 
+        "created": "2013-12-18T23:33:27.591Z", 
+        "startTime": "2013-12-20T20:33:23Z", 
+        "duration": 48, 
+        "enacted": null
     }
 },
 {
-    "pk": 408
-    "model": "core.node", 
+    "pk": 3
+    "model": "core.reservation", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node25.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T23:35:45.483Z", 
+        "slice": 13, 
+        "created": "2013-12-18T23:34:55.406Z", 
+        "startTime": "2013-12-20T20:34:32Z", 
+        "duration": 24, 
+        "enacted": null
     }
 },
 {
-    "pk": 409
-    "model": "core.node", 
+    "pk": 4, 
+    "model": "core.reservation", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node26.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T23:35:25.727Z", 
+        "slice": 13, 
+        "created": "2013-12-18T23:34:55.407Z", 
+        "startTime": "2013-12-23T20:34:49Z", 
+        "duration": 24, 
+        "enacted": null
     }
 },
 {
-    "pk": 410
-    "model": "core.node", 
+    "pk": 1
+    "model": "core.reservedresource", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node27.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T23:32:41.622Z", 
+        "resource": 8, 
+        "quantity": 5, 
+        "created": "2013-12-18T23:32:41.622Z", 
+        "reservationSet": 1, 
+        "sliver": 78, 
+        "enacted": null
     }
 },
 {
-    "pk": 411
-    "model": "core.node", 
+    "pk": 2
+    "model": "core.reservedresource", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node28.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T23:34:02.152Z", 
+        "resource": 8, 
+        "quantity": 5, 
+        "created": "2013-12-18T23:34:02.152Z", 
+        "reservationSet": 2, 
+        "sliver": 77, 
+        "enacted": null
     }
 },
 {
-    "pk": 412
-    "model": "core.node", 
+    "pk": 3
+    "model": "core.reservedresource", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node29.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T23:35:25.731Z", 
+        "resource": 8, 
+        "quantity": 1, 
+        "created": "2013-12-18T23:35:25.731Z", 
+        "reservationSet": 4, 
+        "sliver": 84, 
+        "enacted": null
     }
 },
 {
-    "pk": 413
-    "model": "core.node", 
+    "pk": 4, 
+    "model": "core.reservedresource", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node30.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T23:35:25.732Z", 
+        "resource": 8, 
+        "quantity": 1, 
+        "created": "2013-12-18T23:35:25.732Z", 
+        "reservationSet": 4, 
+        "sliver": 85, 
+        "enacted": null
     }
 },
 {
-    "pk": 414
-    "model": "core.node", 
+    "pk": 5
+    "model": "core.reservedresource", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node31.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T23:35:25.733Z", 
+        "resource": 8, 
+        "quantity": 1, 
+        "created": "2013-12-18T23:35:25.733Z", 
+        "reservationSet": 4, 
+        "sliver": 86, 
+        "enacted": null
     }
 },
 {
-    "pk": 415
-    "model": "core.node", 
+    "pk": 6
+    "model": "core.reservedresource", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node32.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T23:35:45.486Z", 
+        "resource": 8, 
+        "quantity": 1, 
+        "created": "2013-12-18T23:35:45.486Z", 
+        "reservationSet": 3, 
+        "sliver": 84, 
+        "enacted": null
     }
 },
 {
-    "pk": 416
-    "model": "core.node", 
+    "pk": 7
+    "model": "core.reservedresource", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node33.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T23:35:45.488Z", 
+        "resource": 8, 
+        "quantity": 1, 
+        "created": "2013-12-18T23:35:45.487Z", 
+        "reservationSet": 3, 
+        "sliver": 85, 
+        "enacted": null
     }
 },
 {
-    "pk": 417
-    "model": "core.node", 
+    "pk": 8
+    "model": "core.reservedresource", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node34.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T23:35:45.488Z", 
+        "resource": 8, 
+        "quantity": 1, 
+        "created": "2013-12-18T23:35:45.488Z", 
+        "reservationSet": 3, 
+        "sliver": 86, 
+        "enacted": null
     }
 },
 {
-    "pk": 418
-    "model": "core.node", 
+    "pk": 1
+    "model": "core.networktemplate", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node35.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "guaranteedBandwidth": 0, 
+        "description": "Connect a sliver to the public network using dedicated public IPv4 address", 
+        "created": "2013-12-09T14:15:16.899Z", 
+        "sharedNetworkName": "ext-net", 
+        "updated": "2014-05-12T19:23:35.239Z", 
+        "visibility": "public", 
+        "name": "Public dedicated IPv4", 
+        "translation": "none", 
+        "sharedNetworkId": "", 
+        "enacted": "2014-05-12T19:24:09Z"
     }
 },
 {
-    "pk": 419
-    "model": "core.node", 
+    "pk": 3
+    "model": "core.networktemplate", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node36.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "guaranteedBandwidth": 0, 
+        "description": "Connect a sliver to the public network via NAT, with port forwarding", 
+        "created": "2013-12-09T14:17:29.551Z", 
+        "sharedNetworkName": "nat-net", 
+        "updated": "2014-05-28T14:03:07.786Z", 
+        "visibility": "private", 
+        "name": "Public shared IPv4", 
+        "translation": "NAT", 
+        "sharedNetworkId": "", 
+        "enacted": "2014-05-12T19:23:54Z"
     }
 },
 {
-    "pk": 420
-    "model": "core.node", 
+    "pk": 4, 
+    "model": "core.networktemplate", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node37.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "guaranteedBandwidth": 0, 
+        "description": "A private virtual network", 
+        "created": "2013-12-09T14:18:02.336Z", 
+        "sharedNetworkName": "", 
+        "updated": "2014-05-12T19:22:24.929Z", 
+        "visibility": "private", 
+        "name": "Private", 
+        "translation": "none", 
+        "sharedNetworkId": "", 
+        "enacted": "2014-05-12T19:23:30Z"
     }
 },
 {
-    "pk": 421, 
-    "model": "core.node", 
+    "pk": 1, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node38.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "64.57.18.128/28", 
+        "updated": "2013-12-09T14:24:19.970Z", 
+        "subnet_id": "e1796711-5584-4bc1-b09b-45dff8f59f32", 
+        "name": "VINI-I2WashDC-public", 
+        "created": "2013-12-09T14:24:19.970Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [], 
+        "labels": "public-net", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "7cb4291d-f8d3-4797-83b0-8deefd85bdf5", 
+        "template": 1, 
+        "owner": 10, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 422, 
-    "model": "core.node", 
+    "pk": 2, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node39.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "64.57.18.112/28", 
+        "updated": "2013-12-09T14:31:41.605Z", 
+        "subnet_id": "1afdc262-767b-4736-9403-584265293a81", 
+        "name": "VINI-I2Seattle-public", 
+        "created": "2013-12-09T14:31:41.605Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [], 
+        "labels": "public-net", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "810b4cb8-9d8e-4eee-becc-676785a07725", 
+        "template": 1, 
+        "owner": 10, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 423, 
-    "model": "core.node", 
+    "pk": 3, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node40.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "64.57.18.96/28", 
+        "updated": "2013-12-09T14:33:10.312Z", 
+        "subnet_id": "c3582780-76f1-4979-97b0-e27f39f18daa", 
+        "name": "VINI-I2SaltLakeCity-public", 
+        "created": "2013-12-09T14:33:10.312Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [], 
+        "labels": "public-net", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "4b37f048-11de-4ddd-acaf-2fc5e8716f0e", 
+        "template": 1, 
+        "owner": 10, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 424
-    "model": "core.node", 
+    "pk": 4, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node41.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "64.57.18.80/28", 
+        "updated": "2013-12-09T14:34:55.754Z", 
+        "subnet_id": "c0d989f2-f42f-4b3e-a23f-a0063ac4f010", 
+        "name": "VINI-I2NewYork-public", 
+        "created": "2013-12-09T14:34:55.754Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [], 
+        "labels": "public-net", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "684386d7-1286-4e58-acda-8ff45deac99e", 
+        "template": 1, 
+        "owner": 10, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 425, 
-    "model": "core.node", 
+    "pk": 5, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node42.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "64.57.18.64/28", 
+        "updated": "2013-12-09T14:36:09.261Z", 
+        "subnet_id": "d37bab1f-7e01-417c-86c4-ea0d69e2f25d", 
+        "name": "VINI-I2LosAngeles-public", 
+        "created": "2013-12-09T14:36:09.261Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [], 
+        "labels": "public-net", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "fa090174-ec59-4b7a-812b-9206d911fb61", 
+        "template": 1, 
+        "owner": 10, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 426, 
-    "model": "core.node", 
+    "pk": 6, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node43.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "64.57.18.48/28", 
+        "updated": "2013-12-09T14:37:02.420Z", 
+        "subnet_id": "7caa4cfb-846a-4e4c-9984-8ead4091f816", 
+        "name": "VINI-I2KansasCity-public", 
+        "created": "2013-12-09T14:37:02.420Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [], 
+        "labels": "public-net", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "017a3914-5eaf-4bcb-8609-6d17ebcdf075", 
+        "template": 1, 
+        "owner": 10, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 427, 
-    "model": "core.node", 
+    "pk": 7, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node44.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "64.57.18.32/28", 
+        "updated": "2013-12-09T14:38:11.552Z", 
+        "subnet_id": "4438dfbd-099a-4229-bd86-cf29478a009b", 
+        "name": "VINI-I2Houston-public", 
+        "created": "2013-12-09T14:38:11.552Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [], 
+        "labels": "public-net", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "fdf0e3b1-439b-4673-b56e-d9dfe52b2bb7", 
+        "template": 1, 
+        "owner": 10, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 428, 
-    "model": "core.node", 
+    "pk": 8, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node45.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "64.57.18.32/28", 
+        "updated": "2013-12-09T14:39:51.262Z", 
+        "subnet_id": "4438dfbd-099a-4229-bd86-cf29478a009b", 
+        "name": "VINI-I2Houston-public", 
+        "created": "2013-12-09T14:39:51.262Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [], 
+        "labels": "public-net", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "fdf0e3b1-439b-4673-b56e-d9dfe52b2bb7", 
+        "template": 1, 
+        "owner": 10, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 429, 
-    "model": "core.node", 
+    "pk": 9, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node46.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "64.57.18.32/28", 
+        "updated": "2013-12-09T14:41:00.237Z", 
+        "subnet_id": "4438dfbd-099a-4229-bd86-cf29478a009b", 
+        "name": "VINI-I2Houston-public", 
+        "created": "2013-12-09T14:41:00.237Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [], 
+        "labels": "public-net", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "fdf0e3b1-439b-4673-b56e-d9dfe52b2bb7", 
+        "template": 1, 
+        "owner": 10, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 430, 
-    "model": "core.node", 
+    "pk": 10, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node47.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "64.57.18.16/28", 
+        "updated": "2013-12-09T14:42:03.158Z", 
+        "subnet_id": "332113b1-e6f4-492e-ad93-ce21512d3459", 
+        "name": "VINI-I2Chicago-public", 
+        "created": "2013-12-09T14:42:03.158Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [], 
+        "labels": "public-net", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "ecdbaf66-b659-4d59-b0b7-1bf6d232ccba", 
+        "template": 1, 
+        "owner": 10, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 431, 
-    "model": "core.node", 
+    "pk": 11, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node48.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "64.57.18.0/28", 
+        "updated": "2013-12-09T14:42:49.781Z", 
+        "subnet_id": "dafefd4f-2622-4987-9f30-94e9a977cfc3", 
+        "name": "VINI-I2Atlanta-public", 
+        "created": "2013-12-09T14:42:49.781Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [], 
+        "labels": "public-net", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "ae4d42e8-a97c-440d-9533-4bcbd62dfb00", 
+        "template": 1, 
+        "owner": 10, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 432, 
-    "model": "core.node", 
+    "pk": 12, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node49.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "", 
+        "updated": "2013-12-13T21:51:04.425Z", 
+        "subnet_id": "", 
+        "name": "Stork package distribution", 
+        "created": "2013-12-13T21:51:04.425Z", 
+        "permitAllSlices": true, 
+        "permittedSlices": [], 
+        "labels": "", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "", 
+        "template": 4, 
+        "owner": 11, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 433, 
-    "model": "core.node", 
+    "pk": 13, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node50.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "", 
+        "updated": "2013-12-13T21:53:07.783Z", 
+        "subnet_id": "", 
+        "name": "Owl Data Collection", 
+        "created": "2013-12-13T21:53:07.783Z", 
+        "permitAllSlices": true, 
+        "permittedSlices": [], 
+        "labels": "", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "", 
+        "template": 4, 
+        "owner": 12, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 434, 
-    "model": "core.node", 
+    "pk": 14, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node51.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "", 
+        "updated": "2013-12-13T21:55:51.703Z", 
+        "subnet_id": "", 
+        "name": "Hadoop Shared Filesystem Access", 
+        "created": "2013-12-13T21:55:51.703Z", 
+        "permitAllSlices": true, 
+        "permittedSlices": [], 
+        "labels": "", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "", 
+        "template": 4, 
+        "owner": 13, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 435, 
-    "model": "core.node", 
+    "pk": 15, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node52.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "", 
+        "updated": "2013-12-13T21:57:38.995Z", 
+        "subnet_id": "", 
+        "name": "test-1-public", 
+        "created": "2013-12-13T21:57:38.995Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [], 
+        "labels": "", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "", 
+        "template": 1, 
+        "owner": 14, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 436, 
-    "model": "core.node", 
+    "pk": 16, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node53.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "", 
+        "updated": "2013-12-13T22:00:40.549Z", 
+        "subnet_id": "", 
+        "name": "test-slice-2-nat", 
+        "created": "2013-12-13T22:00:40.549Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [], 
+        "labels": "", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "", 
+        "template": 3, 
+        "owner": 15, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 437, 
-    "model": "core.node", 
+    "pk": 17, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node54.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "", 
+        "updated": "2013-12-18T22:05:09.944Z", 
+        "subnet_id": "", 
+        "name": "infrastructure-private", 
+        "created": "2013-12-18T22:05:09.944Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [], 
+        "labels": "", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "", 
+        "template": 4, 
+        "owner": 10, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 438, 
-    "model": "core.node", 
+    "pk": 18, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node55.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "", 
+        "updated": "2013-12-18T22:05:50.112Z", 
+        "subnet_id": "", 
+        "name": "infrastructure-public", 
+        "created": "2013-12-18T22:05:50.112Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [], 
+        "labels": "", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "", 
+        "template": 1, 
+        "owner": 10, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 439, 
-    "model": "core.node", 
+    "pk": 19, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node56.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "", 
+        "updated": "2013-12-18T22:13:17.310Z", 
+        "subnet_id": "", 
+        "name": "dnsdemux-private", 
+        "created": "2013-12-18T22:13:17.310Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [], 
+        "labels": "", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "", 
+        "template": 4, 
+        "owner": 9, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 440, 
-    "model": "core.node", 
+    "pk": 20, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node57.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "", 
+        "updated": "2013-12-18T22:13:38.194Z", 
+        "subnet_id": "", 
+        "name": "dnsdemux-public", 
+        "created": "2013-12-18T22:13:38.194Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [], 
+        "labels": "", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "", 
+        "template": 1, 
+        "owner": 9, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 441, 
-    "model": "core.node", 
+    "pk": 21, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node58.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "", 
+        "updated": "2013-12-18T22:16:19.797Z", 
+        "subnet_id": "", 
+        "name": "DnsRedir-private", 
+        "created": "2013-12-18T22:16:19.797Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [], 
+        "labels": "", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "", 
+        "template": 4, 
+        "owner": 8, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 442, 
-    "model": "core.node", 
+    "pk": 22, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node59.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "", 
+        "updated": "2013-12-18T22:16:38.335Z", 
+        "subnet_id": "", 
+        "name": "DnsRedir-public", 
+        "created": "2013-12-18T22:16:38.335Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [], 
+        "labels": "", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "", 
+        "template": 1, 
+        "owner": 8, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 443, 
-    "model": "core.node", 
+    "pk": 23, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node60.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "", 
+        "updated": "2013-12-19T00:13:55.598Z", 
+        "subnet_id": "", 
+        "name": "HyperCache-private", 
+        "created": "2013-12-18T22:24:19.109Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [
+            6, 
+            8
+        ], 
+        "labels": "", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "", 
+        "template": 4, 
+        "owner": 4, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 444, 
-    "model": "core.node", 
+    "pk": 24, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node61.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "", 
+        "updated": "2013-12-18T22:24:38.066Z", 
+        "subnet_id": "", 
+        "name": "HyperCache-public", 
+        "created": "2013-12-18T22:24:38.066Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [], 
+        "labels": "", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "", 
+        "template": 1, 
+        "owner": 4, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 445, 
-    "model": "core.node", 
+    "pk": 25, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node62.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "", 
+        "updated": "2013-12-18T22:26:46.435Z", 
+        "subnet_id": "", 
+        "name": "Syndicate-private", 
+        "created": "2013-12-18T22:26:46.435Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [], 
+        "labels": "", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "", 
+        "template": 4, 
+        "owner": 6, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 446, 
-    "model": "core.node", 
+    "pk": 26, 
+    "model": "core.network", 
     "fields": {
-        "site": 8, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5, 
-        "name": "node63.stanford.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "router_id": "", 
+        "subnet": "", 
+        "updated": "2013-12-18T22:27:12.647Z", 
+        "subnet_id": "", 
+        "name": "Syndicate-public", 
+        "created": "2013-12-18T22:27:12.647Z", 
+        "permitAllSlices": false, 
+        "permittedSlices": [], 
+        "labels": "", 
+        "guaranteedBandwidth": 0, 
+        "network_id": "", 
+        "template": 1, 
+        "owner": 6, 
+        "ports": "", 
+        "enacted": null
     }
 },
 {
-    "pk": 447
-    "model": "core.node", 
+    "pk": 1
+    "model": "core.networkslice", 
     "fields": {
-        "site": 8
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5
-        "name": "node64.stanford.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 11
+        "updated": "2013-12-13T21:51:09.711Z", 
+        "enacted": null
+        "network": 12
+        "created": "2013-12-13T21:51:09.711Z"
     }
 },
 {
-    "pk": 448
-    "model": "core.node", 
+    "pk": 2
+    "model": "core.networkslice", 
     "fields": {
-        "site": 8
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5
-        "name": "node65.stanford.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 12
+        "updated": "2013-12-13T21:53:15.909Z", 
+        "enacted": null
+        "network": 13
+        "created": "2013-12-13T21:53:15.909Z"
     }
 },
 {
-    "pk": 449
-    "model": "core.node", 
+    "pk": 3
+    "model": "core.networkslice", 
     "fields": {
-        "site": 8
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5
-        "name": "node66.stanford.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 12
+        "updated": "2013-12-13T21:53:15.914Z", 
+        "enacted": null
+        "network": 12
+        "created": "2013-12-13T21:53:15.914Z"
     }
 },
 {
-    "pk": 450
-    "model": "core.node", 
+    "pk": 4, 
+    "model": "core.networkslice", 
     "fields": {
-        "site": 8
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5
-        "name": "node67.stanford.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 13
+        "updated": "2013-12-13T21:56:04.235Z", 
+        "enacted": null
+        "network": 14
+        "created": "2013-12-13T21:56:04.235Z"
     }
 },
 {
-    "pk": 451
-    "model": "core.node", 
+    "pk": 5
+    "model": "core.networkslice", 
     "fields": {
-        "site": 8
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5
-        "name": "node68.stanford.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 13
+        "updated": "2013-12-13T21:56:04.241Z", 
+        "enacted": null
+        "network": 12
+        "created": "2013-12-13T21:56:04.241Z"
     }
 },
 {
-    "pk": 452
-    "model": "core.node", 
+    "pk": 6
+    "model": "core.networkslice", 
     "fields": {
-        "site": 8
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5
-        "name": "node69.stanford.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 13
+        "updated": "2013-12-13T21:56:04.246Z", 
+        "enacted": null
+        "network": 13
+        "created": "2013-12-13T21:56:04.246Z"
     }
 },
 {
-    "pk": 453
-    "model": "core.node", 
+    "pk": 7
+    "model": "core.networkslice", 
     "fields": {
-        "site": 8
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 5
-        "name": "node70.stanford.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 14
+        "updated": "2013-12-13T21:57:56.826Z", 
+        "enacted": null
+        "network": 15
+        "created": "2013-12-13T21:57:56.826Z"
     }
 },
 {
-    "pk": 454
-    "model": "core.node", 
+    "pk": 8
+    "model": "core.networkslice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node1.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 14
+        "updated": "2013-12-13T21:57:56.831Z", 
+        "enacted": null
+        "network": 13
+        "created": "2013-12-13T21:57:56.831Z"
     }
 },
 {
-    "pk": 455
-    "model": "core.node", 
+    "pk": 9
+    "model": "core.networkslice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node2.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 14
+        "updated": "2013-12-13T21:57:56.836Z", 
+        "enacted": null
+        "network": 12
+        "created": "2013-12-13T21:57:56.836Z"
     }
 },
 {
-    "pk": 456
-    "model": "core.node", 
+    "pk": 10
+    "model": "core.networkslice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node3.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 15
+        "updated": "2013-12-13T22:01:14.038Z", 
+        "enacted": null
+        "network": 16
+        "created": "2013-12-13T22:01:14.038Z"
     }
 },
 {
-    "pk": 457
-    "model": "core.node", 
+    "pk": 11
+    "model": "core.networkslice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node4.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 15
+        "updated": "2013-12-13T22:01:14.043Z", 
+        "enacted": null
+        "network": 14
+        "created": "2013-12-13T22:01:14.043Z"
     }
 },
 {
-    "pk": 458
-    "model": "core.node", 
+    "pk": 12
+    "model": "core.networkslice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node5.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 10
+        "updated": "2013-12-18T22:06:00.381Z", 
+        "enacted": null
+        "network": 17
+        "created": "2013-12-18T22:06:00.381Z"
     }
 },
 {
-    "pk": 459
-    "model": "core.node", 
+    "pk": 13
+    "model": "core.networkslice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node6.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 10
+        "updated": "2013-12-18T22:06:00.386Z", 
+        "enacted": null
+        "network": 18
+        "created": "2013-12-18T22:06:00.386Z"
     }
 },
 {
-    "pk": 460
-    "model": "core.node", 
+    "pk": 14
+    "model": "core.networkslice", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node7.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 9, 
+        "updated": "2013-12-18T22:13:42.177Z", 
+        "enacted": null
+        "network": 19
+        "created": "2013-12-18T22:13:42.177Z"
     }
 },
 {
-    "pk": 461
-    "model": "core.node", 
+    "pk": 15
+    "model": "core.networkslice", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node8.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 9, 
+        "updated": "2013-12-18T22:13:42.183Z", 
+        "enacted": null
+        "network": 20
+        "created": "2013-12-18T22:13:42.183Z"
     }
 },
 {
-    "pk": 462
-    "model": "core.node", 
+    "pk": 16
+    "model": "core.networkslice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node9.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 8
+        "updated": "2013-12-18T22:16:41.007Z", 
+        "enacted": null
+        "network": 21
+        "created": "2013-12-18T22:16:41.007Z"
     }
 },
 {
-    "pk": 463
-    "model": "core.node", 
+    "pk": 17
+    "model": "core.networkslice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node10.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 8
+        "updated": "2013-12-18T22:16:41.013Z", 
+        "enacted": null
+        "network": 22
+        "created": "2013-12-18T22:16:41.013Z"
     }
 },
 {
-    "pk": 464
-    "model": "core.node", 
+    "pk": 18
+    "model": "core.networkslice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node11.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 4
+        "updated": "2013-12-18T22:24:44.997Z", 
+        "enacted": null
+        "network": 23
+        "created": "2013-12-18T22:24:44.997Z"
     }
 },
 {
-    "pk": 465
-    "model": "core.node", 
+    "pk": 19
+    "model": "core.networkslice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node12.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 4
+        "updated": "2013-12-18T22:24:45.003Z", 
+        "enacted": null
+        "network": 24
+        "created": "2013-12-18T22:24:45.003Z"
     }
 },
 {
-    "pk": 466
-    "model": "core.node", 
+    "pk": 20
+    "model": "core.networkslice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node13.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 6
+        "updated": "2013-12-18T22:27:16.953Z", 
+        "enacted": null
+        "network": 25
+        "created": "2013-12-18T22:27:16.953Z"
     }
 },
 {
-    "pk": 467
-    "model": "core.node", 
+    "pk": 21
+    "model": "core.networkslice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node14.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 6
+        "updated": "2013-12-18T22:27:16.959Z", 
+        "enacted": null
+        "network": 26
+        "created": "2013-12-18T22:27:16.959Z"
     }
 },
 {
-    "pk": 468
-    "model": "core.node", 
+    "pk": 22
+    "model": "core.networkslice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node15.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 6
+        "updated": "2013-12-19T00:14:36.949Z", 
+        "enacted": null
+        "network": 23
+        "created": "2013-12-19T00:14:36.949Z"
     }
 },
 {
-    "pk": 469
-    "model": "core.node", 
+    "pk": 23
+    "model": "core.networkslice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node16.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "slice": 8
+        "updated": "2013-12-19T00:15:11.362Z", 
+        "enacted": null
+        "network": 23
+        "created": "2013-12-19T00:15:11.362Z"
     }
 },
 {
-    "pk": 470
-    "model": "core.node", 
+    "pk": 1
+    "model": "core.networkparametertype", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node17.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "description": "End of IPv4 address allocation pool"
+        "updated": "2013-12-09T14:43:25.664Z", 
+        "enacted": null
+        "name": "allocation-pool-end", 
+        "created": "2013-12-09T14:43:25.664Z"
     }
 },
 {
-    "pk": 471
-    "model": "core.node", 
+    "pk": 2
+    "model": "core.networkparametertype", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node18.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "description": "Start of IPv4 address allocation pool"
+        "updated": "2013-12-09T14:43:45.564Z", 
+        "enacted": null
+        "name": "allocation-pool-start", 
+        "created": "2013-12-09T14:43:45.564Z"
     }
 },
 {
-    "pk": 472
-    "model": "core.node", 
+    "pk": 3
+    "model": "core.networkparametertype", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node19.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "description": "CIDR block for network"
+        "updated": "2013-12-09T14:44:05.513Z", 
+        "enacted": null
+        "name": "cidr", 
+        "created": "2013-12-09T14:44:05.513Z"
     }
 },
 {
-    "pk": 473
-    "model": "core.node", 
+    "pk": 14
+    "model": "core.account", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node20.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:00.470Z", 
+        "enacted": null, 
+        "site": 10, 
+        "created": "2013-12-18T21:29:00.470Z"
     }
 },
 {
-    "pk": 474
-    "model": "core.node", 
+    "pk": 15
+    "model": "core.account", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node21.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:00.495Z", 
+        "enacted": null, 
+        "site": 22, 
+        "created": "2013-12-18T21:29:00.495Z"
     }
 },
 {
-    "pk": 475
-    "model": "core.node", 
+    "pk": 16
+    "model": "core.account", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node22.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:00.502Z", 
+        "enacted": null, 
+        "site": 24, 
+        "created": "2013-12-18T21:29:00.502Z"
     }
 },
 {
-    "pk": 476
-    "model": "core.node", 
+    "pk": 63
+    "model": "core.invoice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node23.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "date": "2013-11-18T21:00:00Z"
+        "updated": "2013-12-18T21:29:16.421Z", 
+        "enacted": null
+        "account": 14
+        "created": "2013-12-18T21:29:16.421Z"
     }
 },
 {
-    "pk": 477
-    "model": "core.node", 
+    "pk": 64
+    "model": "core.invoice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node24.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "date": "2013-11-24T21:00:00Z"
+        "updated": "2013-12-18T21:29:16.434Z", 
+        "enacted": null
+        "account": 14
+        "created": "2013-12-18T21:29:16.434Z"
     }
 },
 {
-    "pk": 478
-    "model": "core.node", 
+    "pk": 65
+    "model": "core.invoice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node25.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "date": "2013-12-01T21:00:00Z"
+        "updated": "2013-12-18T21:29:17.229Z", 
+        "enacted": null
+        "account": 14
+        "created": "2013-12-18T21:29:17.229Z"
     }
 },
 {
-    "pk": 479
-    "model": "core.node", 
+    "pk": 66
+    "model": "core.invoice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node26.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "date": "2013-12-08T21:00:00Z"
+        "updated": "2013-12-18T21:29:18.213Z", 
+        "enacted": null
+        "account": 14
+        "created": "2013-12-18T21:29:18.212Z"
     }
 },
 {
-    "pk": 480
-    "model": "core.node", 
+    "pk": 67
+    "model": "core.invoice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node27.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "date": "2013-12-15T21:00:00Z"
+        "updated": "2013-12-18T21:29:19.091Z", 
+        "enacted": null
+        "account": 14
+        "created": "2013-12-18T21:29:19.091Z"
     }
 },
 {
-    "pk": 481
-    "model": "core.node", 
+    "pk": 68
+    "model": "core.invoice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node28.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "date": "2013-11-18T21:00:00Z"
+        "updated": "2013-12-18T21:29:20.175Z", 
+        "enacted": null
+        "account": 15
+        "created": "2013-12-18T21:29:20.175Z"
     }
 },
 {
-    "pk": 482
-    "model": "core.node", 
+    "pk": 69
+    "model": "core.invoice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node29.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "date": "2013-11-24T21:00:00Z"
+        "updated": "2013-12-18T21:29:20.193Z", 
+        "enacted": null
+        "account": 15
+        "created": "2013-12-18T21:29:20.193Z"
     }
 },
 {
-    "pk": 483
-    "model": "core.node", 
+    "pk": 70
+    "model": "core.invoice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node30.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "date": "2013-12-01T21:00:00Z"
+        "updated": "2013-12-18T21:29:22.239Z", 
+        "enacted": null
+        "account": 15
+        "created": "2013-12-18T21:29:22.239Z"
     }
 },
 {
-    "pk": 484
-    "model": "core.node", 
+    "pk": 71
+    "model": "core.invoice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node31.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "date": "2013-12-08T21:00:00Z"
+        "updated": "2013-12-18T21:29:24.550Z", 
+        "enacted": null
+        "account": 15
+        "created": "2013-12-18T21:29:24.550Z"
     }
 },
 {
-    "pk": 485
-    "model": "core.node", 
+    "pk": 72
+    "model": "core.invoice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node32.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "date": "2013-12-15T21:00:00Z"
+        "updated": "2013-12-18T21:29:26.820Z", 
+        "enacted": null
+        "account": 15
+        "created": "2013-12-18T21:29:26.820Z"
     }
 },
 {
-    "pk": 486
-    "model": "core.node", 
-    "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node33.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+    "pk": 73
+    "model": "core.invoice", 
+    "fields": {
+        "date": "2013-11-18T21:00:00Z"
+        "updated": "2013-12-18T21:29:29.206Z", 
+        "enacted": null
+        "account": 16
+        "created": "2013-12-18T21:29:29.206Z"
     }
 },
 {
-    "pk": 487
-    "model": "core.node", 
+    "pk": 74
+    "model": "core.invoice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node34.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "date": "2013-11-24T21:00:00Z"
+        "updated": "2013-12-18T21:29:29.222Z", 
+        "enacted": null
+        "account": 16
+        "created": "2013-12-18T21:29:29.222Z"
     }
 },
 {
-    "pk": 488
-    "model": "core.node", 
+    "pk": 75
+    "model": "core.invoice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node35.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "date": "2013-12-01T21:00:00Z"
+        "updated": "2013-12-18T21:29:29.538Z", 
+        "enacted": null
+        "account": 16
+        "created": "2013-12-18T21:29:29.538Z"
     }
 },
 {
-    "pk": 489
-    "model": "core.node", 
+    "pk": 76
+    "model": "core.invoice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node36.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "date": "2013-12-08T21:00:00Z"
+        "updated": "2013-12-18T21:29:29.894Z", 
+        "enacted": null
+        "account": 16
+        "created": "2013-12-18T21:29:29.894Z"
     }
 },
 {
-    "pk": 490
-    "model": "core.node", 
+    "pk": 77
+    "model": "core.invoice", 
     "fields": {
-        "site": 9
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6
-        "name": "node37.washington.vicci.org"
-        "created": "2013-04-03T23:14:11.072Z"
+        "date": "2013-12-15T21:00:00Z"
+        "updated": "2013-12-18T21:29:30.251Z", 
+        "enacted": null
+        "account": 16
+        "created": "2013-12-18T21:29:30.251Z"
     }
 },
 {
-    "pk": 491
-    "model": "core.node", 
+    "pk": 104
+    "model": "core.usableobject", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node38.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:00.529Z", 
+        "enacted": null, 
+        "name": "node17.washington.vicci.org", 
+        "created": "2013-12-18T21:29:00.529Z"
     }
 },
 {
-    "pk": 492
-    "model": "core.node", 
+    "pk": 105
+    "model": "core.usableobject", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node39.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:01.289Z", 
+        "enacted": null, 
+        "name": "node16.washington.vicci.org", 
+        "created": "2013-12-18T21:29:01.289Z"
     }
 },
 {
-    "pk": 493
-    "model": "core.node", 
+    "pk": 106
+    "model": "core.usableobject", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node40.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:02.189Z", 
+        "enacted": null, 
+        "name": "node15.washington.vicci.org", 
+        "created": "2013-12-18T21:29:02.189Z"
     }
 },
 {
-    "pk": 494
-    "model": "core.node", 
+    "pk": 107
+    "model": "core.usableobject", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node41.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:03.178Z", 
+        "enacted": null, 
+        "name": "node14.washington.vicci.org", 
+        "created": "2013-12-18T21:29:03.178Z"
     }
 },
 {
-    "pk": 495
-    "model": "core.node", 
+    "pk": 108
+    "model": "core.usableobject", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node42.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:03.942Z", 
+        "enacted": null, 
+        "name": "node70.princeton.vicci.org", 
+        "created": "2013-12-18T21:29:03.942Z"
     }
 },
 {
-    "pk": 496
-    "model": "core.node", 
+    "pk": 109
+    "model": "core.usableobject", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node43.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:04.702Z", 
+        "enacted": null, 
+        "name": "node69.princeton.vicci.org", 
+        "created": "2013-12-18T21:29:04.702Z"
     }
 },
 {
-    "pk": 497
-    "model": "core.node", 
+    "pk": 110
+    "model": "core.usableobject", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node44.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:05.547Z", 
+        "enacted": null, 
+        "name": "node68.princeton.vicci.org", 
+        "created": "2013-12-18T21:29:05.547Z"
     }
 },
 {
-    "pk": 498
-    "model": "core.node", 
+    "pk": 111
+    "model": "core.usableobject", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node45.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:06.336Z", 
+        "enacted": null, 
+        "name": "node67.princeton.vicci.org", 
+        "created": "2013-12-18T21:29:06.336Z"
     }
 },
 {
-    "pk": 499
-    "model": "core.node", 
+    "pk": 112
+    "model": "core.usableobject", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node46.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:07.101Z", 
+        "enacted": null, 
+        "name": "node30.princeton.vicci.org", 
+        "created": "2013-12-18T21:29:07.101Z"
     }
 },
 {
-    "pk": 500
-    "model": "core.node", 
+    "pk": 113
+    "model": "core.usableobject", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node47.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:09.453Z", 
+        "enacted": null, 
+        "name": "node55.stanford.vicci.org", 
+        "created": "2013-12-18T21:29:09.453Z"
     }
 },
 {
-    "pk": 501
-    "model": "core.node", 
+    "pk": 114
+    "model": "core.usableobject", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node48.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:10.216Z", 
+        "enacted": null, 
+        "name": "node12.princeton.vicci.org", 
+        "created": "2013-12-18T21:29:10.216Z"
     }
 },
 {
-    "pk": 502
-    "model": "core.node", 
+    "pk": 115
+    "model": "core.usableobject", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node49.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:10.975Z", 
+        "enacted": null, 
+        "name": "node20.washington.vicci.org", 
+        "created": "2013-12-18T21:29:10.975Z"
     }
 },
 {
-    "pk": 503
-    "model": "core.node", 
+    "pk": 116
+    "model": "core.usableobject", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node50.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:11.729Z", 
+        "enacted": null, 
+        "name": "node1.stanford.vicci.org", 
+        "created": "2013-12-18T21:29:11.729Z"
     }
 },
 {
-    "pk": 504
-    "model": "core.node", 
+    "pk": 117
+    "model": "core.usableobject", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node51.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:12.494Z", 
+        "enacted": null, 
+        "name": "node33.princeton.vicci.org", 
+        "created": "2013-12-18T21:29:12.494Z"
     }
 },
 {
-    "pk": 505
-    "model": "core.node", 
+    "pk": 118
+    "model": "core.usableobject", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node52.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:13.329Z", 
+        "enacted": null, 
+        "name": "node15.princeton.vicci.org", 
+        "created": "2013-12-18T21:29:13.329Z"
     }
 },
 {
-    "pk": 506
-    "model": "core.node", 
+    "pk": 119
+    "model": "core.usableobject", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node53.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:14.083Z", 
+        "enacted": null, 
+        "name": "node23.princeton.vicci.org", 
+        "created": "2013-12-18T21:29:14.083Z"
     }
 },
 {
-    "pk": 507
-    "model": "core.node", 
+    "pk": 120
+    "model": "core.usableobject", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node54.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:14.847Z", 
+        "enacted": null, 
+        "name": "node10.princeton.vicci.org", 
+        "created": "2013-12-18T21:29:14.847Z"
     }
 },
 {
-    "pk": 508
-    "model": "core.node", 
+    "pk": 121
+    "model": "core.usableobject", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node55.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:15.609Z", 
+        "enacted": null, 
+        "name": "node13.princeton.vicci.org", 
+        "created": "2013-12-18T21:29:15.609Z"
     }
 },
 {
-    "pk": 509
-    "model": "core.node", 
+    "pk": 37
+    "model": "core.payment", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node56.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:19.973Z", 
+        "created": "2013-12-18T21:29:19.973Z", 
+        "account": 14, 
+        "amount": 0.2968, 
+        "date": "2013-12-03T02:00:00Z", 
+        "enacted": null
     }
 },
 {
-    "pk": 510
-    "model": "core.node", 
+    "pk": 38
+    "model": "core.payment", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node57.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:19.979Z", 
+        "created": "2013-12-18T21:29:19.979Z", 
+        "account": 14, 
+        "amount": 21.14, 
+        "date": "2013-12-09T02:00:00Z", 
+        "enacted": null
     }
 },
 {
-    "pk": 511
-    "model": "core.node", 
+    "pk": 39
+    "model": "core.payment", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node58.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:19.987Z", 
+        "created": "2013-12-18T21:29:19.987Z", 
+        "account": 14, 
+        "amount": 24.3768, 
+        "date": "2013-12-16T02:00:00Z", 
+        "enacted": null
     }
 },
 {
-    "pk": 512
-    "model": "core.node", 
+    "pk": 40
+    "model": "core.payment", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node59.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:29.154Z", 
+        "created": "2013-12-18T21:29:29.153Z", 
+        "account": 15, 
+        "amount": 0.3024, 
+        "date": "2013-12-03T02:00:00Z", 
+        "enacted": null
     }
 },
 {
-    "pk": 513
-    "model": "core.node", 
+    "pk": 41
+    "model": "core.payment", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node60.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:29.166Z", 
+        "created": "2013-12-18T21:29:29.166Z", 
+        "account": 15, 
+        "amount": 86.5536, 
+        "date": "2013-12-09T02:00:00Z", 
+        "enacted": null
     }
 },
 {
-    "pk": 514
-    "model": "core.node", 
+    "pk": 42
+    "model": "core.payment", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node61.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:29.174Z", 
+        "created": "2013-12-18T21:29:29.174Z", 
+        "account": 15, 
+        "amount": 96.404, 
+        "date": "2013-12-16T02:00:00Z", 
+        "enacted": null
     }
 },
 {
-    "pk": 515
-    "model": "core.node", 
+    "pk": 43
+    "model": "core.payment", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node62.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:30.620Z", 
+        "created": "2013-12-18T21:29:30.620Z", 
+        "account": 16, 
+        "amount": 0.1848, 
+        "date": "2013-12-03T02:00:00Z", 
+        "enacted": null
     }
 },
 {
-    "pk": 516
-    "model": "core.node", 
+    "pk": 44
+    "model": "core.payment", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node63.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:30.626Z", 
+        "created": "2013-12-18T21:29:30.626Z", 
+        "account": 16, 
+        "amount": 8.5904, 
+        "date": "2013-12-09T02:00:00Z", 
+        "enacted": null
     }
 },
 {
-    "pk": 517
-    "model": "core.node", 
+    "pk": 45
+    "model": "core.payment", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node64.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:30.634Z", 
+        "created": "2013-12-18T21:29:30.634Z", 
+        "account": 16, 
+        "amount": 10.0016, 
+        "date": "2013-12-16T02:00:00Z", 
+        "enacted": null
+    }
+},
+{
+    "pk": 59761, 
+    "model": "core.charge", 
+    "fields": {
+        "updated": "2013-12-18T21:29:20.186Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.540Z", 
+        "amount": 0.3024, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.32, 
+        "invoice": 68, 
+        "date": "2013-11-18T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 518
-    "model": "core.node", 
+    "pk": 59762
+    "model": "core.charge", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node65.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:20.302Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.550Z", 
+        "amount": 0.1176, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.68, 
+        "invoice": 69, 
+        "date": "2013-11-19T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 519
-    "model": "core.node", 
+    "pk": 59763
+    "model": "core.charge", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node66.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:20.409Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.558Z", 
+        "amount": 0.2016, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.88, 
+        "invoice": 69, 
+        "date": "2013-11-19T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 520
-    "model": "core.node", 
+    "pk": 59764
+    "model": "core.charge", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node67.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:20.517Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.567Z", 
+        "amount": 0.3024, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.32, 
+        "invoice": 69, 
+        "date": "2013-11-19T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 521
-    "model": "core.node", 
+    "pk": 59765
+    "model": "core.charge", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node68.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:20.625Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.575Z", 
+        "amount": 0.1848, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.64, 
+        "invoice": 69, 
+        "date": "2013-11-20T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 522
-    "model": "core.node", 
+    "pk": 59766
+    "model": "core.charge", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node69.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:20.732Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.583Z", 
+        "amount": 0.3192, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.56, 
+        "invoice": 69, 
+        "date": "2013-11-20T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 523
-    "model": "core.node", 
+    "pk": 59767
+    "model": "core.charge", 
     "fields": {
-        "site": 9, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 6, 
-        "name": "node70.washington.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:20.840Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.591Z", 
+        "amount": 0.1512, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.16, 
+        "invoice": 69, 
+        "date": "2013-11-20T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 524
-    "model": "core.node", 
+    "pk": 59768
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node1.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:20.948Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.600Z", 
+        "amount": 0.2744, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.92, 
+        "invoice": 69, 
+        "date": "2013-11-21T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 525
-    "model": "core.node", 
+    "pk": 59769
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node2.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.055Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.608Z", 
+        "amount": 0.3248, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.64, 
+        "invoice": 69, 
+        "date": "2013-11-21T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 526
-    "model": "core.node", 
+    "pk": 59770
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node3.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.163Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.616Z", 
+        "amount": 0.14, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.0, 
+        "invoice": 69, 
+        "date": "2013-11-21T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 527
-    "model": "core.node", 
+    "pk": 59771
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node4.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.271Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.625Z", 
+        "amount": 0.1288, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.84, 
+        "invoice": 69, 
+        "date": "2013-11-22T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 528
-    "model": "core.node", 
+    "pk": 59772
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node5.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.378Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.633Z", 
+        "amount": 0.336, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.8, 
+        "invoice": 69, 
+        "date": "2013-11-22T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 529
-    "model": "core.node", 
+    "pk": 59773
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node6.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.486Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.641Z", 
+        "amount": 0.3192, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.56, 
+        "invoice": 69, 
+        "date": "2013-11-22T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 530
-    "model": "core.node", 
+    "pk": 59774
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node7.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.594Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.650Z", 
+        "amount": 0.2184, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.12, 
+        "invoice": 69, 
+        "date": "2013-11-23T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 531
-    "model": "core.node", 
+    "pk": 59775
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node8.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.702Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.658Z", 
+        "amount": 0.252, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.6, 
+        "invoice": 69, 
+        "date": "2013-11-23T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 532
-    "model": "core.node", 
+    "pk": 59776
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node9.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.809Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.666Z", 
+        "amount": 0.1232, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.76, 
+        "invoice": 69, 
+        "date": "2013-11-23T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 533
-    "model": "core.node", 
+    "pk": 59777
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node10.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.917Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.674Z", 
+        "amount": 0.1624, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.32, 
+        "invoice": 69, 
+        "date": "2013-11-24T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 534
-    "model": "core.node", 
+    "pk": 59778
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node11.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.025Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.683Z", 
+        "amount": 0.1904, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.72, 
+        "invoice": 69, 
+        "date": "2013-11-24T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 535
-    "model": "core.node", 
+    "pk": 59779
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node12.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.132Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.691Z", 
+        "amount": 0.1624, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.32, 
+        "invoice": 69, 
+        "date": "2013-11-24T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 536
-    "model": "core.node", 
+    "pk": 59780
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node13.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.248Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.699Z", 
+        "amount": 0.2912, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.16, 
+        "invoice": 70, 
+        "date": "2013-11-25T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 537
-    "model": "core.node", 
+    "pk": 59781
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node14.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.356Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.708Z", 
+        "amount": 0.2072, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.96, 
+        "invoice": 70, 
+        "date": "2013-11-25T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 538
-    "model": "core.node", 
+    "pk": 59782
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node15.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.464Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.716Z", 
+        "amount": 0.1456, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.08, 
+        "invoice": 70, 
+        "date": "2013-11-25T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 539
-    "model": "core.node", 
+    "pk": 59783
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node16.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.613Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.724Z", 
+        "amount": 0.2408, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.44, 
+        "invoice": 70, 
+        "date": "2013-11-26T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 540
-    "model": "core.node", 
+    "pk": 59784
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node17.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.721Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.732Z", 
+        "amount": 0.3024, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.32, 
+        "invoice": 70, 
+        "date": "2013-11-26T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 541
-    "model": "core.node", 
+    "pk": 59785
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node18.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.828Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.741Z", 
+        "amount": 0.1792, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.56, 
+        "invoice": 70, 
+        "date": "2013-11-26T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 542
-    "model": "core.node", 
+    "pk": 59786
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node19.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.936Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.749Z", 
+        "amount": 0.1736, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.48, 
+        "invoice": 70, 
+        "date": "2013-11-27T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 543
-    "model": "core.node", 
+    "pk": 59787
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node20.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.043Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.757Z", 
+        "amount": 0.1512, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.16, 
+        "invoice": 70, 
+        "date": "2013-11-27T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 544
-    "model": "core.node", 
+    "pk": 59788
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node21.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.151Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.766Z", 
+        "amount": 0.1288, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.84, 
+        "invoice": 70, 
+        "date": "2013-11-27T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 545
-    "model": "core.node", 
+    "pk": 59789
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node22.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.259Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.774Z", 
+        "amount": 0.2408, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.44, 
+        "invoice": 70, 
+        "date": "2013-11-28T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 546
-    "model": "core.node", 
+    "pk": 59790
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node23.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.367Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.782Z", 
+        "amount": 0.1344, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.92, 
+        "invoice": 70, 
+        "date": "2013-11-28T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 547
-    "model": "core.node", 
+    "pk": 59791
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node24.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.474Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.790Z", 
+        "amount": 0.2184, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.12, 
+        "invoice": 70, 
+        "date": "2013-11-28T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 548
-    "model": "core.node", 
+    "pk": 59792
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node25.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.582Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.799Z", 
+        "amount": 0.308, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.4, 
+        "invoice": 70, 
+        "date": "2013-11-29T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 549
-    "model": "core.node", 
+    "pk": 59793
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node26.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.690Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.807Z", 
+        "amount": 0.2968, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.24, 
+        "invoice": 70, 
+        "date": "2013-11-29T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 550
-    "model": "core.node", 
+    "pk": 59794
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node27.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.797Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.815Z", 
+        "amount": 0.2352, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.36, 
+        "invoice": 70, 
+        "date": "2013-11-29T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 551
-    "model": "core.node", 
+    "pk": 59795
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node28.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.905Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.823Z", 
+        "amount": 0.1904, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.72, 
+        "invoice": 70, 
+        "date": "2013-11-30T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 552
-    "model": "core.node", 
+    "pk": 59796
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node29.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.013Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.832Z", 
+        "amount": 0.336, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.8, 
+        "invoice": 70, 
+        "date": "2013-11-30T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 553
-    "model": "core.node", 
+    "pk": 59797
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node30.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.120Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.840Z", 
+        "amount": 0.1176, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.68, 
+        "invoice": 70, 
+        "date": "2013-11-30T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 554
-    "model": "core.node", 
+    "pk": 59798
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node31.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.228Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.848Z", 
+        "amount": 0.2968, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.24, 
+        "invoice": 70, 
+        "date": "2013-12-01T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 555
-    "model": "core.node", 
+    "pk": 59799
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node32.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.336Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.856Z", 
+        "amount": 0.1288, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.84, 
+        "invoice": 70, 
+        "date": "2013-12-01T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 556
-    "model": "core.node", 
+    "pk": 59800
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node33.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.443Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.865Z", 
+        "amount": 0.2016, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.88, 
+        "invoice": 70, 
+        "date": "2013-12-01T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 557
-    "model": "core.node", 
+    "pk": 59801
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node34.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.559Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.873Z", 
+        "amount": 0.1288, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.84, 
+        "invoice": 71, 
+        "date": "2013-12-02T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 558
-    "model": "core.node", 
+    "pk": 59802
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node35.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.667Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.881Z", 
+        "amount": 0.2744, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.92, 
+        "invoice": 71, 
+        "date": "2013-12-02T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 559
-    "model": "core.node", 
+    "pk": 59803
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node36.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.775Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.890Z", 
+        "amount": 0.2912, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.16, 
+        "invoice": 71, 
+        "date": "2013-12-02T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 560
-    "model": "core.node", 
+    "pk": 59804
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node37.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.883Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.898Z", 
+        "amount": 0.168, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.4, 
+        "invoice": 71, 
+        "date": "2013-12-03T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 561
-    "model": "core.node", 
+    "pk": 59805
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node38.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.990Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.906Z", 
+        "amount": 0.3304, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.72, 
+        "invoice": 71, 
+        "date": "2013-12-03T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 562
-    "model": "core.node", 
+    "pk": 59806
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node39.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.098Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.915Z", 
+        "amount": 0.3136, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.48, 
+        "invoice": 71, 
+        "date": "2013-12-03T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 563
-    "model": "core.node", 
+    "pk": 59807
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node40.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.206Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.923Z", 
+        "amount": 0.168, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.4, 
+        "invoice": 71, 
+        "date": "2013-12-04T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 564
-    "model": "core.node", 
+    "pk": 59808
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node41.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.313Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.931Z", 
+        "amount": 0.1176, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.68, 
+        "invoice": 71, 
+        "date": "2013-12-04T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 565
-    "model": "core.node", 
+    "pk": 59809
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node42.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.421Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.939Z", 
+        "amount": 0.2576, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.68, 
+        "invoice": 71, 
+        "date": "2013-12-04T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 566
-    "model": "core.node", 
+    "pk": 59810
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node43.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.529Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.948Z", 
+        "amount": 0.14, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.0, 
+        "invoice": 71, 
+        "date": "2013-12-05T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 567
-    "model": "core.node", 
+    "pk": 59811
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node44.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.637Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.956Z", 
+        "amount": 0.2576, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.68, 
+        "invoice": 71, 
+        "date": "2013-12-05T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 568
-    "model": "core.node", 
+    "pk": 59812
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node45.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.744Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.964Z", 
+        "amount": 0.2128, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.04, 
+        "invoice": 71, 
+        "date": "2013-12-05T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 569
-    "model": "core.node", 
+    "pk": 59813
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node46.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.852Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.973Z", 
+        "amount": 0.2576, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.68, 
+        "invoice": 71, 
+        "date": "2013-12-06T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 570
-    "model": "core.node", 
+    "pk": 59814
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node47.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.959Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.981Z", 
+        "amount": 0.2744, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.92, 
+        "invoice": 71, 
+        "date": "2013-12-06T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 571
-    "model": "core.node", 
+    "pk": 59815
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node48.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:26.067Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.989Z", 
+        "amount": 0.2744, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.92, 
+        "invoice": 71, 
+        "date": "2013-12-06T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 572
-    "model": "core.node", 
+    "pk": 59816
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node49.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:26.175Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:00.997Z", 
+        "amount": 0.2912, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.16, 
+        "invoice": 71, 
+        "date": "2013-12-07T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 573
-    "model": "core.node", 
+    "pk": 59817
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node50.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:26.283Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.006Z", 
+        "amount": 0.14, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.0, 
+        "invoice": 71, 
+        "date": "2013-12-07T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 574
-    "model": "core.node", 
+    "pk": 59818
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node51.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:26.390Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.014Z", 
+        "amount": 0.1176, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.68, 
+        "invoice": 71, 
+        "date": "2013-12-07T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 575
-    "model": "core.node", 
+    "pk": 59819
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node52.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:26.498Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.022Z", 
+        "amount": 0.2744, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.92, 
+        "invoice": 71, 
+        "date": "2013-12-08T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 576
-    "model": "core.node", 
+    "pk": 59820
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node53.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:26.606Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.031Z", 
+        "amount": 0.3304, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.72, 
+        "invoice": 71, 
+        "date": "2013-12-08T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 577
-    "model": "core.node", 
+    "pk": 59821
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node54.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:26.713Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.039Z", 
+        "amount": 0.336, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.8, 
+        "invoice": 71, 
+        "date": "2013-12-08T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 578
-    "model": "core.node", 
+    "pk": 59822
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node55.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:26.829Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.047Z", 
+        "amount": 0.2912, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.16, 
+        "invoice": 72, 
+        "date": "2013-12-09T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 579
-    "model": "core.node", 
+    "pk": 59823
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node56.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:26.937Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.055Z", 
+        "amount": 0.2128, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.04, 
+        "invoice": 72, 
+        "date": "2013-12-09T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 580
-    "model": "core.node", 
+    "pk": 59824
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node57.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:27.045Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.064Z", 
+        "amount": 0.1848, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.64, 
+        "invoice": 72, 
+        "date": "2013-12-09T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 581
-    "model": "core.node", 
+    "pk": 59825
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node58.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:27.152Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.072Z", 
+        "amount": 0.2632, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.76, 
+        "invoice": 72, 
+        "date": "2013-12-10T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 582
-    "model": "core.node", 
+    "pk": 59826
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node59.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:27.260Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.080Z", 
+        "amount": 0.1288, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.84, 
+        "invoice": 72, 
+        "date": "2013-12-10T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 583
-    "model": "core.node", 
+    "pk": 59827
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node60.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:27.368Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.088Z", 
+        "amount": 0.2744, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.92, 
+        "invoice": 72, 
+        "date": "2013-12-10T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 584
-    "model": "core.node", 
+    "pk": 59828
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node61.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:27.475Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.097Z", 
+        "amount": 0.1848, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.64, 
+        "invoice": 72, 
+        "date": "2013-12-11T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 585
-    "model": "core.node", 
+    "pk": 59829
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node62.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:27.641Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.105Z", 
+        "amount": 0.1456, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.08, 
+        "invoice": 72, 
+        "date": "2013-12-11T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 586
-    "model": "core.node", 
+    "pk": 59830
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node63.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:27.749Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.113Z", 
+        "amount": 0.2296, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.28, 
+        "invoice": 72, 
+        "date": "2013-12-11T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 587
-    "model": "core.node", 
+    "pk": 59831
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node64.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:27.856Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.122Z", 
+        "amount": 0.3024, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.32, 
+        "invoice": 72, 
+        "date": "2013-12-12T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 588
-    "model": "core.node", 
+    "pk": 59832
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node65.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:27.964Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.130Z", 
+        "amount": 0.2912, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.16, 
+        "invoice": 72, 
+        "date": "2013-12-12T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 589
-    "model": "core.node", 
+    "pk": 59833
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node66.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:28.072Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.138Z", 
+        "amount": 0.2856, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.08, 
+        "invoice": 72, 
+        "date": "2013-12-12T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 590
-    "model": "core.node", 
+    "pk": 59834
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node67.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:28.180Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.147Z", 
+        "amount": 0.308, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.4, 
+        "invoice": 72, 
+        "date": "2013-12-13T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 591
-    "model": "core.node", 
+    "pk": 59835
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node68.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:28.287Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.155Z", 
+        "amount": 0.1848, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.64, 
+        "invoice": 72, 
+        "date": "2013-12-13T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 592
-    "model": "core.node", 
+    "pk": 59836
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node69.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:28.395Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.163Z", 
+        "amount": 0.2688, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.84, 
+        "invoice": 72, 
+        "date": "2013-12-13T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 593
-    "model": "core.node", 
+    "pk": 59837
+    "model": "core.charge", 
     "fields": {
-        "site": 10, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 7, 
-        "name": "node70.princeton.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:28.503Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.171Z", 
+        "amount": 0.1344, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.92, 
+        "invoice": 72, 
+        "date": "2013-12-14T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 594
-    "model": "core.node", 
+    "pk": 59838
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node1.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:28.610Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.180Z", 
+        "amount": 0.2856, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.08, 
+        "invoice": 72, 
+        "date": "2013-12-14T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 595
-    "model": "core.node", 
+    "pk": 59839
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node2.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:28.718Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.188Z", 
+        "amount": 0.3024, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.32, 
+        "invoice": 72, 
+        "date": "2013-12-14T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 596
-    "model": "core.node", 
+    "pk": 59840
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node3.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:28.826Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.196Z", 
+        "amount": 0.308, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.4, 
+        "invoice": 72, 
+        "date": "2013-12-15T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 597
-    "model": "core.node", 
+    "pk": 59841
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node4.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:28.933Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.205Z", 
+        "amount": 0.308, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.4, 
+        "invoice": 72, 
+        "date": "2013-12-15T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 598, 
-    "model": "core.node", 
+    "pk": 59842
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node5.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:29.041Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.213Z", 
+        "amount": 0.2576, 
+        "object": 104, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.68, 
+        "invoice": 72, 
+        "date": "2013-12-15T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 599
-    "model": "core.node", 
+    "pk": 59843
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node6.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:01.221Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.221Z", 
+        "amount": 0.196, 
+        "object": 104, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 2.8, 
+        "invoice": null, 
+        "date": "2013-12-16T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 600
-    "model": "core.node", 
+    "pk": 59844
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node7.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:01.230Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.229Z", 
+        "amount": 0.168, 
+        "object": 104, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 2.4, 
+        "invoice": null, 
+        "date": "2013-12-16T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 601
-    "model": "core.node", 
+    "pk": 59845
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node8.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:01.238Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.238Z", 
+        "amount": 0.2576, 
+        "object": 104, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 3.68, 
+        "invoice": null, 
+        "date": "2013-12-16T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 602
-    "model": "core.node", 
+    "pk": 59846
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node9.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:01.246Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.246Z", 
+        "amount": 0.168, 
+        "object": 104, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 2.4, 
+        "invoice": null, 
+        "date": "2013-12-17T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 603
-    "model": "core.node", 
+    "pk": 59847
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node10.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:01.254Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.254Z", 
+        "amount": 0.3248, 
+        "object": 104, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 4.64, 
+        "invoice": null, 
+        "date": "2013-12-17T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 604
-    "model": "core.node", 
+    "pk": 59848
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node11.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:01.263Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.263Z", 
+        "amount": 0.28, 
+        "object": 104, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 4.0, 
+        "invoice": null, 
+        "date": "2013-12-17T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 605
-    "model": "core.node", 
+    "pk": 59849
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node12.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:01.271Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.271Z", 
+        "amount": 0.28, 
+        "object": 104, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 4.0, 
+        "invoice": null, 
+        "date": "2013-12-18T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 606
-    "model": "core.node", 
+    "pk": 59850
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node13.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:01.279Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.279Z", 
+        "amount": 0.3304, 
+        "object": 104, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 4.72, 
+        "invoice": null, 
+        "date": "2013-12-18T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 607
-    "model": "core.node", 
+    "pk": 59851
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node14.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:20.202Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.294Z", 
+        "amount": 0.1456, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.08, 
+        "invoice": 69, 
+        "date": "2013-11-18T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 608
-    "model": "core.node", 
+    "pk": 59852
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node15.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:20.310Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.304Z", 
+        "amount": 0.2352, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.36, 
+        "invoice": 69, 
+        "date": "2013-11-19T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 609
-    "model": "core.node", 
+    "pk": 59853
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node16.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:20.417Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.312Z", 
+        "amount": 0.3192, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.56, 
+        "invoice": 69, 
+        "date": "2013-11-19T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 610
-    "model": "core.node", 
+    "pk": 59854
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node17.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:20.525Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.320Z", 
+        "amount": 0.2464, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.52, 
+        "invoice": 69, 
+        "date": "2013-11-19T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 611
-    "model": "core.node", 
+    "pk": 59855
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node18.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:20.633Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.329Z", 
+        "amount": 0.2184, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.12, 
+        "invoice": 69, 
+        "date": "2013-11-20T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 612
-    "model": "core.node", 
+    "pk": 59856
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node19.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:20.741Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.337Z", 
+        "amount": 0.168, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.4, 
+        "invoice": 69, 
+        "date": "2013-11-20T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 613
-    "model": "core.node", 
+    "pk": 59857
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node20.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:20.848Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.345Z", 
+        "amount": 0.1792, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.56, 
+        "invoice": 69, 
+        "date": "2013-11-20T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 614
-    "model": "core.node", 
+    "pk": 59858
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node21.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:20.956Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.353Z", 
+        "amount": 0.2912, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.16, 
+        "invoice": 69, 
+        "date": "2013-11-21T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 615
-    "model": "core.node", 
+    "pk": 59859
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node22.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.064Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.362Z", 
+        "amount": 0.2184, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.12, 
+        "invoice": 69, 
+        "date": "2013-11-21T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 616
-    "model": "core.node", 
+    "pk": 59860
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node23.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.171Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.370Z", 
+        "amount": 0.14, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.0, 
+        "invoice": 69, 
+        "date": "2013-11-21T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 617
-    "model": "core.node", 
+    "pk": 59861
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node24.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.279Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.378Z", 
+        "amount": 0.3248, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.64, 
+        "invoice": 69, 
+        "date": "2013-11-22T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 618
-    "model": "core.node", 
+    "pk": 59862
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node25.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.387Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.387Z", 
+        "amount": 0.1904, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.72, 
+        "invoice": 69, 
+        "date": "2013-11-22T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 619
-    "model": "core.node", 
+    "pk": 59863
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node26.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.494Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.395Z", 
+        "amount": 0.2632, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.76, 
+        "invoice": 69, 
+        "date": "2013-11-22T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 620
-    "model": "core.node", 
+    "pk": 59864
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node27.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.602Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.403Z", 
+        "amount": 0.336, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.8, 
+        "invoice": 69, 
+        "date": "2013-11-23T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 621
-    "model": "core.node", 
+    "pk": 59865
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node28.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.710Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.412Z", 
+        "amount": 0.2688, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.84, 
+        "invoice": 69, 
+        "date": "2013-11-23T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 622
-    "model": "core.node", 
+    "pk": 59866
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node29.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.818Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.420Z", 
+        "amount": 0.2352, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.36, 
+        "invoice": 69, 
+        "date": "2013-11-23T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 623
-    "model": "core.node", 
+    "pk": 59867
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node30.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.925Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.428Z", 
+        "amount": 0.2128, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.04, 
+        "invoice": 69, 
+        "date": "2013-11-24T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 624
-    "model": "core.node", 
+    "pk": 59868
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node31.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.033Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.436Z", 
+        "amount": 0.196, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.8, 
+        "invoice": 69, 
+        "date": "2013-11-24T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 625
-    "model": "core.node", 
+    "pk": 59869
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node32.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.141Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.445Z", 
+        "amount": 0.1792, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.56, 
+        "invoice": 69, 
+        "date": "2013-11-24T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 626
-    "model": "core.node", 
+    "pk": 59870
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node33.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.257Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.453Z", 
+        "amount": 0.1288, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.84, 
+        "invoice": 70, 
+        "date": "2013-11-25T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 627
-    "model": "core.node", 
+    "pk": 59871
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node34.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.364Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.461Z", 
+        "amount": 0.1736, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.48, 
+        "invoice": 70, 
+        "date": "2013-11-25T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 628
-    "model": "core.node", 
+    "pk": 59872
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node35.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.472Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.470Z", 
+        "amount": 0.112, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.6, 
+        "invoice": 70, 
+        "date": "2013-11-25T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 629
-    "model": "core.node", 
+    "pk": 59873
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node36.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.621Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.478Z", 
+        "amount": 0.2128, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.04, 
+        "invoice": 70, 
+        "date": "2013-11-26T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 630
-    "model": "core.node", 
+    "pk": 59874
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node37.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.729Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.486Z", 
+        "amount": 0.308, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.4, 
+        "invoice": 70, 
+        "date": "2013-11-26T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 631
-    "model": "core.node", 
+    "pk": 59875
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node38.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.836Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.494Z", 
+        "amount": 0.1512, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.16, 
+        "invoice": 70, 
+        "date": "2013-11-26T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 632
-    "model": "core.node", 
+    "pk": 59876
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node39.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.944Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.503Z", 
+        "amount": 0.112, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.6, 
+        "invoice": 70, 
+        "date": "2013-11-27T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 633
-    "model": "core.node", 
+    "pk": 59877
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node40.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.052Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.511Z", 
+        "amount": 0.308, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.4, 
+        "invoice": 70, 
+        "date": "2013-11-27T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 634
-    "model": "core.node", 
+    "pk": 59878
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node41.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.160Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.519Z", 
+        "amount": 0.2072, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.96, 
+        "invoice": 70, 
+        "date": "2013-11-27T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 635
-    "model": "core.node", 
+    "pk": 59879
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node42.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.267Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.528Z", 
+        "amount": 0.28, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.0, 
+        "invoice": 70, 
+        "date": "2013-11-28T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 636
-    "model": "core.node", 
+    "pk": 59880
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node43.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.375Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.536Z", 
+        "amount": 0.1792, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.56, 
+        "invoice": 70, 
+        "date": "2013-11-28T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 637
-    "model": "core.node", 
+    "pk": 59881
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node44.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.483Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.544Z", 
+        "amount": 0.224, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.2, 
+        "invoice": 70, 
+        "date": "2013-11-28T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 638
-    "model": "core.node", 
+    "pk": 59882
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node45.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.590Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.552Z", 
+        "amount": 0.1568, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.24, 
+        "invoice": 70, 
+        "date": "2013-11-29T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 639
-    "model": "core.node", 
+    "pk": 59883
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node46.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.698Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.561Z", 
+        "amount": 0.2968, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.24, 
+        "invoice": 70, 
+        "date": "2013-11-29T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 640
-    "model": "core.node", 
+    "pk": 59884
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node47.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.806Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.569Z", 
+        "amount": 0.1232, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.76, 
+        "invoice": 70, 
+        "date": "2013-11-29T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 641
-    "model": "core.node", 
+    "pk": 59885
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node48.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.913Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.577Z", 
+        "amount": 0.2352, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.36, 
+        "invoice": 70, 
+        "date": "2013-11-30T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 642
-    "model": "core.node", 
+    "pk": 59886
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node49.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.021Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.586Z", 
+        "amount": 0.1736, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.48, 
+        "invoice": 70, 
+        "date": "2013-11-30T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 643
-    "model": "core.node", 
+    "pk": 59887
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node50.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.129Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.594Z", 
+        "amount": 0.196, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.8, 
+        "invoice": 70, 
+        "date": "2013-11-30T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 644
-    "model": "core.node", 
+    "pk": 59888
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node51.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.236Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.602Z", 
+        "amount": 0.1344, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.92, 
+        "invoice": 70, 
+        "date": "2013-12-01T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 645
-    "model": "core.node", 
+    "pk": 59889
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node52.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.344Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.610Z", 
+        "amount": 0.1904, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.72, 
+        "invoice": 70, 
+        "date": "2013-12-01T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 646
-    "model": "core.node", 
+    "pk": 59890
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node53.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.452Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.619Z", 
+        "amount": 0.2352, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.36, 
+        "invoice": 70, 
+        "date": "2013-12-01T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 647
-    "model": "core.node", 
+    "pk": 59891
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node54.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.568Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.627Z", 
+        "amount": 0.2072, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.96, 
+        "invoice": 71, 
+        "date": "2013-12-02T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 648
-    "model": "core.node", 
+    "pk": 59892
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node55.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.676Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.635Z", 
+        "amount": 0.2968, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.24, 
+        "invoice": 71, 
+        "date": "2013-12-02T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 649
-    "model": "core.node", 
+    "pk": 59893
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node56.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.783Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.644Z", 
+        "amount": 0.3136, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.48, 
+        "invoice": 71, 
+        "date": "2013-12-02T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 650
-    "model": "core.node", 
+    "pk": 59894
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node57.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.891Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.652Z", 
+        "amount": 0.1288, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.84, 
+        "invoice": 71, 
+        "date": "2013-12-03T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 651
-    "model": "core.node", 
+    "pk": 59895
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node58.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.999Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.660Z", 
+        "amount": 0.1568, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.24, 
+        "invoice": 71, 
+        "date": "2013-12-03T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 652
-    "model": "core.node", 
+    "pk": 59896
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node59.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.106Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.669Z", 
+        "amount": 0.1792, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.56, 
+        "invoice": 71, 
+        "date": "2013-12-03T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 653
-    "model": "core.node", 
+    "pk": 59897
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node60.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.214Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.677Z", 
+        "amount": 0.3024, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.32, 
+        "invoice": 71, 
+        "date": "2013-12-04T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 654
-    "model": "core.node", 
+    "pk": 59898
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node61.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.322Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.685Z", 
+        "amount": 0.2856, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.08, 
+        "invoice": 71, 
+        "date": "2013-12-04T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 655
-    "model": "core.node", 
+    "pk": 59899
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node62.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.429Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.693Z", 
+        "amount": 0.2912, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.16, 
+        "invoice": 71, 
+        "date": "2013-12-04T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
+    }
+},
+{
+    "pk": 59900, 
+    "model": "core.charge", 
+    "fields": {
+        "updated": "2013-12-18T21:29:25.537Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.702Z", 
+        "amount": 0.1288, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.84, 
+        "invoice": 71, 
+        "date": "2013-12-05T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 656
-    "model": "core.node", 
+    "pk": 59901
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node63.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.645Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.710Z", 
+        "amount": 0.3136, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.48, 
+        "invoice": 71, 
+        "date": "2013-12-05T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 657
-    "model": "core.node", 
+    "pk": 59902
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node64.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.752Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.718Z", 
+        "amount": 0.3248, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.64, 
+        "invoice": 71, 
+        "date": "2013-12-05T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 658
-    "model": "core.node", 
+    "pk": 59903
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node65.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.860Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.727Z", 
+        "amount": 0.3024, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.32, 
+        "invoice": 71, 
+        "date": "2013-12-06T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 659
-    "model": "core.node", 
+    "pk": 59904
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node66.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.968Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.735Z", 
+        "amount": 0.14, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.0, 
+        "invoice": 71, 
+        "date": "2013-12-06T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 660
-    "model": "core.node", 
+    "pk": 59905
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node67.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:26.075Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.743Z", 
+        "amount": 0.3304, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.72, 
+        "invoice": 71, 
+        "date": "2013-12-06T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 661
-    "model": "core.node", 
+    "pk": 59906
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node68.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:26.183Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.751Z", 
+        "amount": 0.2744, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.92, 
+        "invoice": 71, 
+        "date": "2013-12-07T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 662
-    "model": "core.node", 
+    "pk": 59907
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node69.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:26.291Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.760Z", 
+        "amount": 0.2632, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.76, 
+        "invoice": 71, 
+        "date": "2013-12-07T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 663
-    "model": "core.node", 
+    "pk": 59908
+    "model": "core.charge", 
     "fields": {
-        "site": 11, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 8, 
-        "name": "node70.gt.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:26.399Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.768Z", 
+        "amount": 0.2408, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.44, 
+        "invoice": 71, 
+        "date": "2013-12-07T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 664
-    "model": "core.node", 
+    "pk": 59909
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node1.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:26.506Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.776Z", 
+        "amount": 0.1624, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.32, 
+        "invoice": 71, 
+        "date": "2013-12-08T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 665
-    "model": "core.node", 
+    "pk": 59910
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node2.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:26.614Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.784Z", 
+        "amount": 0.2968, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.24, 
+        "invoice": 71, 
+        "date": "2013-12-08T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 666
-    "model": "core.node", 
+    "pk": 59911
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node3.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:26.722Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.793Z", 
+        "amount": 0.2016, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.88, 
+        "invoice": 71, 
+        "date": "2013-12-08T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 667
-    "model": "core.node", 
+    "pk": 59912
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node4.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:26.838Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.801Z", 
+        "amount": 0.2296, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.28, 
+        "invoice": 72, 
+        "date": "2013-12-09T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 668
-    "model": "core.node", 
+    "pk": 59913
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node5.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:26.945Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.809Z", 
+        "amount": 0.2128, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.04, 
+        "invoice": 72, 
+        "date": "2013-12-09T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 669
-    "model": "core.node", 
+    "pk": 59914
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node6.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:27.053Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.818Z", 
+        "amount": 0.112, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.6, 
+        "invoice": 72, 
+        "date": "2013-12-09T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 670
-    "model": "core.node", 
+    "pk": 59915
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node7.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:27.161Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.826Z", 
+        "amount": 0.168, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.4, 
+        "invoice": 72, 
+        "date": "2013-12-10T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 671
-    "model": "core.node", 
+    "pk": 59916
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node8.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:27.268Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.834Z", 
+        "amount": 0.168, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.4, 
+        "invoice": 72, 
+        "date": "2013-12-10T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 672
-    "model": "core.node", 
+    "pk": 59917
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node9.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:27.376Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.842Z", 
+        "amount": 0.196, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.8, 
+        "invoice": 72, 
+        "date": "2013-12-10T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 673
-    "model": "core.node", 
+    "pk": 59918
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node10.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:27.484Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.851Z", 
+        "amount": 0.2464, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.52, 
+        "invoice": 72, 
+        "date": "2013-12-11T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 674
-    "model": "core.node", 
+    "pk": 59919
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node11.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:27.649Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.859Z", 
+        "amount": 0.112, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.6, 
+        "invoice": 72, 
+        "date": "2013-12-11T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 675
-    "model": "core.node", 
+    "pk": 59920
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node12.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:27.757Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.867Z", 
+        "amount": 0.1792, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.56, 
+        "invoice": 72, 
+        "date": "2013-12-11T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 676
-    "model": "core.node", 
+    "pk": 59921
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node13.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:27.865Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.875Z", 
+        "amount": 0.308, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.4, 
+        "invoice": 72, 
+        "date": "2013-12-12T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 677
-    "model": "core.node", 
+    "pk": 59922
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node14.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:27.972Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.884Z", 
+        "amount": 0.1176, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.68, 
+        "invoice": 72, 
+        "date": "2013-12-12T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 678
-    "model": "core.node", 
+    "pk": 59923
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node15.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:28.080Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.892Z", 
+        "amount": 0.2016, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.88, 
+        "invoice": 72, 
+        "date": "2013-12-12T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 679
-    "model": "core.node", 
+    "pk": 59924
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node16.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:28.188Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.900Z", 
+        "amount": 0.1512, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.16, 
+        "invoice": 72, 
+        "date": "2013-12-13T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 680
-    "model": "core.node", 
+    "pk": 59925
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node17.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:28.296Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.909Z", 
+        "amount": 0.2352, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.36, 
+        "invoice": 72, 
+        "date": "2013-12-13T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 681
-    "model": "core.node", 
+    "pk": 59926
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node18.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:28.403Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.917Z", 
+        "amount": 0.308, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.4, 
+        "invoice": 72, 
+        "date": "2013-12-13T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 682
-    "model": "core.node", 
+    "pk": 59927
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node19.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:28.511Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.925Z", 
+        "amount": 0.2856, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.08, 
+        "invoice": 72, 
+        "date": "2013-12-14T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 683
-    "model": "core.node", 
+    "pk": 59928
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node20.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:28.619Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.934Z", 
+        "amount": 0.1792, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.56, 
+        "invoice": 72, 
+        "date": "2013-12-14T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 684
-    "model": "core.node", 
+    "pk": 59929
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node21.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:28.726Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.942Z", 
+        "amount": 0.2856, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.08, 
+        "invoice": 72, 
+        "date": "2013-12-14T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 685
-    "model": "core.node", 
+    "pk": 59930
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node22.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:28.834Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.950Z", 
+        "amount": 0.1456, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.08, 
+        "invoice": 72, 
+        "date": "2013-12-15T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 686
-    "model": "core.node", 
+    "pk": 59931
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node23.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:28.942Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:01.980Z", 
+        "amount": 0.3136, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.48, 
+        "invoice": 72, 
+        "date": "2013-12-15T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 687
-    "model": "core.node", 
+    "pk": 59932
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node24.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:29.049Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.021Z", 
+        "amount": 0.1232, 
+        "object": 105, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.76, 
+        "invoice": 72, 
+        "date": "2013-12-15T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 688
-    "model": "core.node", 
+    "pk": 59933
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node25.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:02.066Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.066Z", 
+        "amount": 0.2072, 
+        "object": 105, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 2.96, 
+        "invoice": null, 
+        "date": "2013-12-16T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 689
-    "model": "core.node", 
+    "pk": 59934
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node26.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:02.116Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.116Z", 
+        "amount": 0.2408, 
+        "object": 105, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 3.44, 
+        "invoice": null, 
+        "date": "2013-12-16T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 690
-    "model": "core.node", 
+    "pk": 59935
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node27.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:02.124Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.124Z", 
+        "amount": 0.2352, 
+        "object": 105, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 3.36, 
+        "invoice": null, 
+        "date": "2013-12-16T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 691
-    "model": "core.node", 
+    "pk": 59936
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node28.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:02.132Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.132Z", 
+        "amount": 0.2576, 
+        "object": 105, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 3.68, 
+        "invoice": null, 
+        "date": "2013-12-17T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 692
-    "model": "core.node", 
+    "pk": 59937
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node29.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:02.141Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.141Z", 
+        "amount": 0.2744, 
+        "object": 105, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 3.92, 
+        "invoice": null, 
+        "date": "2013-12-17T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 693
-    "model": "core.node", 
+    "pk": 59938
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node30.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:02.149Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.149Z", 
+        "amount": 0.14, 
+        "object": 105, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 2.0, 
+        "invoice": null, 
+        "date": "2013-12-17T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 694
-    "model": "core.node", 
+    "pk": 59939
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node31.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:02.157Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.157Z", 
+        "amount": 0.2688, 
+        "object": 105, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 3.84, 
+        "invoice": null, 
+        "date": "2013-12-18T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 695
-    "model": "core.node", 
+    "pk": 59940
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node32.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:02.165Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.165Z", 
+        "amount": 0.3192, 
+        "object": 105, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 4.56, 
+        "invoice": null, 
+        "date": "2013-12-18T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 696
-    "model": "core.node", 
+    "pk": 59941
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node33.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:20.210Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.205Z", 
+        "amount": 0.1624, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.32, 
+        "invoice": 69, 
+        "date": "2013-11-18T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 697
-    "model": "core.node", 
+    "pk": 59942
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node34.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:20.318Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.246Z", 
+        "amount": 0.196, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.8, 
+        "invoice": 69, 
+        "date": "2013-11-19T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 698
-    "model": "core.node", 
+    "pk": 59943
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node35.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:20.426Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.273Z", 
+        "amount": 0.3136, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.48, 
+        "invoice": 69, 
+        "date": "2013-11-19T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 699
-    "model": "core.node", 
+    "pk": 59944
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node36.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:20.533Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.323Z", 
+        "amount": 0.1288, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.84, 
+        "invoice": 69, 
+        "date": "2013-11-19T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 700
-    "model": "core.node", 
+    "pk": 59945
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node37.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:20.641Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.348Z", 
+        "amount": 0.28, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.0, 
+        "invoice": 69, 
+        "date": "2013-11-20T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
+    }
+},
+{
+    "pk": 59946, 
+    "model": "core.charge", 
+    "fields": {
+        "updated": "2013-12-18T21:29:20.749Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.379Z", 
+        "amount": 0.2688, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.84, 
+        "invoice": 69, 
+        "date": "2013-11-20T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 701
-    "model": "core.node", 
+    "pk": 59947
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node38.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:20.857Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.430Z", 
+        "amount": 0.1792, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.56, 
+        "invoice": 69, 
+        "date": "2013-11-20T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 702
-    "model": "core.node", 
+    "pk": 59948
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node39.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:20.964Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.471Z", 
+        "amount": 0.1736, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.48, 
+        "invoice": 69, 
+        "date": "2013-11-21T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 703
-    "model": "core.node", 
+    "pk": 59949
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node40.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.072Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.497Z", 
+        "amount": 0.1176, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.68, 
+        "invoice": 69, 
+        "date": "2013-11-21T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 704
-    "model": "core.node", 
+    "pk": 59950
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node41.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.180Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.505Z", 
+        "amount": 0.2576, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.68, 
+        "invoice": 69, 
+        "date": "2013-11-21T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 705
-    "model": "core.node", 
+    "pk": 59951
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node42.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.287Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.513Z", 
+        "amount": 0.1904, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.72, 
+        "invoice": 69, 
+        "date": "2013-11-22T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 706
-    "model": "core.node", 
+    "pk": 59952
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node43.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.395Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.521Z", 
+        "amount": 0.3136, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.48, 
+        "invoice": 69, 
+        "date": "2013-11-22T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 707
-    "model": "core.node", 
+    "pk": 59953
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node44.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.503Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.530Z", 
+        "amount": 0.3192, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.56, 
+        "invoice": 69, 
+        "date": "2013-11-22T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 708
-    "model": "core.node", 
+    "pk": 59954
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node45.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.610Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.538Z", 
+        "amount": 0.3248, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.64, 
+        "invoice": 69, 
+        "date": "2013-11-23T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 709
-    "model": "core.node", 
+    "pk": 59955
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node46.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.718Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.546Z", 
+        "amount": 0.3304, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.72, 
+        "invoice": 69, 
+        "date": "2013-11-23T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 710
-    "model": "core.node", 
+    "pk": 59956
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node47.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.826Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.555Z", 
+        "amount": 0.2744, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.92, 
+        "invoice": 69, 
+        "date": "2013-11-23T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 711
-    "model": "core.node", 
+    "pk": 59957
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node48.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:21.933Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.563Z", 
+        "amount": 0.168, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.4, 
+        "invoice": 69, 
+        "date": "2013-11-24T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 712
-    "model": "core.node", 
+    "pk": 59958
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node49.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.041Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.571Z", 
+        "amount": 0.28, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.0, 
+        "invoice": 69, 
+        "date": "2013-11-24T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 713
-    "model": "core.node", 
+    "pk": 59959
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node50.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.149Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.579Z", 
+        "amount": 0.14, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.0, 
+        "invoice": 69, 
+        "date": "2013-11-24T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 714
-    "model": "core.node", 
+    "pk": 59960
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node51.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.265Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.588Z", 
+        "amount": 0.3248, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.64, 
+        "invoice": 70, 
+        "date": "2013-11-25T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 715
-    "model": "core.node", 
+    "pk": 59961
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node52.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.372Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.596Z", 
+        "amount": 0.2464, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.52, 
+        "invoice": 70, 
+        "date": "2013-11-25T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 716
-    "model": "core.node", 
+    "pk": 59962
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node53.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.480Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.604Z", 
+        "amount": 0.1232, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.76, 
+        "invoice": 70, 
+        "date": "2013-11-25T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 717
-    "model": "core.node", 
+    "pk": 59963
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node54.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.629Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.613Z", 
+        "amount": 0.1792, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.56, 
+        "invoice": 70, 
+        "date": "2013-11-26T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 718
-    "model": "core.node", 
+    "pk": 59964
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node55.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.737Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.621Z", 
+        "amount": 0.336, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.8, 
+        "invoice": 70, 
+        "date": "2013-11-26T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 719
-    "model": "core.node", 
+    "pk": 59965
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node56.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.845Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.629Z", 
+        "amount": 0.2632, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.76, 
+        "invoice": 70, 
+        "date": "2013-11-26T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 720
-    "model": "core.node", 
+    "pk": 59966
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node57.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:22.952Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.638Z", 
+        "amount": 0.168, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.4, 
+        "invoice": 70, 
+        "date": "2013-11-27T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 721
-    "model": "core.node", 
+    "pk": 59967
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node58.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.060Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.646Z", 
+        "amount": 0.3192, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.56, 
+        "invoice": 70, 
+        "date": "2013-11-27T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 722
-    "model": "core.node", 
+    "pk": 59968
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node59.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.168Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.654Z", 
+        "amount": 0.3304, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.72, 
+        "invoice": 70, 
+        "date": "2013-11-27T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 723, 
-    "model": "core.node", 
-    "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node60.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+    "pk": 59969, 
+    "model": "core.charge", 
+    "fields": {
+        "updated": "2013-12-18T21:29:23.275Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.662Z", 
+        "amount": 0.2744, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.92, 
+        "invoice": 70, 
+        "date": "2013-11-28T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 724
-    "model": "core.node", 
+    "pk": 59970
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node61.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.383Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.671Z", 
+        "amount": 0.2016, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.88, 
+        "invoice": 70, 
+        "date": "2013-11-28T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 725
-    "model": "core.node", 
+    "pk": 59971
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node62.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.491Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.679Z", 
+        "amount": 0.196, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.8, 
+        "invoice": 70, 
+        "date": "2013-11-28T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 726
-    "model": "core.node", 
+    "pk": 59972
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node63.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.598Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.687Z", 
+        "amount": 0.3136, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.48, 
+        "invoice": 70, 
+        "date": "2013-11-29T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 727
-    "model": "core.node", 
+    "pk": 59973
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node64.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.706Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.695Z", 
+        "amount": 0.3192, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.56, 
+        "invoice": 70, 
+        "date": "2013-11-29T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 728
-    "model": "core.node", 
+    "pk": 59974
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node65.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.814Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.704Z", 
+        "amount": 0.3192, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.56, 
+        "invoice": 70, 
+        "date": "2013-11-29T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 729
-    "model": "core.node", 
+    "pk": 59975
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node66.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:23.922Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.712Z", 
+        "amount": 0.2464, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.52, 
+        "invoice": 70, 
+        "date": "2013-11-30T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 730
-    "model": "core.node", 
+    "pk": 59976
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node67.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.029Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.720Z", 
+        "amount": 0.2912, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.16, 
+        "invoice": 70, 
+        "date": "2013-11-30T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 731
-    "model": "core.node", 
+    "pk": 59977
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node68.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.137Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.729Z", 
+        "amount": 0.2016, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.88, 
+        "invoice": 70, 
+        "date": "2013-11-30T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 732
-    "model": "core.node", 
+    "pk": 59978
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node69.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.245Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.737Z", 
+        "amount": 0.2128, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.04, 
+        "invoice": 70, 
+        "date": "2013-12-01T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 733
-    "model": "core.node", 
+    "pk": 59979
+    "model": "core.charge", 
     "fields": {
-        "site": 12, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 9, 
-        "name": "node70.mpisws.vicci.org", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.352Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.745Z", 
+        "amount": 0.1288, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.84, 
+        "invoice": 70, 
+        "date": "2013-12-01T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 734
-    "model": "core.node", 
+    "pk": 59980
+    "model": "core.charge", 
     "fields": {
-        "site": 13, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 10, 
-        "name": "node1.atla.internet2.vini-veritas.net", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.460Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.753Z", 
+        "amount": 0.2408, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.44, 
+        "invoice": 70, 
+        "date": "2013-12-01T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 735
-    "model": "core.node", 
+    "pk": 59981
+    "model": "core.charge", 
     "fields": {
-        "site": 13, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 10, 
-        "name": "node2.atla.internet2.vini-veritas.net", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.576Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.762Z", 
+        "amount": 0.2856, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.08, 
+        "invoice": 71, 
+        "date": "2013-12-02T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 736
-    "model": "core.node", 
+    "pk": 59982
+    "model": "core.charge", 
     "fields": {
-        "site": 14, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 10, 
-        "name": "node1.chic.internet2.vini-veritas.net", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.684Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.770Z", 
+        "amount": 0.2688, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.84, 
+        "invoice": 71, 
+        "date": "2013-12-02T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 737
-    "model": "core.node", 
+    "pk": 59983
+    "model": "core.charge", 
     "fields": {
-        "site": 14, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 10, 
-        "name": "node2.chic.internet2.vini-veritas.net", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.791Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.778Z", 
+        "amount": 0.2072, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.96, 
+        "invoice": 71, 
+        "date": "2013-12-02T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 738
-    "model": "core.node", 
+    "pk": 59984
+    "model": "core.charge", 
     "fields": {
-        "site": 15, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 10, 
-        "name": "node1.hous.internet2.vini-veritas.net", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:24.899Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.787Z", 
+        "amount": 0.224, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.2, 
+        "invoice": 71, 
+        "date": "2013-12-03T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 739
-    "model": "core.node", 
+    "pk": 59985
+    "model": "core.charge", 
     "fields": {
-        "site": 15, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 10, 
-        "name": "node2.hous.internet2.vini-veritas.net", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.007Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.795Z", 
+        "amount": 0.3304, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.72, 
+        "invoice": 71, 
+        "date": "2013-12-03T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 740
-    "model": "core.node", 
+    "pk": 59986
+    "model": "core.charge", 
     "fields": {
-        "site": 16, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 10, 
-        "name": "node1.kans.internet2.vini-veritas.net", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.114Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.803Z", 
+        "amount": 0.224, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.2, 
+        "invoice": 71, 
+        "date": "2013-12-03T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 741
-    "model": "core.node", 
+    "pk": 59987
+    "model": "core.charge", 
     "fields": {
-        "site": 16, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 10, 
-        "name": "node2.kans.internet2.vini-veritas.net", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.222Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.811Z", 
+        "amount": 0.2576, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.68, 
+        "invoice": 71, 
+        "date": "2013-12-04T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 742
-    "model": "core.node", 
+    "pk": 59988
+    "model": "core.charge", 
     "fields": {
-        "site": 17, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 10, 
-        "name": "node1.losa.internet2.vini-veritas.net", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.330Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.820Z", 
+        "amount": 0.2352, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.36, 
+        "invoice": 71, 
+        "date": "2013-12-04T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 743
-    "model": "core.node", 
+    "pk": 59989
+    "model": "core.charge", 
     "fields": {
-        "site": 17, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 10, 
-        "name": "node2.losa.internet2.vini-veritas.net", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.438Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.828Z", 
+        "amount": 0.308, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.4, 
+        "invoice": 71, 
+        "date": "2013-12-04T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 744
-    "model": "core.node", 
+    "pk": 59990
+    "model": "core.charge", 
     "fields": {
-        "site": 18, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 10, 
-        "name": "node1.newy.internet2.vini-veritas.net", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.545Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.836Z", 
+        "amount": 0.3136, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.48, 
+        "invoice": 71, 
+        "date": "2013-12-05T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 745
-    "model": "core.node", 
+    "pk": 59991
+    "model": "core.charge", 
     "fields": {
-        "site": 18, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 10, 
-        "name": "node2.newy.internet2.vini-veritas.net", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.653Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.845Z", 
+        "amount": 0.224, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.2, 
+        "invoice": 71, 
+        "date": "2013-12-05T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 746
-    "model": "core.node", 
+    "pk": 59992
+    "model": "core.charge", 
     "fields": {
-        "site": 19, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 10, 
-        "name": "node1.salt.internet2.vini-veritas.net", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.761Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.853Z", 
+        "amount": 0.308, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.4, 
+        "invoice": 71, 
+        "date": "2013-12-05T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 747
-    "model": "core.node", 
+    "pk": 59993
+    "model": "core.charge", 
     "fields": {
-        "site": 19, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 10, 
-        "name": "node2.salt.internet2.vini-veritas.net", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.868Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.861Z", 
+        "amount": 0.2688, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.84, 
+        "invoice": 71, 
+        "date": "2013-12-06T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 748
-    "model": "core.node", 
+    "pk": 59994
+    "model": "core.charge", 
     "fields": {
-        "site": 20, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 10, 
-        "name": "node1.seat.internet2.vini-veritas.net", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:25.976Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.869Z", 
+        "amount": 0.2464, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.52, 
+        "invoice": 71, 
+        "date": "2013-12-06T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 749
-    "model": "core.node", 
+    "pk": 59995
+    "model": "core.charge", 
     "fields": {
-        "site": 20, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 10, 
-        "name": "node2.seat.internet2.vini-veritas.net", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:26.084Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.878Z", 
+        "amount": 0.3024, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.32, 
+        "invoice": 71, 
+        "date": "2013-12-06T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 750
-    "model": "core.node", 
+    "pk": 59996
+    "model": "core.charge", 
     "fields": {
-        "site": 21, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 10, 
-        "name": "node1.wash.internet2.vini-veritas.net", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:26.192Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.886Z", 
+        "amount": 0.1456, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.08, 
+        "invoice": 71, 
+        "date": "2013-12-07T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 751
-    "model": "core.node", 
+    "pk": 59997
+    "model": "core.charge", 
     "fields": {
-        "site": 21, 
-        "updated": "2013-06-21T21:17:13.982Z", 
-        "deployment": 10, 
-        "name": "node2.wash.internet2.vini-veritas.net", 
-        "created": "2013-04-03T23:14:11.072Z"
+        "updated": "2013-12-18T21:29:26.299Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.894Z", 
+        "amount": 0.2968, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.24, 
+        "invoice": 71, 
+        "date": "2013-12-07T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 752
-    "model": "core.node", 
+    "pk": 59998
+    "model": "core.charge", 
     "fields": {
-        "site": 23, 
-        "updated": "2013-12-17T17:10:48.740Z", 
-        "deployment": 10, 
-        "name": "opencloud0.sing.internet2.edu", 
-        "created": "2013-12-17T17:10:48.740Z"
+        "updated": "2013-12-18T21:29:26.407Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.902Z", 
+        "amount": 0.1344, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.92, 
+        "invoice": 71, 
+        "date": "2013-12-07T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 753
-    "model": "core.node", 
+    "pk": 59999
+    "model": "core.charge", 
     "fields": {
-        "site": 23, 
-        "updated": "2013-12-17T17:10:48.742Z", 
-        "deployment": 10, 
-        "name": "opencloud1.sing.internet2.edu", 
-        "created": "2013-12-17T17:10:48.741Z"
+        "updated": "2013-12-18T21:29:26.514Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.911Z", 
+        "amount": 0.3192, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.56, 
+        "invoice": 71, 
+        "date": "2013-12-08T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 754
-    "model": "core.node", 
+    "pk": 60000
+    "model": "core.charge", 
     "fields": {
-        "site": 23, 
-        "updated": "2013-12-17T17:10:48.742Z", 
-        "deployment": 10, 
-        "name": "opencloud2.sing.internet2.edu", 
-        "created": "2013-12-17T17:10:48.742Z"
+        "updated": "2013-12-18T21:29:26.622Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.919Z", 
+        "amount": 0.1288, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.84, 
+        "invoice": 71, 
+        "date": "2013-12-08T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 755
-    "model": "core.node", 
+    "pk": 60001
+    "model": "core.charge", 
     "fields": {
-        "site": 23, 
-        "updated": "2013-12-17T17:10:48.743Z", 
-        "deployment": 10, 
-        "name": "opencloud3.sing.internet2.edu", 
-        "created": "2013-12-17T17:10:48.743Z"
+        "updated": "2013-12-18T21:29:26.730Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.927Z", 
+        "amount": 0.2968, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.24, 
+        "invoice": 71, 
+        "date": "2013-12-08T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 4
-    "model": "core.serviceresource", 
+    "pk": 60002
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-11T22:18:00.040Z", 
-        "name": "Cycles", 
-        "bucketMaxSize": 0, 
-        "created": "2013-12-11T22:18:00.040Z", 
-        "serviceClass": 1, 
-        "maxUnitsDeployment": 0, 
-        "bucketInRate": 0, 
-        "cost": 7, 
-        "calendarReservable": false, 
-        "maxDuration": 0, 
-        "maxUnitsNode": 0
+        "updated": "2013-12-18T21:29:26.846Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.936Z", 
+        "amount": 0.1848, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.64, 
+        "invoice": 72, 
+        "date": "2013-12-09T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 5
-    "model": "core.serviceresource", 
+    "pk": 60003
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-11T22:18:00.045Z", 
-        "name": "Cycles", 
-        "bucketMaxSize": 0, 
-        "created": "2013-12-11T22:18:00.045Z", 
-        "serviceClass": 2, 
-        "maxUnitsDeployment": 0, 
-        "bucketInRate": 0, 
-        "cost": 7, 
-        "calendarReservable": false, 
-        "maxDuration": 0, 
-        "maxUnitsNode": 0
+        "updated": "2013-12-18T21:29:26.953Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.944Z", 
+        "amount": 0.1568, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.24, 
+        "invoice": 72, 
+        "date": "2013-12-09T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 6, 
-    "model": "core.serviceresource", 
+    "pk": 60004
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-11T22:18:00.053Z", 
-        "name": "Cycles", 
-        "bucketMaxSize": 0, 
-        "created": "2013-12-11T22:18:00.053Z", 
-        "serviceClass": 3, 
-        "maxUnitsDeployment": 0, 
-        "bucketInRate": 0, 
-        "cost": 7, 
-        "calendarReservable": false, 
-        "maxDuration": 0, 
-        "maxUnitsNode": 0
+        "updated": "2013-12-18T21:29:27.061Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.952Z", 
+        "amount": 0.1736, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.48, 
+        "invoice": 72, 
+        "date": "2013-12-09T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 7
-    "model": "core.serviceresource", 
+    "pk": 60005
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-11T22:18:00.064Z", 
-        "name": "numberCores", 
-        "bucketMaxSize": 0, 
-        "created": "2013-12-11T22:18:00.064Z", 
-        "serviceClass": 3, 
-        "maxUnitsDeployment": 210, 
-        "bucketInRate": 0, 
-        "cost": 0, 
-        "calendarReservable": true, 
-        "maxDuration": 8760, 
-        "maxUnitsNode": 6
+        "updated": "2013-12-18T21:29:27.169Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.960Z", 
+        "amount": 0.3024, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.32, 
+        "invoice": 72, 
+        "date": "2013-12-10T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 8
-    "model": "core.serviceresource", 
+    "pk": 60006
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-11T22:18:00.072Z", 
-        "name": "numberCores", 
-        "bucketMaxSize": 210, 
-        "created": "2013-12-11T22:18:00.072Z", 
-        "serviceClass": 2, 
-        "maxUnitsDeployment": 210, 
-        "bucketInRate": 10, 
-        "cost": 7, 
-        "calendarReservable": true, 
-        "maxDuration": 168, 
-        "maxUnitsNode": 6
+        "updated": "2013-12-18T21:29:27.277Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:02.969Z", 
+        "amount": 0.2128, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.04, 
+        "invoice": 72, 
+        "date": "2013-12-10T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 40
-    "model": "core.sliver", 
+    "pk": 60007
+    "model": "core.charge", 
     "fields": {
-        "node": 613, 
-        "instance_name": "instance-000003e8", 
-        "updated": "2013-12-12T17:55:32.455Z", 
+        "updated": "2013-12-18T21:29:27.384Z", 
         "slice": 4, 
-        "deploymentNetwork": 8, 
-        "name": "node20.gt.vicci.org", 
-        "created": "2013-12-12T17:55:32.455Z", 
-        "ip": "130.207.98.29", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:02.977Z", 
+        "amount": 0.168, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.4, 
+        "invoice": 72, 
+        "date": "2013-12-10T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 41
-    "model": "core.sliver", 
+    "pk": 60008
+    "model": "core.charge", 
     "fields": {
-        "node": 615, 
-        "instance_name": "instance-000003e9", 
-        "updated": "2013-12-12T17:55:32.478Z", 
+        "updated": "2013-12-18T21:29:27.492Z", 
         "slice": 4, 
-        "deploymentNetwork": 8, 
-        "name": "node22.gt.vicci.org", 
-        "created": "2013-12-12T17:55:32.478Z", 
-        "ip": "130.207.98.31", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:02.985Z", 
+        "amount": 0.2968, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.24, 
+        "invoice": 72, 
+        "date": "2013-12-11T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 42
-    "model": "core.sliver", 
+    "pk": 60009
+    "model": "core.charge", 
     "fields": {
-        "node": 617, 
-        "instance_name": "instance-000003ea", 
-        "updated": "2013-12-12T17:55:32.495Z", 
+        "updated": "2013-12-18T21:29:27.658Z", 
         "slice": 4, 
-        "deploymentNetwork": 8, 
-        "name": "node24.gt.vicci.org", 
-        "created": "2013-12-12T17:55:32.495Z", 
-        "ip": "130.207.98.33", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:02.994Z", 
+        "amount": 0.14, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.0, 
+        "invoice": 72, 
+        "date": "2013-12-11T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 43
-    "model": "core.sliver", 
+    "pk": 60010
+    "model": "core.charge", 
     "fields": {
-        "node": 622, 
-        "instance_name": "instance-000003eb", 
-        "updated": "2013-12-12T17:55:32.512Z", 
+        "updated": "2013-12-18T21:29:27.765Z", 
         "slice": 4, 
-        "deploymentNetwork": 8, 
-        "name": "node29.gt.vicci.org", 
-        "created": "2013-12-12T17:55:32.511Z", 
-        "ip": "130.207.98.38", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.002Z", 
+        "amount": 0.252, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.6, 
+        "invoice": 72, 
+        "date": "2013-12-11T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 44
-    "model": "core.sliver", 
+    "pk": 60011
+    "model": "core.charge", 
     "fields": {
-        "node": 623, 
-        "instance_name": "instance-000003ec", 
-        "updated": "2013-12-12T17:55:32.528Z", 
+        "updated": "2013-12-18T21:29:27.873Z", 
         "slice": 4, 
-        "deploymentNetwork": 8, 
-        "name": "node30.gt.vicci.org", 
-        "created": "2013-12-12T17:55:32.528Z", 
-        "ip": "130.207.98.39", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.010Z", 
+        "amount": 0.2744, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.92, 
+        "invoice": 72, 
+        "date": "2013-12-12T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 45
-    "model": "core.sliver", 
+    "pk": 60012
+    "model": "core.charge", 
     "fields": {
-        "node": 624, 
-        "instance_name": "instance-000003ed", 
-        "updated": "2013-12-12T17:55:32.544Z", 
+        "updated": "2013-12-18T21:29:27.981Z", 
         "slice": 4, 
-        "deploymentNetwork": 8, 
-        "name": "node31.gt.vicci.org", 
-        "created": "2013-12-12T17:55:32.544Z", 
-        "ip": "130.207.98.40", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.018Z", 
+        "amount": 0.196, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.8, 
+        "invoice": 72, 
+        "date": "2013-12-12T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 46
-    "model": "core.sliver", 
+    "pk": 60013
+    "model": "core.charge", 
     "fields": {
-        "node": 625, 
-        "instance_name": "instance-000003ee", 
-        "updated": "2013-12-12T17:55:32.561Z", 
+        "updated": "2013-12-18T21:29:28.088Z", 
         "slice": 4, 
-        "deploymentNetwork": 8, 
-        "name": "node32.gt.vicci.org", 
-        "created": "2013-12-12T17:55:32.561Z", 
-        "ip": "130.207.98.41", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.027Z", 
+        "amount": 0.168, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.4, 
+        "invoice": 72, 
+        "date": "2013-12-12T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 47
-    "model": "core.sliver", 
+    "pk": 60014
+    "model": "core.charge", 
     "fields": {
-        "node": 630, 
-        "instance_name": "instance-000003ef", 
-        "updated": "2013-12-12T17:55:32.577Z", 
+        "updated": "2013-12-18T21:29:28.196Z", 
         "slice": 4, 
-        "deploymentNetwork": 8, 
-        "name": "node37.gt.vicci.org", 
-        "created": "2013-12-12T17:55:32.577Z", 
-        "ip": "130.207.98.46", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.035Z", 
+        "amount": 0.1176, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.68, 
+        "invoice": 72, 
+        "date": "2013-12-13T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 48
-    "model": "core.sliver", 
+    "pk": 60015
+    "model": "core.charge", 
     "fields": {
-        "node": 666, 
-        "instance_name": "instance-000003f0", 
-        "updated": "2013-12-12T17:55:32.594Z", 
+        "updated": "2013-12-18T21:29:28.304Z", 
         "slice": 4, 
-        "deploymentNetwork": 9, 
-        "name": "node3.mpisws.vicci.org", 
-        "created": "2013-12-12T17:55:32.594Z", 
-        "ip": "141.39.220.13", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.043Z", 
+        "amount": 0.3248, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.64, 
+        "invoice": 72, 
+        "date": "2013-12-13T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 49
-    "model": "core.sliver", 
+    "pk": 60016
+    "model": "core.charge", 
     "fields": {
-        "node": 683, 
-        "instance_name": "instance-000003f1", 
-        "updated": "2013-12-12T17:55:32.611Z", 
+        "updated": "2013-12-18T21:29:28.411Z", 
         "slice": 4, 
-        "deploymentNetwork": 9, 
-        "name": "node20.mpisws.vicci.org", 
-        "created": "2013-12-12T17:55:32.610Z", 
-        "ip": "141.39.220.30", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.052Z", 
+        "amount": 0.1792, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.56, 
+        "invoice": 72, 
+        "date": "2013-12-13T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 50
-    "model": "core.sliver", 
+    "pk": 60017
+    "model": "core.charge", 
     "fields": {
-        "node": 684, 
-        "instance_name": "instance-000003f2", 
-        "updated": "2013-12-12T17:55:32.627Z", 
+        "updated": "2013-12-18T21:29:28.519Z", 
         "slice": 4, 
-        "deploymentNetwork": 9, 
-        "name": "node21.mpisws.vicci.org", 
-        "created": "2013-12-12T17:55:32.627Z", 
-        "ip": "141.39.220.31", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.060Z", 
+        "amount": 0.1232, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.76, 
+        "invoice": 72, 
+        "date": "2013-12-14T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 51
-    "model": "core.sliver", 
+    "pk": 60018
+    "model": "core.charge", 
     "fields": {
-        "node": 686, 
-        "instance_name": "instance-000003f3", 
-        "updated": "2013-12-12T17:55:32.644Z", 
+        "updated": "2013-12-18T21:29:28.627Z", 
         "slice": 4, 
-        "deploymentNetwork": 9, 
-        "name": "node23.mpisws.vicci.org", 
-        "created": "2013-12-12T17:55:32.644Z", 
-        "ip": "141.39.220.33", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.068Z", 
+        "amount": 0.1512, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.16, 
+        "invoice": 72, 
+        "date": "2013-12-14T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 52
-    "model": "core.sliver", 
+    "pk": 60019
+    "model": "core.charge", 
     "fields": {
-        "node": 687, 
-        "instance_name": "instance-000003f4", 
-        "updated": "2013-12-12T17:55:32.660Z", 
+        "updated": "2013-12-18T21:29:28.735Z", 
         "slice": 4, 
-        "deploymentNetwork": 9, 
-        "name": "node24.mpisws.vicci.org", 
-        "created": "2013-12-12T17:55:32.660Z", 
-        "ip": "141.39.220.34", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.076Z", 
+        "amount": 0.3024, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.32, 
+        "invoice": 72, 
+        "date": "2013-12-14T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 53
-    "model": "core.sliver", 
+    "pk": 60020
+    "model": "core.charge", 
     "fields": {
-        "node": 691, 
-        "instance_name": "instance-000003f5", 
-        "updated": "2013-12-12T17:55:32.677Z", 
+        "updated": "2013-12-18T21:29:28.842Z", 
         "slice": 4, 
-        "deploymentNetwork": 9, 
-        "name": "node28.mpisws.vicci.org", 
-        "created": "2013-12-12T17:55:32.677Z", 
-        "ip": "141.39.220.38", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.085Z", 
+        "amount": 0.1792, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.56, 
+        "invoice": 72, 
+        "date": "2013-12-15T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 54
-    "model": "core.sliver", 
+    "pk": 60021
+    "model": "core.charge", 
     "fields": {
-        "node": 693, 
-        "instance_name": "instance-000003f6", 
-        "updated": "2013-12-12T17:55:32.693Z", 
+        "updated": "2013-12-18T21:29:28.950Z", 
         "slice": 4, 
-        "deploymentNetwork": 9, 
-        "name": "node30.mpisws.vicci.org", 
-        "created": "2013-12-12T17:55:32.693Z", 
-        "ip": "141.39.220.40", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.093Z", 
+        "amount": 0.1512, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.16, 
+        "invoice": 72, 
+        "date": "2013-12-15T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 55
-    "model": "core.sliver", 
+    "pk": 60022
+    "model": "core.charge", 
     "fields": {
-        "node": 694, 
-        "instance_name": "instance-000003f7", 
-        "updated": "2013-12-12T17:55:32.710Z", 
+        "updated": "2013-12-18T21:29:29.058Z", 
         "slice": 4, 
-        "deploymentNetwork": 9, 
-        "name": "node31.mpisws.vicci.org", 
-        "created": "2013-12-12T17:55:32.710Z", 
-        "ip": "141.39.220.41", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.101Z", 
+        "amount": 0.2016, 
+        "object": 106, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.88, 
+        "invoice": 72, 
+        "date": "2013-12-15T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 56
-    "model": "core.sliver", 
+    "pk": 60023
+    "model": "core.charge", 
     "fields": {
-        "node": 559, 
-        "instance_name": "instance-000003f8", 
-        "updated": "2013-12-12T17:55:32.726Z", 
+        "updated": "2013-12-18T21:29:03.110Z", 
         "slice": 4, 
-        "deploymentNetwork": 7, 
-        "name": "node36.princeton.vicci.org", 
-        "created": "2013-12-12T17:55:32.726Z", 
-        "ip": "128.112.171.90", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.110Z", 
+        "amount": 0.2408, 
+        "object": 106, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 3.44, 
+        "invoice": null, 
+        "date": "2013-12-16T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 57
-    "model": "core.sliver", 
+    "pk": 60024
+    "model": "core.charge", 
     "fields": {
-        "node": 560, 
-        "instance_name": "instance-000003f9", 
-        "updated": "2013-12-12T17:55:32.743Z", 
+        "updated": "2013-12-18T21:29:03.118Z", 
         "slice": 4, 
-        "deploymentNetwork": 7, 
-        "name": "node37.princeton.vicci.org", 
-        "created": "2013-12-12T17:55:32.743Z", 
-        "ip": "128.112.171.92", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.118Z", 
+        "amount": 0.2184, 
+        "object": 106, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 3.12, 
+        "invoice": null, 
+        "date": "2013-12-16T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58
-    "model": "core.sliver", 
+    "pk": 60025
+    "model": "core.charge", 
     "fields": {
-        "node": 561, 
-        "instance_name": "instance-000003fa", 
-        "updated": "2013-12-12T17:55:32.760Z", 
+        "updated": "2013-12-18T21:29:03.126Z", 
         "slice": 4, 
-        "deploymentNetwork": 7, 
-        "name": "node38.princeton.vicci.org", 
-        "created": "2013-12-12T17:55:32.759Z", 
-        "ip": "128.112.171.94", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.126Z", 
+        "amount": 0.1904, 
+        "object": 106, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 2.72, 
+        "invoice": null, 
+        "date": "2013-12-16T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59
-    "model": "core.sliver", 
+    "pk": 60026
+    "model": "core.charge", 
     "fields": {
-        "node": 562, 
-        "instance_name": "instance-000003fb", 
-        "updated": "2013-12-12T17:55:32.776Z", 
+        "updated": "2013-12-18T21:29:03.134Z", 
         "slice": 4, 
-        "deploymentNetwork": 7, 
-        "name": "node39.princeton.vicci.org", 
-        "created": "2013-12-12T17:55:32.776Z", 
-        "ip": "128.112.171.96", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.134Z", 
+        "amount": 0.2464, 
+        "object": 106, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 3.52, 
+        "invoice": null, 
+        "date": "2013-12-17T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 60, 
-    "model": "core.sliver", 
+    "pk": 60027
+    "model": "core.charge", 
     "fields": {
-        "node": 563, 
-        "instance_name": "instance-000003fc", 
-        "updated": "2013-12-12T17:55:32.792Z", 
+        "updated": "2013-12-18T21:29:03.143Z", 
         "slice": 4, 
-        "deploymentNetwork": 7, 
-        "name": "node40.princeton.vicci.org", 
-        "created": "2013-12-12T17:55:32.792Z", 
-        "ip": "128.112.171.98", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.143Z", 
+        "amount": 0.2408, 
+        "object": 106, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 3.44, 
+        "invoice": null, 
+        "date": "2013-12-17T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 61
-    "model": "core.sliver", 
+    "pk": 60028
+    "model": "core.charge", 
     "fields": {
-        "node": 565, 
-        "instance_name": "instance-000003fd", 
-        "updated": "2013-12-12T17:55:32.809Z", 
+        "updated": "2013-12-18T21:29:03.151Z", 
         "slice": 4, 
-        "deploymentNetwork": 7, 
-        "name": "node42.princeton.vicci.org", 
-        "created": "2013-12-12T17:55:32.809Z", 
-        "ip": "128.112.171.102", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.151Z", 
+        "amount": 0.196, 
+        "object": 106, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 2.8, 
+        "invoice": null, 
+        "date": "2013-12-17T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 62
-    "model": "core.sliver", 
+    "pk": 60029
+    "model": "core.charge", 
     "fields": {
-        "node": 566, 
-        "instance_name": "instance-000003fe", 
-        "updated": "2013-12-12T17:55:32.826Z", 
+        "updated": "2013-12-18T21:29:03.160Z", 
         "slice": 4, 
-        "deploymentNetwork": 7, 
-        "name": "node43.princeton.vicci.org", 
-        "created": "2013-12-12T17:55:32.826Z", 
-        "ip": "128.112.171.104", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.159Z", 
+        "amount": 0.2632, 
+        "object": 106, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 3.76, 
+        "invoice": null, 
+        "date": "2013-12-18T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 63
-    "model": "core.sliver", 
+    "pk": 60030
+    "model": "core.charge", 
     "fields": {
-        "node": 568, 
-        "instance_name": "instance-000003ff", 
-        "updated": "2013-12-12T17:55:32.842Z", 
+        "updated": "2013-12-18T21:29:03.168Z", 
         "slice": 4, 
-        "deploymentNetwork": 7, 
-        "name": "node45.princeton.vicci.org", 
-        "created": "2013-12-12T17:55:32.842Z", 
-        "ip": "128.112.171.108", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.168Z", 
+        "amount": 0.1176, 
+        "object": 106, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 1.68, 
+        "invoice": null, 
+        "date": "2013-12-18T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 64
-    "model": "core.sliver", 
+    "pk": 60031
+    "model": "core.charge", 
     "fields": {
-        "node": 404, 
-        "instance_name": "instance-00000400", 
-        "updated": "2013-12-12T17:55:32.859Z", 
+        "updated": "2013-12-18T21:29:20.219Z", 
         "slice": 4, 
-        "deploymentNetwork": 5, 
-        "name": "node21.stanford.vicci.org", 
-        "created": "2013-12-12T17:55:32.859Z", 
-        "ip": "171.67.92.159", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.183Z", 
+        "amount": 0.112, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.6, 
+        "invoice": 69, 
+        "date": "2013-11-18T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 65
-    "model": "core.sliver", 
+    "pk": 60032
+    "model": "core.charge", 
     "fields": {
-        "node": 405, 
-        "instance_name": "instance-00000401", 
-        "updated": "2013-12-12T17:55:32.875Z", 
+        "updated": "2013-12-18T21:29:20.326Z", 
         "slice": 4, 
-        "deploymentNetwork": 5, 
-        "name": "node22.stanford.vicci.org", 
-        "created": "2013-12-12T17:55:32.875Z", 
-        "ip": "171.67.92.160", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.193Z", 
+        "amount": 0.168, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.4, 
+        "invoice": 69, 
+        "date": "2013-11-19T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 66
-    "model": "core.sliver", 
+    "pk": 60033
+    "model": "core.charge", 
     "fields": {
-        "node": 406, 
-        "instance_name": "instance-00000402", 
-        "updated": "2013-12-12T17:55:32.892Z", 
+        "updated": "2013-12-18T21:29:20.434Z", 
         "slice": 4, 
-        "deploymentNetwork": 5, 
-        "name": "node23.stanford.vicci.org", 
-        "created": "2013-12-12T17:55:32.892Z", 
-        "ip": "171.67.92.161", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.201Z", 
+        "amount": 0.3248, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.64, 
+        "invoice": 69, 
+        "date": "2013-11-19T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 67
-    "model": "core.sliver", 
+    "pk": 60034
+    "model": "core.charge", 
     "fields": {
-        "node": 407, 
-        "instance_name": "instance-00000403", 
-        "updated": "2013-12-12T17:55:32.909Z", 
+        "updated": "2013-12-18T21:29:20.542Z", 
         "slice": 4, 
-        "deploymentNetwork": 5, 
-        "name": "node24.stanford.vicci.org", 
-        "created": "2013-12-12T17:55:32.909Z", 
-        "ip": "171.67.92.162", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.209Z", 
+        "amount": 0.2296, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.28, 
+        "invoice": 69, 
+        "date": "2013-11-19T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 68
-    "model": "core.sliver", 
+    "pk": 60035
+    "model": "core.charge", 
     "fields": {
-        "node": 408, 
-        "instance_name": "instance-00000404", 
-        "updated": "2013-12-12T17:55:32.925Z", 
+        "updated": "2013-12-18T21:29:20.650Z", 
         "slice": 4, 
-        "deploymentNetwork": 5, 
-        "name": "node25.stanford.vicci.org", 
-        "created": "2013-12-12T17:55:32.925Z", 
-        "ip": "171.67.92.163", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.217Z", 
+        "amount": 0.2912, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.16, 
+        "invoice": 69, 
+        "date": "2013-11-20T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 69
-    "model": "core.sliver", 
+    "pk": 60036
+    "model": "core.charge", 
     "fields": {
-        "node": 409, 
-        "instance_name": "instance-00000405", 
-        "updated": "2013-12-12T17:55:32.942Z", 
+        "updated": "2013-12-18T21:29:20.757Z", 
         "slice": 4, 
-        "deploymentNetwork": 5, 
-        "name": "node26.stanford.vicci.org", 
-        "created": "2013-12-12T17:55:32.942Z", 
-        "ip": "171.67.92.164", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.226Z", 
+        "amount": 0.2016, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.88, 
+        "invoice": 69, 
+        "date": "2013-11-20T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 70
-    "model": "core.sliver", 
+    "pk": 60037
+    "model": "core.charge", 
     "fields": {
-        "node": 412, 
-        "instance_name": "instance-00000406", 
-        "updated": "2013-12-12T17:55:32.958Z", 
+        "updated": "2013-12-18T21:29:20.865Z", 
         "slice": 4, 
-        "deploymentNetwork": 5, 
-        "name": "node29.stanford.vicci.org", 
-        "created": "2013-12-12T17:55:32.958Z", 
-        "ip": "171.67.92.167", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.234Z", 
+        "amount": 0.1736, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.48, 
+        "invoice": 69, 
+        "date": "2013-11-20T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 71
-    "model": "core.sliver", 
+    "pk": 60038
+    "model": "core.charge", 
     "fields": {
-        "node": 413, 
-        "instance_name": "instance-00000407", 
-        "updated": "2013-12-12T17:55:32.975Z", 
+        "updated": "2013-12-18T21:29:20.973Z", 
         "slice": 4, 
-        "deploymentNetwork": 5, 
-        "name": "node30.stanford.vicci.org", 
-        "created": "2013-12-12T17:55:32.975Z", 
-        "ip": "171.67.92.168", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.242Z", 
+        "amount": 0.1456, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.08, 
+        "invoice": 69, 
+        "date": "2013-11-21T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 72
-    "model": "core.sliver", 
+    "pk": 60039
+    "model": "core.charge", 
     "fields": {
-        "node": 460, 
-        "instance_name": "instance-00000408", 
-        "updated": "2013-12-12T17:55:32.992Z", 
+        "updated": "2013-12-18T21:29:21.080Z", 
         "slice": 4, 
-        "deploymentNetwork": 6, 
-        "name": "node7.washington.vicci.org", 
-        "created": "2013-12-12T17:55:32.992Z", 
-        "ip": "128.95.1.112", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.251Z", 
+        "amount": 0.1568, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.24, 
+        "invoice": 69, 
+        "date": "2013-11-21T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 73
-    "model": "core.sliver", 
+    "pk": 60040
+    "model": "core.charge", 
     "fields": {
-        "node": 467, 
-        "instance_name": "instance-00000409", 
-        "updated": "2013-12-12T17:55:33.008Z", 
+        "updated": "2013-12-18T21:29:21.188Z", 
         "slice": 4, 
-        "deploymentNetwork": 6, 
-        "name": "node14.washington.vicci.org", 
-        "created": "2013-12-12T17:55:33.008Z", 
-        "ip": "128.95.1.119", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.259Z", 
+        "amount": 0.224, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.2, 
+        "invoice": 69, 
+        "date": "2013-11-21T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 74
-    "model": "core.sliver", 
+    "pk": 60041
+    "model": "core.charge", 
     "fields": {
-        "node": 468, 
-        "instance_name": "instance-0000040a", 
-        "updated": "2013-12-12T17:55:33.025Z", 
+        "updated": "2013-12-18T21:29:21.296Z", 
         "slice": 4, 
-        "deploymentNetwork": 6, 
-        "name": "node15.washington.vicci.org", 
-        "created": "2013-12-12T17:55:33.025Z", 
-        "ip": "128.95.1.120", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.267Z", 
+        "amount": 0.1176, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.68, 
+        "invoice": 69, 
+        "date": "2013-11-22T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 75
-    "model": "core.sliver", 
+    "pk": 60042
+    "model": "core.charge", 
     "fields": {
-        "node": 469, 
-        "instance_name": "instance-0000040b", 
-        "updated": "2013-12-12T17:55:33.041Z", 
+        "updated": "2013-12-18T21:29:21.403Z", 
         "slice": 4, 
-        "deploymentNetwork": 6, 
-        "name": "node16.washington.vicci.org", 
-        "created": "2013-12-12T17:55:33.041Z", 
-        "ip": "128.95.1.121", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.275Z", 
+        "amount": 0.2856, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.08, 
+        "invoice": 69, 
+        "date": "2013-11-22T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 76
-    "model": "core.sliver", 
+    "pk": 60043
+    "model": "core.charge", 
     "fields": {
-        "node": 470, 
-        "instance_name": "instance-0000040c", 
-        "updated": "2013-12-12T17:55:33.058Z", 
+        "updated": "2013-12-18T21:29:21.511Z", 
         "slice": 4, 
-        "deploymentNetwork": 6, 
-        "name": "node17.washington.vicci.org", 
-        "created": "2013-12-12T17:55:33.058Z", 
-        "ip": "128.95.1.122", 
-        "image": 1, 
-        "creator": 8, 
-        "numberCores": 1, 
-        "instance_id": null
+        "created": "2013-12-18T21:29:03.284Z", 
+        "amount": 0.3192, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.56, 
+        "invoice": 69, 
+        "date": "2013-11-22T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 77
-    "model": "core.sliver", 
+    "pk": 60044
+    "model": "core.charge", 
     "fields": {
-        "node": 553
-        "instance_name": "instance-0000040d"
-        "updated": "2013-12-12T17:55:33.110Z", 
-        "slice": 8
-        "deploymentNetwork": 7, 
-        "name": "node30.princeton.vicci.org"
-        "created": "2013-12-12T17:55:33.110Z", 
-        "ip": "128.112.171.78"
-        "image": 1
-        "creator": 8
-        "numberCores": 1
-        "instance_id": null
+        "updated": "2013-12-18T21:29:21.619Z"
+        "slice": 4
+        "created": "2013-12-18T21:29:03.292Z", 
+        "amount": 0.1736
+        "object": 107, 
+        "account": 15
+        "state": "invoiced", 
+        "coreHours": 2.48
+        "invoice": 69
+        "date": "2013-11-23T05:00:00Z"
+        "kind": "besteffort"
+        "enacted": null
     }
 },
 {
-    "pk": 78
-    "model": "core.sliver", 
+    "pk": 60045
+    "model": "core.charge", 
     "fields": {
-        "node": 553
-        "instance_name": "instance-0000040e"
-        "updated": "2013-12-12T17:55:33.142Z", 
-        "slice": 9
-        "deploymentNetwork": 7, 
-        "name": "node30.princeton.vicci.org"
-        "created": "2013-12-12T17:55:33.142Z", 
-        "ip": "128.112.171.78"
-        "image": 1
-        "creator": 8
-        "numberCores": 1
-        "instance_id": null
+        "updated": "2013-12-18T21:29:21.726Z"
+        "slice": 4
+        "created": "2013-12-18T21:29:03.300Z", 
+        "amount": 0.2352
+        "object": 107, 
+        "account": 15
+        "state": "invoiced", 
+        "coreHours": 3.36
+        "invoice": 69
+        "date": "2013-11-23T13:00:00Z"
+        "kind": "besteffort"
+        "enacted": null
     }
 },
 {
-    "pk": 79
-    "model": "core.sliver", 
+    "pk": 60046
+    "model": "core.charge", 
     "fields": {
-        "node": 469
-        "instance_name": null
-        "updated": "2013-12-13T21:51:36.927Z", 
-        "slice": 11
-        "deploymentNetwork": 6
-        "name": "Stork"
-        "created": "2013-12-13T21:51:36.927Z", 
-        "ip": null
-        "image": 1
-        "creator": 8
-        "numberCores": 0
-        "instance_id": null
+        "updated": "2013-12-18T21:29:21.834Z"
+        "slice": 4
+        "created": "2013-12-18T21:29:03.308Z", 
+        "amount": 0.1736
+        "object": 107
+        "account": 15
+        "state": "invoiced", 
+        "coreHours": 2.48
+        "invoice": 69
+        "date": "2013-11-23T21:00:00Z"
+        "kind": "besteffort"
+        "enacted": null
     }
 },
 {
-    "pk": 80
-    "model": "core.sliver", 
+    "pk": 60047
+    "model": "core.charge", 
     "fields": {
-        "node": 438
-        "instance_name": null
-        "updated": "2013-12-13T21:53:35.001Z", 
-        "slice": 12
-        "deploymentNetwork": 5
-        "name": "Owl"
-        "created": "2013-12-13T21:53:35.001Z", 
-        "ip": null
-        "image": 1
-        "creator": 8
-        "numberCores": 0
-        "instance_id": null
+        "updated": "2013-12-18T21:29:21.942Z"
+        "slice": 4
+        "created": "2013-12-18T21:29:03.317Z", 
+        "amount": 0.2128
+        "object": 107
+        "account": 15
+        "state": "invoiced", 
+        "coreHours": 3.04
+        "invoice": 69
+        "date": "2013-11-24T05:00:00Z"
+        "kind": "besteffort"
+        "enacted": null
     }
 },
 {
-    "pk": 81
-    "model": "core.sliver", 
+    "pk": 60048
+    "model": "core.charge", 
     "fields": {
-        "node": 546
-        "instance_name": null
-        "updated": "2013-12-13T21:58:13.897Z", 
-        "slice": 14
-        "deploymentNetwork": 7, 
-        "name": "test-slice-1"
-        "created": "2013-12-13T21:58:13.897Z", 
-        "ip": null
-        "image": 1
-        "creator": 8
-        "numberCores": 0
-        "instance_id": null
+        "updated": "2013-12-18T21:29:22.049Z"
+        "slice": 4
+        "created": "2013-12-18T21:29:03.325Z", 
+        "amount": 0.2968
+        "object": 107, 
+        "account": 15
+        "state": "invoiced", 
+        "coreHours": 4.24
+        "invoice": 69
+        "date": "2013-11-24T13:00:00Z"
+        "kind": "besteffort"
+        "enacted": null
     }
 },
 {
-    "pk": 82
-    "model": "core.sliver", 
+    "pk": 60049
+    "model": "core.charge", 
     "fields": {
-        "node": 538
-        "instance_name": null
-        "updated": "2013-12-13T21:58:44.349Z", 
-        "slice": 14
-        "deploymentNetwork": 7, 
-        "name": "test-slice-1"
-        "created": "2013-12-13T21:58:44.349Z", 
-        "ip": null
-        "image": 1
-        "creator": 8
-        "numberCores": 0
-        "instance_id": null
+        "updated": "2013-12-18T21:29:22.157Z"
+        "slice": 4
+        "created": "2013-12-18T21:29:03.333Z", 
+        "amount": 0.1176
+        "object": 107, 
+        "account": 15
+        "state": "invoiced", 
+        "coreHours": 1.68
+        "invoice": 69
+        "date": "2013-11-24T21:00:00Z"
+        "kind": "besteffort"
+        "enacted": null
     }
 },
 {
-    "pk": 83
-    "model": "core.sliver", 
+    "pk": 60050
+    "model": "core.charge", 
     "fields": {
-        "node": 556
-        "instance_name": null
-        "updated": "2013-12-13T21:58:44.350Z", 
-        "slice": 14
-        "deploymentNetwork": 7, 
-        "name": "test-slice-1"
-        "created": "2013-12-13T21:58:44.350Z", 
-        "ip": null
-        "image": 1
-        "creator": 8
-        "numberCores": 0
-        "instance_id": null
+        "updated": "2013-12-18T21:29:22.273Z"
+        "slice": 4
+        "created": "2013-12-18T21:29:03.342Z", 
+        "amount": 0.1792
+        "object": 107, 
+        "account": 15
+        "state": "invoiced", 
+        "coreHours": 2.56
+        "invoice": 70
+        "date": "2013-11-25T05:00:00Z"
+        "kind": "besteffort"
+        "enacted": null
     }
 },
 {
-    "pk": 84
-    "model": "core.sliver", 
+    "pk": 60051
+    "model": "core.charge", 
     "fields": {
-        "node": 384
-        "instance_name": null
-        "updated": "2013-12-13T21:59:36.723Z", 
-        "slice": 13
-        "deploymentNetwork": 5
-        "name": "Hadoop"
-        "created": "2013-12-13T21:59:36.723Z", 
-        "ip": null
-        "image": 1
-        "creator": 8
-        "numberCores": 0
-        "instance_id": null
+        "updated": "2013-12-18T21:29:22.381Z"
+        "slice": 4
+        "created": "2013-12-18T21:29:03.350Z", 
+        "amount": 0.3304
+        "object": 107
+        "account": 15
+        "state": "invoiced", 
+        "coreHours": 4.72
+        "invoice": 70
+        "date": "2013-11-25T13:00:00Z"
+        "kind": "besteffort"
+        "enacted": null
     }
 },
 {
-    "pk": 85
-    "model": "core.sliver", 
+    "pk": 60052
+    "model": "core.charge", 
     "fields": {
-        "node": 473
-        "instance_name": null
-        "updated": "2013-12-13T21:59:36.725Z", 
-        "slice": 13
-        "deploymentNetwork": 6
-        "name": "Hadoop"
-        "created": "2013-12-13T21:59:36.725Z", 
-        "ip": null
-        "image": 1
-        "creator": 8
-        "numberCores": 0
-        "instance_id": null
+        "updated": "2013-12-18T21:29:22.488Z"
+        "slice": 4
+        "created": "2013-12-18T21:29:03.358Z", 
+        "amount": 0.2912
+        "object": 107
+        "account": 15
+        "state": "invoiced", 
+        "coreHours": 4.16
+        "invoice": 70
+        "date": "2013-11-25T21:00:00Z"
+        "kind": "besteffort"
+        "enacted": null
     }
 },
 {
-    "pk": 86
-    "model": "core.sliver", 
+    "pk": 60053
+    "model": "core.charge", 
     "fields": {
-        "node": 535
-        "instance_name": null
-        "updated": "2013-12-13T21:59:36.726Z", 
-        "slice": 13
-        "deploymentNetwork": 7, 
-        "name": "Hadoop"
-        "created": "2013-12-13T21:59:36.726Z", 
-        "ip": null
-        "image": 1
-        "creator": 8
-        "numberCores": 0
-        "instance_id": null
+        "updated": "2013-12-18T21:29:22.638Z"
+        "slice": 4
+        "created": "2013-12-18T21:29:03.366Z", 
+        "amount": 0.252
+        "object": 107, 
+        "account": 15
+        "state": "invoiced", 
+        "coreHours": 3.6
+        "invoice": 70
+        "date": "2013-11-26T05:00:00Z"
+        "kind": "besteffort"
+        "enacted": null
     }
 },
 {
-    "pk": 87
-    "model": "core.sliver", 
+    "pk": 60054
+    "model": "core.charge", 
     "fields": {
-        "node": 533
-        "instance_name": null
-        "updated": "2013-12-13T22:01:30.192Z", 
-        "slice": 15
-        "deploymentNetwork": 7, 
-        "name": "test-slice-2"
-        "created": "2013-12-13T22:01:30.192Z", 
-        "ip": null
-        "image": 1
-        "creator": 8
-        "numberCores": 0
-        "instance_id": null
+        "updated": "2013-12-18T21:29:22.745Z"
+        "slice": 4
+        "created": "2013-12-18T21:29:03.375Z", 
+        "amount": 0.3024
+        "object": 107, 
+        "account": 15
+        "state": "invoiced", 
+        "coreHours": 4.32
+        "invoice": 70
+        "date": "2013-11-26T13:00:00Z"
+        "kind": "besteffort"
+        "enacted": null
     }
 },
 {
-    "pk": 88
-    "model": "core.sliver", 
+    "pk": 60055
+    "model": "core.charge", 
     "fields": {
-        "node": 536
-        "instance_name": null
-        "updated": "2013-12-13T22:01:49.742Z", 
-        "slice": 15
-        "deploymentNetwork": 7, 
-        "name": "test-slice-2"
-        "created": "2013-12-13T22:01:49.742Z", 
-        "ip": null
-        "image": 1
-        "creator": 8
-        "numberCores": 0
-        "instance_id": null
+        "updated": "2013-12-18T21:29:22.853Z"
+        "slice": 4
+        "created": "2013-12-18T21:29:03.383Z", 
+        "amount": 0.168
+        "object": 107, 
+        "account": 15
+        "state": "invoiced", 
+        "coreHours": 2.4
+        "invoice": 70
+        "date": "2013-11-26T21:00:00Z"
+        "kind": "besteffort"
+        "enacted": null
     }
 },
 {
-    "pk": 1
-    "model": "core.networktemplate", 
+    "pk": 60056
+    "model": "core.charge", 
     "fields": {
-        "guaranteedBandwidth": 0, 
-        "description": "Connect a sliver to the public network using dedicated public IPv4 address", 
-        "created": "2013-12-09T14:15:16.899Z", 
-        "sharedNetworkName": "", 
-        "updated": "2013-12-09T14:15:16.899Z", 
-        "visibility": "private", 
-        "translation": "none", 
-        "sharedNetworkId": "", 
-        "name": "dedicated-public-IPv4"
+        "updated": "2013-12-18T21:29:22.961Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.391Z", 
+        "amount": 0.308, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.4, 
+        "invoice": 70, 
+        "date": "2013-11-27T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 2
-    "model": "core.networktemplate", 
+    "pk": 60057
+    "model": "core.charge", 
     "fields": {
-        "guaranteedBandwidth": 0, 
-        "description": "For PlanetLab compatibility: connect to the public network by sharing the node's public IP address.", 
-        "created": "2013-12-09T14:16:12.358Z", 
-        "sharedNetworkName": "", 
-        "updated": "2013-12-09T14:16:12.358Z", 
-        "visibility": "public", 
-        "translation": "none", 
-        "sharedNetworkId": "", 
-        "name": "planetlab-legacy"
+        "updated": "2013-12-18T21:29:23.068Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.400Z", 
+        "amount": 0.196, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.8, 
+        "invoice": 70, 
+        "date": "2013-11-27T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 3
-    "model": "core.networktemplate", 
+    "pk": 60058
+    "model": "core.charge", 
     "fields": {
-        "guaranteedBandwidth": 0, 
-        "description": "Connect a sliver to the public network via NAT", 
-        "created": "2013-12-09T14:17:29.551Z", 
-        "sharedNetworkName": "nat-net", 
-        "updated": "2013-12-09T14:17:29.551Z", 
-        "visibility": "private", 
-        "translation": "NAT", 
-        "sharedNetworkId": "51d641ba-9e1e-46f5-8069-bf4a929f851f", 
-        "name": "private-IPv4-plus-NAT"
+        "updated": "2013-12-18T21:29:23.176Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.408Z", 
+        "amount": 0.1232, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.76, 
+        "invoice": 70, 
+        "date": "2013-11-27T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 4
-    "model": "core.networktemplate", 
+    "pk": 60059
+    "model": "core.charge", 
     "fields": {
-        "guaranteedBandwidth": 0, 
-        "description": "A private virtual network", 
-        "created": "2013-12-09T14:18:02.336Z", 
-        "sharedNetworkName": "", 
-        "updated": "2013-12-09T14:18:02.336Z", 
-        "visibility": "private", 
-        "translation": "none", 
-        "sharedNetworkId": "", 
-        "name": "private-virtual"
+        "updated": "2013-12-18T21:29:23.284Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.416Z", 
+        "amount": 0.3024, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.32, 
+        "invoice": 70, 
+        "date": "2013-11-28T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 1
-    "model": "core.network", 
+    "pk": 60060
+    "model": "core.charge", 
     "fields": {
-        "router_id": "", 
-        "subnet": "64.57.18.128/28", 
-        "updated": "2013-12-09T14:24:19.970Z", 
-        "subnet_id": "e1796711-5584-4bc1-b09b-45dff8f59f32", 
-        "name": "VINI-I2WashDC-public", 
-        "created": "2013-12-09T14:24:19.970Z", 
-        "permitAllSlices": false, 
-        "permittedSlices": [], 
-        "labels": "public-net", 
-        "guaranteedBandwidth": 0, 
-        "network_id": "7cb4291d-f8d3-4797-83b0-8deefd85bdf5", 
-        "template": 1, 
-        "owner": 10, 
-        "ports": ""
+        "updated": "2013-12-18T21:29:23.391Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.424Z", 
+        "amount": 0.2912, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.16, 
+        "invoice": 70, 
+        "date": "2013-11-28T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 2
-    "model": "core.network", 
+    "pk": 60061
+    "model": "core.charge", 
     "fields": {
-        "router_id": "", 
-        "subnet": "64.57.18.112/28", 
-        "updated": "2013-12-09T14:31:41.605Z", 
-        "subnet_id": "1afdc262-767b-4736-9403-584265293a81", 
-        "name": "VINI-I2Seattle-public", 
-        "created": "2013-12-09T14:31:41.605Z", 
-        "permitAllSlices": false, 
-        "permittedSlices": [], 
-        "labels": "public-net", 
-        "guaranteedBandwidth": 0, 
-        "network_id": "810b4cb8-9d8e-4eee-becc-676785a07725", 
-        "template": 1, 
-        "owner": 10, 
-        "ports": ""
+        "updated": "2013-12-18T21:29:23.499Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.433Z", 
+        "amount": 0.1904, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.72, 
+        "invoice": 70, 
+        "date": "2013-11-28T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 3
-    "model": "core.network", 
+    "pk": 60062
+    "model": "core.charge", 
     "fields": {
-        "router_id": "", 
-        "subnet": "64.57.18.96/28", 
-        "updated": "2013-12-09T14:33:10.312Z", 
-        "subnet_id": "c3582780-76f1-4979-97b0-e27f39f18daa", 
-        "name": "VINI-I2SaltLakeCity-public", 
-        "created": "2013-12-09T14:33:10.312Z", 
-        "permitAllSlices": false, 
-        "permittedSlices": [], 
-        "labels": "public-net", 
-        "guaranteedBandwidth": 0, 
-        "network_id": "4b37f048-11de-4ddd-acaf-2fc5e8716f0e", 
-        "template": 1, 
-        "owner": 10, 
-        "ports": ""
+        "updated": "2013-12-18T21:29:23.607Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.441Z", 
+        "amount": 0.1176, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.68, 
+        "invoice": 70, 
+        "date": "2013-11-29T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 4
-    "model": "core.network", 
+    "pk": 60063
+    "model": "core.charge", 
     "fields": {
-        "router_id": "", 
-        "subnet": "64.57.18.80/28", 
-        "updated": "2013-12-09T14:34:55.754Z", 
-        "subnet_id": "c0d989f2-f42f-4b3e-a23f-a0063ac4f010", 
-        "name": "VINI-I2NewYork-public", 
-        "created": "2013-12-09T14:34:55.754Z", 
-        "permitAllSlices": false, 
-        "permittedSlices": [], 
-        "labels": "public-net", 
-        "guaranteedBandwidth": 0, 
-        "network_id": "684386d7-1286-4e58-acda-8ff45deac99e", 
-        "template": 1, 
-        "owner": 10, 
-        "ports": ""
+        "updated": "2013-12-18T21:29:23.715Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.449Z", 
+        "amount": 0.1456, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.08, 
+        "invoice": 70, 
+        "date": "2013-11-29T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 5
-    "model": "core.network", 
+    "pk": 60064
+    "model": "core.charge", 
     "fields": {
-        "router_id": "", 
-        "subnet": "64.57.18.64/28", 
-        "updated": "2013-12-09T14:36:09.261Z", 
-        "subnet_id": "d37bab1f-7e01-417c-86c4-ea0d69e2f25d", 
-        "name": "VINI-I2LosAngeles-public", 
-        "created": "2013-12-09T14:36:09.261Z", 
-        "permitAllSlices": false, 
-        "permittedSlices": [], 
-        "labels": "public-net", 
-        "guaranteedBandwidth": 0, 
-        "network_id": "fa090174-ec59-4b7a-812b-9206d911fb61", 
-        "template": 1, 
-        "owner": 10, 
-        "ports": ""
+        "updated": "2013-12-18T21:29:23.822Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.457Z", 
+        "amount": 0.3136, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.48, 
+        "invoice": 70, 
+        "date": "2013-11-29T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 6, 
-    "model": "core.network", 
+    "pk": 60065
+    "model": "core.charge", 
     "fields": {
-        "router_id": "", 
-        "subnet": "64.57.18.48/28", 
-        "updated": "2013-12-09T14:37:02.420Z", 
-        "subnet_id": "7caa4cfb-846a-4e4c-9984-8ead4091f816", 
-        "name": "VINI-I2KansasCity-public", 
-        "created": "2013-12-09T14:37:02.420Z", 
-        "permitAllSlices": false, 
-        "permittedSlices": [], 
-        "labels": "public-net", 
-        "guaranteedBandwidth": 0, 
-        "network_id": "017a3914-5eaf-4bcb-8609-6d17ebcdf075", 
-        "template": 1, 
-        "owner": 10, 
-        "ports": ""
+        "updated": "2013-12-18T21:29:23.930Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.466Z", 
+        "amount": 0.308, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.4, 
+        "invoice": 70, 
+        "date": "2013-11-30T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 9
-    "model": "core.network", 
+    "pk": 60066
+    "model": "core.charge", 
     "fields": {
-        "router_id": "", 
-        "subnet": "64.57.18.32/28", 
-        "updated": "2013-12-09T14:41:00.237Z", 
-        "subnet_id": "4438dfbd-099a-4229-bd86-cf29478a009b", 
-        "name": "VINI-I2Houston-public", 
-        "created": "2013-12-09T14:41:00.237Z", 
-        "permitAllSlices": false, 
-        "permittedSlices": [], 
-        "labels": "public-net", 
-        "guaranteedBandwidth": 0, 
-        "network_id": "fdf0e3b1-439b-4673-b56e-d9dfe52b2bb7", 
-        "template": 1, 
-        "owner": 10, 
-        "ports": ""
+        "updated": "2013-12-18T21:29:24.038Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.474Z", 
+        "amount": 0.252, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.6, 
+        "invoice": 70, 
+        "date": "2013-11-30T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 10
-    "model": "core.network", 
+    "pk": 60067
+    "model": "core.charge", 
     "fields": {
-        "router_id": "", 
-        "subnet": "64.57.18.16/28", 
-        "updated": "2013-12-09T14:42:03.158Z", 
-        "subnet_id": "332113b1-e6f4-492e-ad93-ce21512d3459", 
-        "name": "VINI-I2Chicago-public", 
-        "created": "2013-12-09T14:42:03.158Z", 
-        "permitAllSlices": false, 
-        "permittedSlices": [], 
-        "labels": "public-net", 
-        "guaranteedBandwidth": 0, 
-        "network_id": "ecdbaf66-b659-4d59-b0b7-1bf6d232ccba", 
-        "template": 1, 
-        "owner": 10, 
-        "ports": ""
+        "updated": "2013-12-18T21:29:24.145Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.482Z", 
+        "amount": 0.2856, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.08, 
+        "invoice": 70, 
+        "date": "2013-11-30T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 11
-    "model": "core.network", 
+    "pk": 60068
+    "model": "core.charge", 
     "fields": {
-        "router_id": "", 
-        "subnet": "64.57.18.0/28", 
-        "updated": "2013-12-09T14:42:49.781Z", 
-        "subnet_id": "dafefd4f-2622-4987-9f30-94e9a977cfc3", 
-        "name": "VINI-I2Atlanta-public", 
-        "created": "2013-12-09T14:42:49.781Z", 
-        "permitAllSlices": false, 
-        "permittedSlices": [], 
-        "labels": "public-net", 
-        "guaranteedBandwidth": 0, 
-        "network_id": "ae4d42e8-a97c-440d-9533-4bcbd62dfb00", 
-        "template": 1, 
-        "owner": 10, 
-        "ports": ""
+        "updated": "2013-12-18T21:29:24.253Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.491Z", 
+        "amount": 0.1624, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.32, 
+        "invoice": 70, 
+        "date": "2013-12-01T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 12
-    "model": "core.network", 
+    "pk": 60069
+    "model": "core.charge", 
     "fields": {
-        "router_id": "", 
-        "subnet": "", 
-        "updated": "2013-12-13T21:51:04.425Z", 
-        "subnet_id": "", 
-        "name": "Stork package distribution", 
-        "created": "2013-12-13T21:51:04.425Z", 
-        "permitAllSlices": true, 
-        "permittedSlices": [], 
-        "labels": "", 
-        "guaranteedBandwidth": 0, 
-        "network_id": "", 
-        "template": 4, 
-        "owner": 11, 
-        "ports": ""
+        "updated": "2013-12-18T21:29:24.361Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.499Z", 
+        "amount": 0.3304, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.72, 
+        "invoice": 70, 
+        "date": "2013-12-01T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 13
-    "model": "core.network", 
+    "pk": 60070
+    "model": "core.charge", 
     "fields": {
-        "router_id": "", 
-        "subnet": "", 
-        "updated": "2013-12-13T21:53:07.783Z", 
-        "subnet_id": "", 
-        "name": "Owl Data Collection", 
-        "created": "2013-12-13T21:53:07.783Z", 
-        "permitAllSlices": true, 
-        "permittedSlices": [], 
-        "labels": "", 
-        "guaranteedBandwidth": 0, 
-        "network_id": "", 
-        "template": 4, 
-        "owner": 12, 
-        "ports": ""
+        "updated": "2013-12-18T21:29:24.468Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.507Z", 
+        "amount": 0.168, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.4, 
+        "invoice": 70, 
+        "date": "2013-12-01T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 14
-    "model": "core.network", 
+    "pk": 60071
+    "model": "core.charge", 
     "fields": {
-        "router_id": "", 
-        "subnet": "", 
-        "updated": "2013-12-13T21:55:51.703Z", 
-        "subnet_id": "", 
-        "name": "Hadoop Shared Filesystem Access", 
-        "created": "2013-12-13T21:55:51.703Z", 
-        "permitAllSlices": true, 
-        "permittedSlices": [], 
-        "labels": "", 
-        "guaranteedBandwidth": 0, 
-        "network_id": "", 
-        "template": 4, 
-        "owner": 13, 
-        "ports": ""
+        "updated": "2013-12-18T21:29:24.584Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.516Z", 
+        "amount": 0.168, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.4, 
+        "invoice": 71, 
+        "date": "2013-12-02T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 15, 
-    "model": "core.network", 
-    "fields": {
-        "router_id": "", 
-        "subnet": "", 
-        "updated": "2013-12-13T21:57:38.995Z", 
-        "subnet_id": "", 
-        "name": "test-1-public", 
-        "created": "2013-12-13T21:57:38.995Z", 
-        "permitAllSlices": false, 
-        "permittedSlices": [], 
-        "labels": "", 
-        "guaranteedBandwidth": 0, 
-        "network_id": "", 
-        "template": 1, 
-        "owner": 14, 
-        "ports": ""
+    "pk": 60072, 
+    "model": "core.charge", 
+    "fields": {
+        "updated": "2013-12-18T21:29:24.692Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.524Z", 
+        "amount": 0.28, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.0, 
+        "invoice": 71, 
+        "date": "2013-12-02T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 16
-    "model": "core.network", 
+    "pk": 60073
+    "model": "core.charge", 
     "fields": {
-        "router_id": "", 
-        "subnet": "", 
-        "updated": "2013-12-13T22:00:40.549Z", 
-        "subnet_id": "", 
-        "name": "test-slice-2-nat", 
-        "created": "2013-12-13T22:00:40.549Z", 
-        "permitAllSlices": false, 
-        "permittedSlices": [], 
-        "labels": "", 
-        "guaranteedBandwidth": 0, 
-        "network_id": "", 
-        "template": 3, 
-        "owner": 15, 
-        "ports": ""
+        "updated": "2013-12-18T21:29:24.800Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.532Z", 
+        "amount": 0.2856, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.08, 
+        "invoice": 71, 
+        "date": "2013-12-02T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 1
-    "model": "core.networkslice", 
+    "pk": 60074
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T21:51:09.711Z", 
-        "slice": 11, 
-        "network": 12, 
-        "created": "2013-12-13T21:51:09.711Z"
+        "updated": "2013-12-18T21:29:24.907Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.541Z", 
+        "amount": 0.3024, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.32, 
+        "invoice": 71, 
+        "date": "2013-12-03T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 2
-    "model": "core.networkslice", 
+    "pk": 60075
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T21:53:15.909Z", 
-        "slice": 12, 
-        "network": 13, 
-        "created": "2013-12-13T21:53:15.909Z"
+        "updated": "2013-12-18T21:29:25.015Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.549Z", 
+        "amount": 0.2296, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.28, 
+        "invoice": 71, 
+        "date": "2013-12-03T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 3
-    "model": "core.networkslice", 
+    "pk": 60076
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T21:53:15.914Z", 
-        "slice": 12, 
-        "network": 12, 
-        "created": "2013-12-13T21:53:15.914Z"
+        "updated": "2013-12-18T21:29:25.123Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.557Z", 
+        "amount": 0.3304, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.72, 
+        "invoice": 71, 
+        "date": "2013-12-03T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 4
-    "model": "core.networkslice", 
+    "pk": 60077
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T21:56:04.235Z", 
-        "slice": 13, 
-        "network": 14, 
-        "created": "2013-12-13T21:56:04.235Z"
+        "updated": "2013-12-18T21:29:25.231Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.565Z", 
+        "amount": 0.1792, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.56, 
+        "invoice": 71, 
+        "date": "2013-12-04T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 5
-    "model": "core.networkslice", 
+    "pk": 60078
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T21:56:04.241Z", 
-        "slice": 13, 
-        "network": 12, 
-        "created": "2013-12-13T21:56:04.241Z"
+        "updated": "2013-12-18T21:29:25.338Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.574Z", 
+        "amount": 0.2912, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.16, 
+        "invoice": 71, 
+        "date": "2013-12-04T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 6, 
-    "model": "core.networkslice", 
+    "pk": 60079
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T21:56:04.246Z", 
-        "slice": 13, 
-        "network": 13, 
-        "created": "2013-12-13T21:56:04.246Z"
+        "updated": "2013-12-18T21:29:25.446Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.582Z", 
+        "amount": 0.2128, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.04, 
+        "invoice": 71, 
+        "date": "2013-12-04T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 7
-    "model": "core.networkslice", 
+    "pk": 60080
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T21:57:56.826Z", 
-        "slice": 14, 
-        "network": 15, 
-        "created": "2013-12-13T21:57:56.826Z"
+        "updated": "2013-12-18T21:29:25.554Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.590Z", 
+        "amount": 0.1456, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.08, 
+        "invoice": 71, 
+        "date": "2013-12-05T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 8
-    "model": "core.networkslice", 
+    "pk": 60081
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T21:57:56.831Z", 
-        "slice": 14, 
-        "network": 13, 
-        "created": "2013-12-13T21:57:56.831Z"
+        "updated": "2013-12-18T21:29:25.661Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.598Z", 
+        "amount": 0.112, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.6, 
+        "invoice": 71, 
+        "date": "2013-12-05T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 9
-    "model": "core.networkslice", 
+    "pk": 60082
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T21:57:56.836Z", 
-        "slice": 14, 
-        "network": 12, 
-        "created": "2013-12-13T21:57:56.836Z"
+        "updated": "2013-12-18T21:29:25.769Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.607Z", 
+        "amount": 0.28, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.0, 
+        "invoice": 71, 
+        "date": "2013-12-05T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 10
-    "model": "core.networkslice", 
+    "pk": 60083
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:01:14.038Z", 
-        "slice": 15, 
-        "network": 16, 
-        "created": "2013-12-13T22:01:14.038Z"
+        "updated": "2013-12-18T21:29:25.877Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.615Z", 
+        "amount": 0.112, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.6, 
+        "invoice": 71, 
+        "date": "2013-12-06T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 11
-    "model": "core.networkslice", 
+    "pk": 60084
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:01:14.043Z", 
-        "slice": 15, 
-        "network": 14, 
-        "created": "2013-12-13T22:01:14.043Z"
+        "updated": "2013-12-18T21:29:25.984Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.623Z", 
+        "amount": 0.224, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.2, 
+        "invoice": 71, 
+        "date": "2013-12-06T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 1
-    "model": "core.networkparametertype", 
+    "pk": 60085
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-09T14:43:25.664Z", 
-        "description": "End of IPv4 address allocation pool", 
-        "name": "allocation-pool-end", 
-        "created": "2013-12-09T14:43:25.664Z"
+        "updated": "2013-12-18T21:29:26.092Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.631Z", 
+        "amount": 0.1344, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.92, 
+        "invoice": 71, 
+        "date": "2013-12-06T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 2
-    "model": "core.networkparametertype", 
+    "pk": 60086
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-09T14:43:45.564Z", 
-        "description": "Start of IPv4 address allocation pool", 
-        "name": "allocation-pool-start", 
-        "created": "2013-12-09T14:43:45.564Z"
+        "updated": "2013-12-18T21:29:26.200Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.640Z", 
+        "amount": 0.2968, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.24, 
+        "invoice": 71, 
+        "date": "2013-12-07T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 3
-    "model": "core.networkparametertype", 
+    "pk": 60087
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-09T14:44:05.513Z", 
-        "description": "CIDR block for network", 
-        "name": "cidr", 
-        "created": "2013-12-09T14:44:05.513Z"
+        "updated": "2013-12-18T21:29:26.307Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.648Z", 
+        "amount": 0.3304, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.72, 
+        "invoice": 71, 
+        "date": "2013-12-07T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 12
-    "model": "core.account", 
+    "pk": 60088
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:42.679Z", 
-        "site": 10, 
-        "created": "2013-12-13T22:19:42.679Z"
+        "updated": "2013-12-18T21:29:26.415Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.657Z", 
+        "amount": 0.3192, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.56, 
+        "invoice": 71, 
+        "date": "2013-12-07T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 13
-    "model": "core.account", 
+    "pk": 60089
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:42.705Z", 
-        "site": 22, 
-        "created": "2013-12-13T22:19:42.705Z"
+        "updated": "2013-12-18T21:29:26.523Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.665Z", 
+        "amount": 0.336, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.8, 
+        "invoice": 71, 
+        "date": "2013-12-08T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 53
-    "model": "core.invoice", 
+    "pk": 60090
+    "model": "core.charge", 
     "fields": {
-        "date": "2013-11-13T22:00:00Z", 
-        "updated": "2013-12-13T22:19:55.029Z", 
-        "account": 12, 
-        "created": "2013-12-13T22:19:55.029Z"
+        "updated": "2013-12-18T21:29:26.630Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.673Z", 
+        "amount": 0.308, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.4, 
+        "invoice": 71, 
+        "date": "2013-12-08T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 54
-    "model": "core.invoice", 
+    "pk": 60091
+    "model": "core.charge", 
     "fields": {
-        "date": "2013-11-17T22:00:00Z", 
-        "updated": "2013-12-13T22:19:55.041Z", 
-        "account": 12, 
-        "created": "2013-12-13T22:19:55.041Z"
+        "updated": "2013-12-18T21:29:26.738Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.681Z", 
+        "amount": 0.1288, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.84, 
+        "invoice": 71, 
+        "date": "2013-12-08T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 55
-    "model": "core.invoice", 
+    "pk": 60092
+    "model": "core.charge", 
     "fields": {
-        "date": "2013-11-24T22:00:00Z", 
-        "updated": "2013-12-13T22:19:55.604Z", 
-        "account": 12, 
-        "created": "2013-12-13T22:19:55.604Z"
+        "updated": "2013-12-18T21:29:26.854Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.690Z", 
+        "amount": 0.2632, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.76, 
+        "invoice": 72, 
+        "date": "2013-12-09T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 56
-    "model": "core.invoice", 
+    "pk": 60093
+    "model": "core.charge", 
     "fields": {
-        "date": "2013-12-01T22:00:00Z", 
-        "updated": "2013-12-13T22:19:56.482Z", 
-        "account": 12, 
-        "created": "2013-12-13T22:19:56.482Z"
+        "updated": "2013-12-18T21:29:26.962Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.698Z", 
+        "amount": 0.2184, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.12, 
+        "invoice": 72, 
+        "date": "2013-12-09T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 57
-    "model": "core.invoice", 
+    "pk": 60094
+    "model": "core.charge", 
     "fields": {
-        "date": "2013-12-08T22:00:00Z", 
-        "updated": "2013-12-13T22:19:57.362Z", 
-        "account": 12, 
-        "created": "2013-12-13T22:19:57.362Z"
+        "updated": "2013-12-18T21:29:27.069Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.706Z", 
+        "amount": 0.1904, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.72, 
+        "invoice": 72, 
+        "date": "2013-12-09T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58
-    "model": "core.invoice", 
+    "pk": 60095
+    "model": "core.charge", 
     "fields": {
-        "date": "2013-11-13T22:00:00Z", 
-        "updated": "2013-12-13T22:19:58.399Z", 
-        "account": 13, 
-        "created": "2013-12-13T22:19:58.399Z"
+        "updated": "2013-12-18T21:29:27.177Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.714Z", 
+        "amount": 0.168, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.4, 
+        "invoice": 72, 
+        "date": "2013-12-10T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59
-    "model": "core.invoice", 
+    "pk": 60096
+    "model": "core.charge", 
     "fields": {
-        "date": "2013-11-17T22:00:00Z", 
-        "updated": "2013-12-13T22:19:58.414Z", 
-        "account": 13, 
-        "created": "2013-12-13T22:19:58.414Z"
+        "updated": "2013-12-18T21:29:27.285Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.723Z", 
+        "amount": 0.2464, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.52, 
+        "invoice": 72, 
+        "date": "2013-12-10T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 60, 
-    "model": "core.invoice", 
+    "pk": 60097
+    "model": "core.charge", 
     "fields": {
-        "date": "2013-11-24T22:00:00Z", 
-        "updated": "2013-12-13T22:19:59.616Z", 
-        "account": 13, 
-        "created": "2013-12-13T22:19:59.616Z"
+        "updated": "2013-12-18T21:29:27.393Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.731Z", 
+        "amount": 0.2184, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.12, 
+        "invoice": 72, 
+        "date": "2013-12-10T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 61
-    "model": "core.invoice", 
+    "pk": 60098
+    "model": "core.charge", 
     "fields": {
-        "date": "2013-12-01T22:00:00Z", 
-        "updated": "2013-12-13T22:20:01.950Z", 
-        "account": 13, 
-        "created": "2013-12-13T22:20:01.950Z"
+        "updated": "2013-12-18T21:29:27.500Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.739Z", 
+        "amount": 0.1736, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.48, 
+        "invoice": 72, 
+        "date": "2013-12-11T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 62
-    "model": "core.invoice", 
+    "pk": 60099
+    "model": "core.charge", 
     "fields": {
-        "date": "2013-12-08T22:00:00Z", 
-        "updated": "2013-12-13T22:20:03.878Z", 
-        "account": 13, 
-        "created": "2013-12-13T22:20:03.878Z"
+        "updated": "2013-12-18T21:29:27.666Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.748Z", 
+        "amount": 0.1456, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.08, 
+        "invoice": 72, 
+        "date": "2013-12-11T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 89
-    "model": "core.usableobject", 
+    "pk": 60100
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:42.730Z", 
-        "name": "node20.gt.vicci.org", 
-        "created": "2013-12-13T22:19:42.730Z"
+        "updated": "2013-12-18T21:29:27.774Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.756Z", 
+        "amount": 0.1512, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.16, 
+        "invoice": 72, 
+        "date": "2013-12-11T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 90
-    "model": "core.usableobject", 
+    "pk": 60101
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:43.483Z", 
-        "name": "node22.gt.vicci.org", 
-        "created": "2013-12-13T22:19:43.483Z"
+        "updated": "2013-12-18T21:29:27.881Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.764Z", 
+        "amount": 0.3304, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.72, 
+        "invoice": 72, 
+        "date": "2013-12-12T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 91
-    "model": "core.usableobject", 
+    "pk": 60102
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.237Z", 
-        "name": "node24.gt.vicci.org", 
-        "created": "2013-12-13T22:19:44.237Z"
+        "updated": "2013-12-18T21:29:27.989Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.773Z", 
+        "amount": 0.168, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.4, 
+        "invoice": 72, 
+        "date": "2013-12-12T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 92
-    "model": "core.usableobject", 
+    "pk": 60103
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.992Z", 
-        "name": "node29.gt.vicci.org", 
-        "created": "2013-12-13T22:19:44.992Z"
+        "updated": "2013-12-18T21:29:28.097Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.781Z", 
+        "amount": 0.3024, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.32, 
+        "invoice": 72, 
+        "date": "2013-12-12T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 93
-    "model": "core.usableobject", 
+    "pk": 60104
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:45.806Z", 
-        "name": "node30.princeton.vicci.org", 
-        "created": "2013-12-13T22:19:45.806Z"
+        "updated": "2013-12-18T21:29:28.204Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.789Z", 
+        "amount": 0.2856, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.08, 
+        "invoice": 72, 
+        "date": "2013-12-13T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 94
-    "model": "core.usableobject", 
+    "pk": 60105
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:47.339Z", 
-        "name": "node16.washington.vicci.org", 
-        "created": "2013-12-13T22:19:47.339Z"
+        "updated": "2013-12-18T21:29:28.312Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.797Z", 
+        "amount": 0.2856, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.08, 
+        "invoice": 72, 
+        "date": "2013-12-13T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 95
-    "model": "core.usableobject", 
+    "pk": 60106
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.112Z", 
-        "name": "node55.stanford.vicci.org", 
-        "created": "2013-12-13T22:19:48.112Z"
+        "updated": "2013-12-18T21:29:28.420Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.806Z", 
+        "amount": 0.1232, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.76, 
+        "invoice": 72, 
+        "date": "2013-12-13T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 96
-    "model": "core.usableobject", 
+    "pk": 60107
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.875Z", 
-        "name": "node23.princeton.vicci.org", 
-        "created": "2013-12-13T22:19:48.875Z"
+        "updated": "2013-12-18T21:29:28.527Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.814Z", 
+        "amount": 0.2632, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.76, 
+        "invoice": 72, 
+        "date": "2013-12-14T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 97
-    "model": "core.usableobject", 
+    "pk": 60108
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:49.635Z", 
-        "name": "node15.princeton.vicci.org", 
-        "created": "2013-12-13T22:19:49.634Z"
+        "updated": "2013-12-18T21:29:28.635Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.822Z", 
+        "amount": 0.196, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.8, 
+        "invoice": 72, 
+        "date": "2013-12-14T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 98
-    "model": "core.usableobject", 
+    "pk": 60109
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:50.389Z", 
-        "name": "node33.princeton.vicci.org", 
-        "created": "2013-12-13T22:19:50.389Z"
+        "updated": "2013-12-18T21:29:28.743Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.830Z", 
+        "amount": 0.1344, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.92, 
+        "invoice": 72, 
+        "date": "2013-12-14T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 99
-    "model": "core.usableobject", 
+    "pk": 60110
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.178Z", 
-        "name": "node1.stanford.vicci.org", 
-        "created": "2013-12-13T22:19:51.178Z"
+        "updated": "2013-12-18T21:29:28.851Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.839Z", 
+        "amount": 0.2352, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.36, 
+        "invoice": 72, 
+        "date": "2013-12-15T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 100
-    "model": "core.usableobject", 
+    "pk": 60111
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.938Z", 
-        "name": "node20.washington.vicci.org", 
-        "created": "2013-12-13T22:19:51.938Z"
+        "updated": "2013-12-18T21:29:28.958Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.847Z", 
+        "amount": 0.2632, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.76, 
+        "invoice": 72, 
+        "date": "2013-12-15T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 101
-    "model": "core.usableobject", 
+    "pk": 60112
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:52.691Z", 
-        "name": "node12.princeton.vicci.org", 
-        "created": "2013-12-13T22:19:52.691Z"
+        "updated": "2013-12-18T21:29:29.066Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.855Z", 
+        "amount": 0.2128, 
+        "object": 107, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.04, 
+        "invoice": 72, 
+        "date": "2013-12-15T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 102
-    "model": "core.usableobject", 
+    "pk": 60113
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:53.456Z", 
-        "name": "node10.princeton.vicci.org", 
-        "created": "2013-12-13T22:19:53.456Z"
+        "updated": "2013-12-18T21:29:03.864Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.864Z", 
+        "amount": 0.14, 
+        "object": 107, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 2.0, 
+        "invoice": null, 
+        "date": "2013-12-16T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 103
-    "model": "core.usableobject", 
+    "pk": 60114
+    "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.216Z", 
-        "name": "node13.princeton.vicci.org", 
-        "created": "2013-12-13T22:19:54.216Z"
+        "updated": "2013-12-18T21:29:03.872Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.872Z", 
+        "amount": 0.252, 
+        "object": 107, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 3.6, 
+        "invoice": null, 
+        "date": "2013-12-16T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 31
-    "model": "core.payment", 
+    "pk": 60115
+    "model": "core.charge", 
     "fields": {
-        "date": "2013-11-28T03:00:00Z", 
-        "amount": 0.1176, 
-        "updated": "2013-12-13T22:19:58.245Z", 
-        "account": 12, 
-        "created": "2013-12-13T22:19:58.245Z"
+        "updated": "2013-12-18T21:29:03.880Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.880Z", 
+        "amount": 0.28, 
+        "object": 107, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 4.0, 
+        "invoice": null, 
+        "date": "2013-12-16T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 32
-    "model": "core.payment", 
+    "pk": 60116
+    "model": "core.charge", 
     "fields": {
-        "date": "2013-12-02T03:00:00Z", 
-        "amount": 14.9968, 
-        "updated": "2013-12-13T22:19:58.251Z", 
-        "account": 12, 
-        "created": "2013-12-13T22:19:58.251Z"
+        "updated": "2013-12-18T21:29:03.888Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.888Z", 
+        "amount": 0.1624, 
+        "object": 107, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 2.32, 
+        "invoice": null, 
+        "date": "2013-12-17T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 33
-    "model": "core.payment", 
+    "pk": 60117
+    "model": "core.charge", 
     "fields": {
-        "date": "2013-12-09T03:00:00Z", 
-        "amount": 24.8248, 
-        "updated": "2013-12-13T22:19:58.259Z", 
-        "account": 12, 
-        "created": "2013-12-13T22:19:58.259Z"
+        "updated": "2013-12-18T21:29:03.897Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.897Z", 
+        "amount": 0.2744, 
+        "object": 107, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 3.92, 
+        "invoice": null, 
+        "date": "2013-12-17T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 34
-    "model": "core.payment", 
+    "pk": 60118
+    "model": "core.charge", 
     "fields": {
-        "date": "2013-11-28T03:00:00Z", 
-        "amount": 0.56, 
-        "updated": "2013-12-13T22:20:05.812Z", 
-        "account": 13, 
-        "created": "2013-12-13T22:20:05.812Z"
+        "updated": "2013-12-18T21:29:03.905Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.905Z", 
+        "amount": 0.28, 
+        "object": 107, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 4.0, 
+        "invoice": null, 
+        "date": "2013-12-17T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 35
-    "model": "core.payment", 
+    "pk": 60119
+    "model": "core.charge", 
     "fields": {
-        "date": "2013-12-02T03:00:00Z", 
-        "amount": 53.9224, 
-        "updated": "2013-12-13T22:20:05.825Z", 
-        "account": 13, 
-        "created": "2013-12-13T22:20:05.825Z"
+        "updated": "2013-12-18T21:29:03.913Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.913Z", 
+        "amount": 0.2408, 
+        "object": 107, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 3.44, 
+        "invoice": null, 
+        "date": "2013-12-18T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 36
-    "model": "core.payment", 
+    "pk": 60120
+    "model": "core.charge", 
     "fields": {
-        "date": "2013-12-09T03:00:00Z", 
-        "amount": 86.436, 
-        "updated": "2013-12-13T22:20:05.834Z", 
-        "account": 13, 
-        "created": "2013-12-13T22:20:05.834Z"
+        "updated": "2013-12-18T21:29:03.921Z", 
+        "slice": 4, 
+        "created": "2013-12-18T21:29:03.921Z", 
+        "amount": 0.308, 
+        "object": 107, 
+        "account": 15, 
+        "state": "pending", 
+        "coreHours": 4.4, 
+        "invoice": null, 
+        "date": "2013-12-18T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58321, 
+    "pk": 60121, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.498Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.734Z", 
-        "amount": 0.3248, 
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:20.227Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:03.953Z", 
+        "amount": 0.2968, 
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.64, 
-        "invoice": 59, 
-        "date": "2013-11-13T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.24, 
+        "invoice": 69, 
+        "date": "2013-11-18T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58322, 
+    "pk": 60122, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.590Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.744Z", 
-        "amount": 0.2464
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:20.335Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:03.963Z", 
+        "amount": 0.196
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 59, 
-        "date": "2013-11-14T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 69, 
+        "date": "2013-11-19T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58323, 
+    "pk": 60123, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.681Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.752Z", 
-        "amount": 0.3136
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:20.442Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:03.971Z", 
+        "amount": 0.1232
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.48, 
-        "invoice": 59, 
-        "date": "2013-11-14T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.76, 
+        "invoice": 69, 
+        "date": "2013-11-19T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58324, 
+    "pk": 60124, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.772Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.760Z", 
-        "amount": 0.2576
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:20.550Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:03.979Z", 
+        "amount": 0.308
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.68, 
-        "invoice": 59, 
-        "date": "2013-11-14T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.4, 
+        "invoice": 69, 
+        "date": "2013-11-19T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58325, 
+    "pk": 60125, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.863Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.769Z", 
-        "amount": 0.2912
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:20.658Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:03.988Z", 
+        "amount": 0.2464
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 59, 
-        "date": "2013-11-15T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.52, 
+        "invoice": 69, 
+        "date": "2013-11-20T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58326, 
+    "pk": 60126, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.971Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.777Z", 
-        "amount": 0.3136, 
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:20.765Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:03.996Z", 
+        "amount": 0.196, 
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.48, 
-        "invoice": 59, 
-        "date": "2013-11-15T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 69, 
+        "date": "2013-11-20T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58327, 
+    "pk": 60127, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.062Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.785Z", 
-        "amount": 0.14, 
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:20.873Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.004Z", 
+        "amount": 0.2464, 
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.0, 
-        "invoice": 59, 
-        "date": "2013-11-15T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.52, 
+        "invoice": 69, 
+        "date": "2013-11-20T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58328, 
+    "pk": 60128, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.154Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.794Z", 
-        "amount": 0.224
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:20.981Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.013Z", 
+        "amount": 0.1736
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 59, 
-        "date": "2013-11-16T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.48, 
+        "invoice": 69, 
+        "date": "2013-11-21T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58329, 
+    "pk": 60129, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.245Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.802Z", 
-        "amount": 0.224
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:21.088Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.021Z", 
+        "amount": 0.2968
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 59, 
-        "date": "2013-11-16T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.24, 
+        "invoice": 69, 
+        "date": "2013-11-21T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58330, 
+    "pk": 60130, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.336Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.810Z", 
-        "amount": 0.2912
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:21.196Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.029Z", 
+        "amount": 0.1568
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 59, 
-        "date": "2013-11-16T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.24, 
+        "invoice": 69, 
+        "date": "2013-11-21T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58331, 
+    "pk": 60131, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.427Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.818Z", 
-        "amount": 0.1288
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:21.304Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.037Z", 
+        "amount": 0.3136
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.84, 
-        "invoice": 59, 
-        "date": "2013-11-17T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.48, 
+        "invoice": 69, 
+        "date": "2013-11-22T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58332, 
+    "pk": 60132, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.518Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.827Z", 
-        "amount": 0.3024
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:21.412Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.046Z", 
+        "amount": 0.1456
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.32, 
-        "invoice": 59, 
-        "date": "2013-11-17T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 69, 
+        "date": "2013-11-22T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58333, 
+    "pk": 60133, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.609Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.835Z", 
-        "amount": 0.1456
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:21.519Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.054Z", 
+        "amount": 0.1288
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.08, 
-        "invoice": 59, 
-        "date": "2013-11-17T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.84, 
+        "invoice": 69, 
+        "date": "2013-11-22T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58334, 
+    "pk": 60134, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.720Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.843Z", 
-        "amount": 0.1792
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:21.627Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.062Z", 
+        "amount": 0.1456
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.56, 
-        "invoice": 60, 
-        "date": "2013-11-18T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 69, 
+        "date": "2013-11-23T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58335, 
+    "pk": 60135, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.812Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.852Z", 
-        "amount": 0.1512
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:21.735Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.071Z", 
+        "amount": 0.2128
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.16, 
-        "invoice": 60, 
-        "date": "2013-11-18T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.04, 
+        "invoice": 69, 
+        "date": "2013-11-23T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58336, 
+    "pk": 60136, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.903Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.860Z", 
-        "amount": 0.168
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:21.842Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.079Z", 
+        "amount": 0.2856
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.4, 
-        "invoice": 60, 
-        "date": "2013-11-18T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.08, 
+        "invoice": 69, 
+        "date": "2013-11-23T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58337, 
+    "pk": 60137, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.994Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.868Z", 
-        "amount": 0.1736
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:21.950Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.087Z", 
+        "amount": 0.2464
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.48, 
-        "invoice": 60, 
-        "date": "2013-11-19T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.52, 
+        "invoice": 69, 
+        "date": "2013-11-24T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58338, 
+    "pk": 60138, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.085Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.876Z", 
-        "amount": 0.2184, 
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:22.058Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.095Z", 
+        "amount": 0.2744, 
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.12, 
-        "invoice": 60, 
-        "date": "2013-11-19T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.92, 
+        "invoice": 69, 
+        "date": "2013-11-24T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58339, 
+    "pk": 60139, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.176Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.885Z", 
-        "amount": 0.3192, 
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:22.166Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.104Z", 
+        "amount": 0.2912, 
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.56, 
-        "invoice": 60, 
-        "date": "2013-11-19T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.16, 
+        "invoice": 69, 
+        "date": "2013-11-24T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58340, 
+    "pk": 60140, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.267Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.893Z", 
-        "amount": 0.1288
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:22.281Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.112Z", 
+        "amount": 0.2464
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.84, 
-        "invoice": 60, 
-        "date": "2013-11-20T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.52, 
+        "invoice": 70, 
+        "date": "2013-11-25T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58341, 
+    "pk": 60141, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.358Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.901Z", 
-        "amount": 0.224, 
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:22.389Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.120Z", 
+        "amount": 0.2464, 
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 60, 
-        "date": "2013-11-20T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.52, 
+        "invoice": 70, 
+        "date": "2013-11-25T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58342, 
+    "pk": 60142, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.452Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.910Z", 
+        "updated": "2013-12-18T21:29:22.497Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.129Z", 
         "amount": 0.1736, 
-        "object": 89
-        "account": 13
+        "object": 108
+        "account": 15
         "state": "invoiced", 
         "coreHours": 2.48, 
-        "invoice": 60, 
-        "date": "2013-11-20T22:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 70, 
+        "date": "2013-11-25T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58343, 
+    "pk": 60143, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.543Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.918Z", 
-        "amount": 0.224
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:22.646Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.137Z", 
+        "amount": 0.1456
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 60, 
-        "date": "2013-11-21T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 70, 
+        "date": "2013-11-26T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58344, 
+    "pk": 60144, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.651Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.926Z", 
-        "amount": 0.1344
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:22.754Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.145Z", 
+        "amount": 0.1568
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.92, 
-        "invoice": 60, 
-        "date": "2013-11-21T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.24, 
+        "invoice": 70, 
+        "date": "2013-11-26T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58345, 
+    "pk": 60145, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.742Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.934Z", 
+        "updated": "2013-12-18T21:29:22.861Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.154Z", 
         "amount": 0.1736, 
-        "object": 89
-        "account": 13
+        "object": 108
+        "account": 15
         "state": "invoiced", 
         "coreHours": 2.48, 
-        "invoice": 60, 
-        "date": "2013-11-21T22:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 70, 
+        "date": "2013-11-26T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58346, 
+    "pk": 60146, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.833Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.943Z", 
-        "amount": 0.2576
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:22.969Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.162Z", 
+        "amount": 0.252
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.68, 
-        "invoice": 60, 
-        "date": "2013-11-22T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.6, 
+        "invoice": 70, 
+        "date": "2013-11-27T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58347, 
+    "pk": 60147, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.949Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.951Z", 
-        "amount": 0.3248
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:23.077Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.170Z", 
+        "amount": 0.2016
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.64, 
-        "invoice": 60, 
-        "date": "2013-11-22T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.88, 
+        "invoice": 70, 
+        "date": "2013-11-27T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58348, 
+    "pk": 60148, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.040Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.959Z", 
-        "amount": 0.3248
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:23.184Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.178Z", 
+        "amount": 0.3192
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.64, 
-        "invoice": 60, 
-        "date": "2013-11-22T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.56, 
+        "invoice": 70, 
+        "date": "2013-11-27T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58349, 
+    "pk": 60149, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.131Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.967Z", 
-        "amount": 0.3136
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:23.292Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.187Z", 
+        "amount": 0.2464
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.48, 
-        "invoice": 60, 
-        "date": "2013-11-23T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.52, 
+        "invoice": 70, 
+        "date": "2013-11-28T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58350, 
+    "pk": 60150, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.222Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.976Z", 
-        "amount": 0.2016
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:23.400Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.195Z", 
+        "amount": 0.112
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.88, 
-        "invoice": 60, 
-        "date": "2013-11-23T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.6, 
+        "invoice": 70, 
+        "date": "2013-11-28T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58351, 
+    "pk": 60151, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.471Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.984Z", 
-        "amount": 0.3248, 
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:23.507Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.203Z", 
+        "amount": 0.1568, 
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.64, 
-        "invoice": 60, 
-        "date": "2013-11-23T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.24, 
+        "invoice": 70, 
+        "date": "2013-11-28T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58352, 
+    "pk": 60152, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.761Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:42.992Z", 
-        "amount": 0.2296
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:23.615Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.212Z", 
+        "amount": 0.28
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.28, 
-        "invoice": 60, 
-        "date": "2013-11-24T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.0, 
+        "invoice": 70, 
+        "date": "2013-11-29T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58353, 
+    "pk": 60153, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.852Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.001Z", 
-        "amount": 0.252
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:23.723Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.220Z", 
+        "amount": 0.2016
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.6, 
-        "invoice": 60, 
-        "date": "2013-11-24T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.88, 
+        "invoice": 70, 
+        "date": "2013-11-29T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58354, 
+    "pk": 60154, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.943Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.009Z", 
-        "amount": 0.2016
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:23.831Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.228Z", 
+        "amount": 0.2072
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.88, 
-        "invoice": 60, 
-        "date": "2013-11-24T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.96, 
+        "invoice": 70, 
+        "date": "2013-11-29T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58355, 
+    "pk": 60155, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.042Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.017Z", 
-        "amount": 0.2744
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:23.938Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.236Z", 
+        "amount": 0.2856
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.92, 
-        "invoice": 61, 
-        "date": "2013-11-25T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.08, 
+        "invoice": 70, 
+        "date": "2013-11-30T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58356, 
+    "pk": 60156, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.133Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.025Z", 
-        "amount": 0.2072
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:24.046Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.245Z", 
+        "amount": 0.2464
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.96, 
-        "invoice": 61, 
-        "date": "2013-11-25T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.52, 
+        "invoice": 70, 
+        "date": "2013-11-30T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58357, 
+    "pk": 60157, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.229Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.034Z", 
-        "amount": 0.2688
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:24.154Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.253Z", 
+        "amount": 0.3192
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.84, 
-        "invoice": 61, 
-        "date": "2013-11-25T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.56, 
+        "invoice": 70, 
+        "date": "2013-11-30T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58358, 
+    "pk": 60158, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.320Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.042Z", 
-        "amount": 0.1288
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:24.261Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.261Z", 
+        "amount": 0.2912
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.84, 
-        "invoice": 61, 
-        "date": "2013-11-26T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.16, 
+        "invoice": 70, 
+        "date": "2013-12-01T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58359, 
+    "pk": 60159, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.412Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.050Z", 
-        "amount": 0.1456
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:24.369Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.269Z", 
+        "amount": 0.2072
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.08, 
-        "invoice": 61, 
-        "date": "2013-11-26T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.96, 
+        "invoice": 70, 
+        "date": "2013-12-01T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58360, 
+    "pk": 60160, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.503Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.059Z", 
-        "amount": 0.336
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:24.477Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.278Z", 
+        "amount": 0.2912
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.8, 
-        "invoice": 61, 
-        "date": "2013-11-26T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.16, 
+        "invoice": 70, 
+        "date": "2013-12-01T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58361, 
+    "pk": 60161, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.594Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.067Z", 
-        "amount": 0.2072
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:24.593Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.286Z", 
+        "amount": 0.14
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.96, 
-        "invoice": 61, 
-        "date": "2013-11-27T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.0, 
+        "invoice": 71, 
+        "date": "2013-12-02T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58362, 
+    "pk": 60162, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.685Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.075Z", 
-        "amount": 0.1736
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:24.700Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.294Z", 
+        "amount": 0.1848
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.48, 
-        "invoice": 61, 
-        "date": "2013-11-27T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.64, 
+        "invoice": 71, 
+        "date": "2013-12-02T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58363, 
+    "pk": 60163, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.776Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.083Z", 
+        "updated": "2013-12-18T21:29:24.808Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.303Z", 
         "amount": 0.2576, 
-        "object": 89
-        "account": 13
+        "object": 108
+        "account": 15
         "state": "invoiced", 
         "coreHours": 3.68, 
-        "invoice": 61, 
-        "date": "2013-11-27T22:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 71, 
+        "date": "2013-12-02T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58364, 
+    "pk": 60164, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.867Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.092Z", 
-        "amount": 0.2352, 
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:24.916Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.311Z", 
+        "amount": 0.2072, 
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 61, 
-        "date": "2013-11-28T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.96, 
+        "invoice": 71, 
+        "date": "2013-12-03T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58365, 
+    "pk": 60165, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.958Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.100Z", 
-        "amount": 0.2912
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:25.023Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.319Z", 
+        "amount": 0.1848
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 61, 
-        "date": "2013-11-28T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.64, 
+        "invoice": 71, 
+        "date": "2013-12-03T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58366, 
+    "pk": 60166, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.049Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.108Z", 
-        "amount": 0.336
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:25.131Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.327Z", 
+        "amount": 0.1568
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.8, 
-        "invoice": 61, 
-        "date": "2013-11-28T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.24, 
+        "invoice": 71, 
+        "date": "2013-12-03T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58367, 
+    "pk": 60167, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.140Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.117Z", 
-        "amount": 0.1176
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:25.239Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.336Z", 
+        "amount": 0.2128
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 61, 
-        "date": "2013-11-29T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.04, 
+        "invoice": 71, 
+        "date": "2013-12-04T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58368, 
+    "pk": 60168, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.232Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.125Z", 
-        "amount": 0.1456
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:25.346Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.344Z", 
+        "amount": 0.168
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.08, 
-        "invoice": 61, 
-        "date": "2013-11-29T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.4, 
+        "invoice": 71, 
+        "date": "2013-12-04T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58369, 
+    "pk": 60169, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.323Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.133Z", 
-        "amount": 0.1736
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:25.454Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.352Z", 
+        "amount": 0.28
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.48, 
-        "invoice": 61, 
-        "date": "2013-11-29T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.0, 
+        "invoice": 71, 
+        "date": "2013-12-04T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58370, 
+    "pk": 60170, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.416Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.141Z", 
-        "amount": 0.1344
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:25.562Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.361Z", 
+        "amount": 0.2296
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.92, 
-        "invoice": 61, 
-        "date": "2013-11-30T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.28, 
+        "invoice": 71, 
+        "date": "2013-12-05T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58371, 
+    "pk": 60171, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.507Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.150Z", 
-        "amount": 0.1232
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:25.670Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.369Z", 
+        "amount": 0.1904
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.76, 
-        "invoice": 61, 
-        "date": "2013-11-30T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.72, 
+        "invoice": 71, 
+        "date": "2013-12-05T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58372, 
+    "pk": 60172, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.598Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.158Z", 
-        "amount": 0.2632
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:25.777Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.377Z", 
+        "amount": 0.1624
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.76, 
-        "invoice": 61, 
-        "date": "2013-11-30T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.32, 
+        "invoice": 71, 
+        "date": "2013-12-05T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58373, 
+    "pk": 60173, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.689Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.166Z", 
-        "amount": 0.2184
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:25.885Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.385Z", 
+        "amount": 0.252
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.12, 
-        "invoice": 61, 
-        "date": "2013-12-01T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.6, 
+        "invoice": 71, 
+        "date": "2013-12-06T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58374, 
+    "pk": 60174, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.780Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.175Z", 
-        "amount": 0.224
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:25.993Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.394Z", 
+        "amount": 0.112
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 61, 
-        "date": "2013-12-01T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.6, 
+        "invoice": 71, 
+        "date": "2013-12-06T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58375, 
+    "pk": 60175, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.871Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.183Z", 
-        "amount": 0.2632
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:26.100Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.402Z", 
+        "amount": 0.2576
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.76, 
-        "invoice": 61, 
-        "date": "2013-12-01T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.68, 
+        "invoice": 71, 
+        "date": "2013-12-06T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58376, 
+    "pk": 60176, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.971Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.191Z", 
-        "amount": 0.3304
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:26.208Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.410Z", 
+        "amount": 0.3192
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.72, 
-        "invoice": 62, 
-        "date": "2013-12-02T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.56, 
+        "invoice": 71, 
+        "date": "2013-12-07T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58377, 
+    "pk": 60177, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.062Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.199Z", 
-        "amount": 0.1456
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:26.316Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.419Z", 
+        "amount": 0.2632
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.08, 
-        "invoice": 62, 
-        "date": "2013-12-02T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.76, 
+        "invoice": 71, 
+        "date": "2013-12-07T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58378, 
+    "pk": 60178, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.153Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.208Z", 
-        "amount": 0.1848
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:26.423Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.427Z", 
+        "amount": 0.1792
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.64, 
-        "invoice": 62, 
-        "date": "2013-12-02T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.56, 
+        "invoice": 71, 
+        "date": "2013-12-07T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58379, 
+    "pk": 60179, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.244Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.216Z", 
-        "amount": 0.308
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:26.531Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.435Z", 
+        "amount": 0.196
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 62, 
-        "date": "2013-12-03T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 71, 
+        "date": "2013-12-08T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58380, 
+    "pk": 60180, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.335Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.224Z", 
-        "amount": 0.3304
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:26.639Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.443Z", 
+        "amount": 0.1176
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.72, 
-        "invoice": 62, 
-        "date": "2013-12-03T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.68, 
+        "invoice": 71, 
+        "date": "2013-12-08T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58381, 
+    "pk": 60181, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.426Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.233Z", 
-        "amount": 0.224
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:26.746Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.452Z", 
+        "amount": 0.2408
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 62, 
-        "date": "2013-12-03T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.44, 
+        "invoice": 71, 
+        "date": "2013-12-08T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58382, 
+    "pk": 60182, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.517Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.241Z", 
-        "amount": 0.2464
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:26.862Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.460Z", 
+        "amount": 0.2576
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 62, 
-        "date": "2013-12-04T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.68, 
+        "invoice": 72, 
+        "date": "2013-12-09T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58383, 
+    "pk": 60183, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.608Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.249Z", 
-        "amount": 0.2296
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:26.970Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.468Z", 
+        "amount": 0.2744
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.28, 
-        "invoice": 62, 
-        "date": "2013-12-04T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.92, 
+        "invoice": 72, 
+        "date": "2013-12-09T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58384, 
+    "pk": 60184, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.700Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.257Z", 
-        "amount": 0.1904, 
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:27.078Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.476Z", 
+        "amount": 0.3024, 
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.72, 
-        "invoice": 62, 
-        "date": "2013-12-04T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.32, 
+        "invoice": 72, 
+        "date": "2013-12-09T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58385, 
+    "pk": 60185, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.791Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.266Z", 
-        "amount": 0.2184
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:27.186Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.485Z", 
+        "amount": 0.3192
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.12, 
-        "invoice": 62, 
-        "date": "2013-12-05T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.56, 
+        "invoice": 72, 
+        "date": "2013-12-10T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58386, 
+    "pk": 60186, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.882Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.274Z", 
-        "amount": 0.1456
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:27.293Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.493Z", 
+        "amount": 0.3304
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.08, 
-        "invoice": 62, 
-        "date": "2013-12-05T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.72, 
+        "invoice": 72, 
+        "date": "2013-12-10T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58387, 
+    "pk": 60187, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.973Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.282Z", 
-        "amount": 0.2576
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:27.401Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.501Z", 
+        "amount": 0.3192
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.68, 
-        "invoice": 62, 
-        "date": "2013-12-05T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.56, 
+        "invoice": 72, 
+        "date": "2013-12-10T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
+    }
+},
+{
+    "pk": 60188, 
+    "model": "core.charge", 
+    "fields": {
+        "updated": "2013-12-18T21:29:27.509Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:04.510Z", 
+        "amount": 0.168, 
+        "object": 108, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.4, 
+        "invoice": 72, 
+        "date": "2013-12-11T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58388
+    "pk": 60189
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.064Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.291Z", 
+        "updated": "2013-12-18T21:29:27.674Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.518Z", 
         "amount": 0.3136, 
-        "object": 89
-        "account": 13
+        "object": 108
+        "account": 15
         "state": "invoiced", 
         "coreHours": 4.48, 
-        "invoice": 62, 
-        "date": "2013-12-06T06:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 72, 
+        "date": "2013-12-11T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58389
+    "pk": 60190
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.162Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.299Z", 
-        "amount": 0.2408
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:27.782Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.526Z", 
+        "amount": 0.1792
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.44, 
-        "invoice": 62, 
-        "date": "2013-12-06T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.56, 
+        "invoice": 72, 
+        "date": "2013-12-11T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58390
+    "pk": 60191
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.253Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.307Z", 
-        "amount": 0.2184
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:27.890Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.535Z", 
+        "amount": 0.2576
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.12, 
-        "invoice": 62, 
-        "date": "2013-12-06T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.68, 
+        "invoice": 72, 
+        "date": "2013-12-12T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58391
+    "pk": 60192
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.344Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.315Z", 
-        "amount": 0.2632
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:27.997Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.543Z", 
+        "amount": 0.2464
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.76, 
-        "invoice": 62, 
-        "date": "2013-12-07T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.52, 
+        "invoice": 72, 
+        "date": "2013-12-12T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58392
+    "pk": 60193
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.435Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.324Z", 
+        "updated": "2013-12-18T21:29:28.105Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.551Z", 
         "amount": 0.2968, 
-        "object": 89
-        "account": 13
+        "object": 108
+        "account": 15
         "state": "invoiced", 
         "coreHours": 4.24, 
-        "invoice": 62, 
-        "date": "2013-12-07T14:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 72, 
+        "date": "2013-12-12T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58393
+    "pk": 60194
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.526Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.332Z", 
-        "amount": 0.112
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:28.213Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.559Z", 
+        "amount": 0.28
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.6, 
-        "invoice": 62, 
-        "date": "2013-12-07T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.0, 
+        "invoice": 72, 
+        "date": "2013-12-13T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58394
+    "pk": 60195
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.617Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.340Z", 
-        "amount": 0.2128
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:28.320Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.568Z", 
+        "amount": 0.1344
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.04, 
-        "invoice": 62, 
-        "date": "2013-12-08T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.92, 
+        "invoice": 72, 
+        "date": "2013-12-13T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58395
+    "pk": 60196
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.709Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.349Z", 
-        "amount": 0.336
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:28.428Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.576Z", 
+        "amount": 0.2128
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.8, 
-        "invoice": 62, 
-        "date": "2013-12-08T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.04, 
+        "invoice": 72, 
+        "date": "2013-12-13T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58396
+    "pk": 60197
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.800Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.357Z", 
-        "amount": 0.1232
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:28.536Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.584Z", 
+        "amount": 0.196
+        "object": 108
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.76, 
-        "invoice": 62, 
-        "date": "2013-12-08T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 72, 
+        "date": "2013-12-14T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58397
+    "pk": 60198
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:43.365Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:43.365Z", 
-        "amount": 0.2184, 
-        "object": 89, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 3.12, 
-        "invoice": null, 
-        "date": "2013-12-09T06:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.644Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:04.593Z", 
+        "amount": 0.2912, 
+        "object": 108, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.16, 
+        "invoice": 72, 
+        "date": "2013-12-14T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58398
+    "pk": 60199
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:43.374Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:43.374Z", 
-        "amount": 0.2856, 
-        "object": 89, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 4.08, 
-        "invoice": null, 
-        "date": "2013-12-09T14:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.751Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:04.601Z", 
+        "amount": 0.2632, 
+        "object": 108, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.76, 
+        "invoice": 72, 
+        "date": "2013-12-14T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58399
+    "pk": 60200
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:43.382Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:43.382Z", 
-        "amount": 0.2464, 
-        "object": 89, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 3.52, 
-        "invoice": null, 
-        "date": "2013-12-09T22:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.859Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:04.609Z", 
+        "amount": 0.3024, 
+        "object": 108, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.32, 
+        "invoice": 72, 
+        "date": "2013-12-15T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58400
+    "pk": 60201
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:43.390Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:43.390Z", 
-        "amount": 0.1512, 
-        "object": 89, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 2.16, 
-        "invoice": null, 
-        "date": "2013-12-10T06:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.967Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:04.617Z", 
+        "amount": 0.1568, 
+        "object": 108, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.24, 
+        "invoice": 72, 
+        "date": "2013-12-15T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58401
+    "pk": 60202
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:43.398Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:43.398Z", 
-        "amount": 0.1176, 
-        "object": 89, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 1.68, 
-        "invoice": null, 
-        "date": "2013-12-10T14:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:29.074Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:04.626Z", 
+        "amount": 0.2352, 
+        "object": 108, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.36, 
+        "invoice": 72, 
+        "date": "2013-12-15T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58402
+    "pk": 60203
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:43.407Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.407Z", 
-        "amount": 0.224
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:04.634Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.634Z", 
+        "amount": 0.2688
+        "object": 108
+        "account": 15
         "state": "pending", 
-        "coreHours": 3.2
+        "coreHours": 3.84
         "invoice": null, 
-        "date": "2013-12-10T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58403
+    "pk": 60204
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:43.415Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.415Z", 
-        "amount": 0.2072
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:04.642Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.642Z", 
+        "amount": 0.14
+        "object": 108
+        "account": 15
         "state": "pending", 
-        "coreHours": 2.96
+        "coreHours": 2.0
         "invoice": null, 
-        "date": "2013-12-11T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58404
+    "pk": 60205
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:43.423Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.423Z", 
-        "amount": 0.1288, 
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:04.651Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.651Z", 
+        "amount": 0.28, 
+        "object": 108
+        "account": 15
         "state": "pending", 
-        "coreHours": 1.84
+        "coreHours": 4.0
         "invoice": null, 
-        "date": "2013-12-11T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58405
+    "pk": 60206
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:43.431Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.431Z", 
-        "amount": 0.14
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:04.659Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.659Z", 
+        "amount": 0.2352
+        "object": 108
+        "account": 15
         "state": "pending", 
-        "coreHours": 2.0
+        "coreHours": 3.36
         "invoice": null, 
-        "date": "2013-12-11T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58406
+    "pk": 60207
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:43.440Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.440Z", 
-        "amount": 0.196
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:04.667Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.667Z", 
+        "amount": 0.1848
+        "object": 108
+        "account": 15
         "state": "pending", 
-        "coreHours": 2.8
+        "coreHours": 2.64
         "invoice": null, 
-        "date": "2013-12-12T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58407
+    "pk": 60208
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:43.448Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.448Z", 
-        "amount": 0.112
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:04.676Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.676Z", 
+        "amount": 0.2688
+        "object": 108
+        "account": 15
         "state": "pending", 
-        "coreHours": 1.6
+        "coreHours": 3.84
         "invoice": null, 
-        "date": "2013-12-12T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58408
+    "pk": 60209
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:43.456Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.456Z", 
-        "amount": 0.3304, 
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:04.684Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.684Z", 
+        "amount": 0.2184, 
+        "object": 108
+        "account": 15
         "state": "pending", 
-        "coreHours": 4.72, 
+        "coreHours": 3.12, 
         "invoice": null, 
-        "date": "2013-12-12T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-18T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58409
+    "pk": 60210
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:43.465Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.465Z", 
-        "amount": 0.3192
-        "object": 89
-        "account": 13
+        "updated": "2013-12-18T21:29:04.692Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.692Z", 
+        "amount": 0.1176
+        "object": 108
+        "account": 15
         "state": "pending", 
-        "coreHours": 4.56
+        "coreHours": 1.68
         "invoice": null, 
-        "date": "2013-12-13T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-18T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58410
+    "pk": 60211
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:43.473Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:43.473Z", 
-        "amount": 0.2856, 
-        "object": 89, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 4.08, 
-        "invoice": null, 
-        "date": "2013-12-13T14:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:20.235Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:04.707Z", 
+        "amount": 0.3136, 
+        "object": 109, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.48, 
+        "invoice": 69, 
+        "date": "2013-11-18T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58411
+    "pk": 60212
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.482Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.488Z", 
-        "amount": 0.1568
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:20.343Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.717Z", 
+        "amount": 0.196
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.24, 
-        "invoice": 59, 
-        "date": "2013-11-13T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 69, 
+        "date": "2013-11-19T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58412
+    "pk": 60213
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.573Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.498Z", 
-        "amount": 0.14
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:20.451Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.725Z", 
+        "amount": 0.1176
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.0, 
-        "invoice": 59, 
-        "date": "2013-11-14T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.68, 
+        "invoice": 69, 
+        "date": "2013-11-19T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58413
+    "pk": 60214
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.664Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.506Z", 
-        "amount": 0.1568, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:20.558Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.733Z", 
+        "amount": 0.28, 
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.24, 
-        "invoice": 59, 
-        "date": "2013-11-14T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.0, 
+        "invoice": 69, 
+        "date": "2013-11-19T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58414
+    "pk": 60215
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.755Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.514Z", 
-        "amount": 0.2184
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:20.666Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.742Z", 
+        "amount": 0.1792
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.12, 
-        "invoice": 59, 
-        "date": "2013-11-14T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.56, 
+        "invoice": 69, 
+        "date": "2013-11-20T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58415
+    "pk": 60216
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.846Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.522Z", 
-        "amount": 0.1904, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:20.774Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.750Z", 
+        "amount": 0.14, 
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.72, 
-        "invoice": 59, 
-        "date": "2013-11-15T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.0, 
+        "invoice": 69, 
+        "date": "2013-11-20T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58416
+    "pk": 60217
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.955Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.531Z", 
-        "amount": 0.2968
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:20.881Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.758Z", 
+        "amount": 0.2576
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.24, 
-        "invoice": 59, 
-        "date": "2013-11-15T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.68, 
+        "invoice": 69, 
+        "date": "2013-11-20T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58417
+    "pk": 60218
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.046Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.539Z", 
-        "amount": 0.1568
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:20.989Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.767Z", 
+        "amount": 0.1736
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.24, 
-        "invoice": 59, 
-        "date": "2013-11-15T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.48, 
+        "invoice": 69, 
+        "date": "2013-11-21T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58418
+    "pk": 60219
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.137Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.547Z", 
-        "amount": 0.2408
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:21.097Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.775Z", 
+        "amount": 0.336
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.44, 
-        "invoice": 59, 
-        "date": "2013-11-16T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.8, 
+        "invoice": 69, 
+        "date": "2013-11-21T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58419
+    "pk": 60220
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.228Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.556Z", 
-        "amount": 0.1512, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:21.205Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.783Z", 
+        "amount": 0.2072, 
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.16, 
-        "invoice": 59, 
-        "date": "2013-11-16T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.96, 
+        "invoice": 69, 
+        "date": "2013-11-21T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58420
+    "pk": 60221
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.319Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.564Z", 
-        "amount": 0.2744, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:21.312Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.791Z", 
+        "amount": 0.2184, 
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.92, 
-        "invoice": 59, 
-        "date": "2013-11-16T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.12, 
+        "invoice": 69, 
+        "date": "2013-11-22T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58421
+    "pk": 60222
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.410Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.572Z", 
-        "amount": 0.3248
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:21.420Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.800Z", 
+        "amount": 0.196
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.64, 
-        "invoice": 59, 
-        "date": "2013-11-17T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 69, 
+        "date": "2013-11-22T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58422
+    "pk": 60223
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.501Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.580Z", 
-        "amount": 0.2128
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:21.528Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.808Z", 
+        "amount": 0.3192
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.04, 
-        "invoice": 59, 
-        "date": "2013-11-17T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.56, 
+        "invoice": 69, 
+        "date": "2013-11-22T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58423
+    "pk": 60224
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.593Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.589Z", 
-        "amount": 0.1904
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:21.636Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.816Z", 
+        "amount": 0.1456
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.72, 
-        "invoice": 59, 
-        "date": "2013-11-17T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 69, 
+        "date": "2013-11-23T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58424
+    "pk": 60225
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.704Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.597Z", 
-        "amount": 0.1176, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:21.743Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.825Z", 
+        "amount": 0.2296, 
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 60, 
-        "date": "2013-11-18T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.28, 
+        "invoice": 69, 
+        "date": "2013-11-23T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58425
+    "pk": 60226
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.795Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.605Z", 
-        "amount": 0.2912
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:21.851Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.833Z", 
+        "amount": 0.2016
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 60, 
-        "date": "2013-11-18T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.88, 
+        "invoice": 69, 
+        "date": "2013-11-23T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58426
+    "pk": 60227
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.886Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.614Z", 
-        "amount": 0.1232, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:21.958Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.841Z", 
+        "amount": 0.2352, 
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.76, 
-        "invoice": 60, 
-        "date": "2013-11-18T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.36, 
+        "invoice": 69, 
+        "date": "2013-11-24T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58427
+    "pk": 60228
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.977Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.622Z", 
+        "updated": "2013-12-18T21:29:22.066Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.849Z", 
         "amount": 0.1456, 
-        "object": 90
-        "account": 13
+        "object": 109
+        "account": 15
         "state": "invoiced", 
         "coreHours": 2.08, 
-        "invoice": 60, 
-        "date": "2013-11-19T06:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 69, 
+        "date": "2013-11-24T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58428
+    "pk": 60229
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.068Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.630Z", 
-        "amount": 0.2856
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:22.174Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.858Z", 
+        "amount": 0.252
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.08, 
-        "invoice": 60, 
-        "date": "2013-11-19T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.6, 
+        "invoice": 69, 
+        "date": "2013-11-24T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58429
+    "pk": 60230
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.168Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.639Z", 
-        "amount": 0.2072
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:22.290Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.866Z", 
+        "amount": 0.2296
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.96, 
-        "invoice": 60, 
-        "date": "2013-11-19T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.28, 
+        "invoice": 70, 
+        "date": "2013-11-25T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58430
+    "pk": 60231
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.259Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.647Z", 
-        "amount": 0.1456
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:22.397Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.874Z", 
+        "amount": 0.1792
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.08, 
-        "invoice": 60, 
-        "date": "2013-11-20T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.56, 
+        "invoice": 70, 
+        "date": "2013-11-25T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58431
+    "pk": 60232
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.350Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.655Z", 
-        "amount": 0.2688, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:22.505Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.883Z", 
+        "amount": 0.1848, 
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.84, 
-        "invoice": 60, 
-        "date": "2013-11-20T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.64, 
+        "invoice": 70, 
+        "date": "2013-11-25T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58432
+    "pk": 60233
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.444Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.663Z", 
-        "amount": 0.1456
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:22.654Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.891Z", 
+        "amount": 0.2128
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.08, 
-        "invoice": 60, 
-        "date": "2013-11-20T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.04, 
+        "invoice": 70, 
+        "date": "2013-11-26T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58433
+    "pk": 60234
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.535Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.672Z", 
-        "amount": 0.3192, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:22.762Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.899Z", 
+        "amount": 0.252, 
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.56, 
-        "invoice": 60, 
-        "date": "2013-11-21T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.6, 
+        "invoice": 70, 
+        "date": "2013-11-26T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58434
+    "pk": 60235
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.642Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.680Z", 
-        "amount": 0.2856
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:22.870Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.907Z", 
+        "amount": 0.2912
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.08, 
-        "invoice": 60, 
-        "date": "2013-11-21T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.16, 
+        "invoice": 70, 
+        "date": "2013-11-26T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58435
+    "pk": 60236
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.733Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.688Z", 
+        "updated": "2013-12-18T21:29:22.977Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.915Z", 
         "amount": 0.1568, 
-        "object": 90
-        "account": 13
+        "object": 109
+        "account": 15
         "state": "invoiced", 
         "coreHours": 2.24, 
-        "invoice": 60, 
-        "date": "2013-11-21T22:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 70, 
+        "date": "2013-11-27T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58436
+    "pk": 60237
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.825Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.696Z", 
-        "amount": 0.224
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:23.085Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.924Z", 
+        "amount": 0.1288
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 60, 
-        "date": "2013-11-22T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.84, 
+        "invoice": 70, 
+        "date": "2013-11-27T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
+    }
+},
+{
+    "pk": 60238, 
+    "model": "core.charge", 
+    "fields": {
+        "updated": "2013-12-18T21:29:23.193Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:04.932Z", 
+        "amount": 0.2016, 
+        "object": 109, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.88, 
+        "invoice": 70, 
+        "date": "2013-11-27T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58437
+    "pk": 60239
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.941Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.705Z", 
-        "amount": 0.1848
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:23.300Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.940Z", 
+        "amount": 0.2184
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.64, 
-        "invoice": 60, 
-        "date": "2013-11-22T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.12, 
+        "invoice": 70, 
+        "date": "2013-11-28T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58438
+    "pk": 60240
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.032Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.713Z", 
-        "amount": 0.1176, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:23.408Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.949Z", 
+        "amount": 0.1456, 
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 60, 
-        "date": "2013-11-22T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 70, 
+        "date": "2013-11-28T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58439
+    "pk": 60241
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.123Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.721Z", 
-        "amount": 0.3136, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:23.516Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.957Z", 
+        "amount": 0.1456, 
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.48, 
-        "invoice": 60, 
-        "date": "2013-11-23T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 70, 
+        "date": "2013-11-28T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58440
+    "pk": 60242
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.214Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.730Z", 
-        "amount": 0.308
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:23.623Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.965Z", 
+        "amount": 0.3304
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 60, 
-        "date": "2013-11-23T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.72, 
+        "invoice": 70, 
+        "date": "2013-11-29T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58441
+    "pk": 60243
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.446Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.738Z", 
-        "amount": 0.2352
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:23.731Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.974Z", 
+        "amount": 0.2408
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 60, 
-        "date": "2013-11-23T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.44, 
+        "invoice": 70, 
+        "date": "2013-11-29T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58442
+    "pk": 60244
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.752Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.746Z", 
-        "amount": 0.252
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:23.839Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.982Z", 
+        "amount": 0.2688
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.6, 
-        "invoice": 60, 
-        "date": "2013-11-24T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.84, 
+        "invoice": 70, 
+        "date": "2013-11-29T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58443
+    "pk": 60245
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.843Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.754Z", 
-        "amount": 0.2184, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:23.947Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.990Z", 
+        "amount": 0.3304, 
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.12, 
-        "invoice": 60, 
-        "date": "2013-11-24T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.72, 
+        "invoice": 70, 
+        "date": "2013-11-30T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58444
+    "pk": 60246
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.934Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.763Z", 
-        "amount": 0.14, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:24.054Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:04.998Z", 
+        "amount": 0.1624, 
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.0, 
-        "invoice": 60, 
-        "date": "2013-11-24T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.32, 
+        "invoice": 70, 
+        "date": "2013-11-30T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58445
+    "pk": 60247
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.034Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.771Z", 
-        "amount": 0.1512
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:24.162Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.007Z", 
+        "amount": 0.1624
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.16, 
-        "invoice": 61, 
-        "date": "2013-11-25T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.32, 
+        "invoice": 70, 
+        "date": "2013-11-30T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58446
+    "pk": 60248
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.125Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.779Z", 
-        "amount": 0.28
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:24.270Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.015Z", 
+        "amount": 0.2184
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.0, 
-        "invoice": 61, 
-        "date": "2013-11-25T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.12, 
+        "invoice": 70, 
+        "date": "2013-12-01T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58447
+    "pk": 60249
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.221Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.788Z", 
-        "amount": 0.2688
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:24.377Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.023Z", 
+        "amount": 0.1176
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.84, 
-        "invoice": 61, 
-        "date": "2013-11-25T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.68, 
+        "invoice": 70, 
+        "date": "2013-12-01T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58448
+    "pk": 60250
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.312Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.796Z", 
-        "amount": 0.2576
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:24.485Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.032Z", 
+        "amount": 0.2632
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.68, 
-        "invoice": 61, 
-        "date": "2013-11-26T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.76, 
+        "invoice": 70, 
+        "date": "2013-12-01T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58449
+    "pk": 60251
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.403Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.804Z", 
-        "amount": 0.2408
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:24.601Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.040Z", 
+        "amount": 0.1904
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.44, 
-        "invoice": 61, 
-        "date": "2013-11-26T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.72, 
+        "invoice": 71, 
+        "date": "2013-12-02T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58450
+    "pk": 60252
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.494Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.813Z", 
-        "amount": 0.2128
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:24.709Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.048Z", 
+        "amount": 0.3024
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.04, 
-        "invoice": 61, 
-        "date": "2013-11-26T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.32, 
+        "invoice": 71, 
+        "date": "2013-12-02T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58451
+    "pk": 60253
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.585Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.821Z", 
-        "amount": 0.224
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:24.816Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.056Z", 
+        "amount": 0.2856
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 61, 
-        "date": "2013-11-27T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.08, 
+        "invoice": 71, 
+        "date": "2013-12-02T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58452
+    "pk": 60254
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.676Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.829Z", 
-        "amount": 0.1904, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:24.924Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.065Z", 
+        "amount": 0.3304, 
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.72, 
-        "invoice": 61, 
-        "date": "2013-11-27T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.72, 
+        "invoice": 71, 
+        "date": "2013-12-03T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58453
+    "pk": 60255
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.768Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.837Z", 
-        "amount": 0.2968, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:25.032Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.073Z", 
+        "amount": 0.3248, 
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.24, 
-        "invoice": 61, 
-        "date": "2013-11-27T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.64, 
+        "invoice": 71, 
+        "date": "2013-12-03T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58454
+    "pk": 60256
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.859Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.846Z", 
+        "updated": "2013-12-18T21:29:25.139Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.081Z", 
         "amount": 0.2968, 
-        "object": 90
-        "account": 13
+        "object": 109
+        "account": 15
         "state": "invoiced", 
         "coreHours": 4.24, 
-        "invoice": 61, 
-        "date": "2013-11-28T06:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 71, 
+        "date": "2013-12-03T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58455
+    "pk": 60257
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.950Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.854Z", 
-        "amount": 0.28, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:25.247Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.090Z", 
+        "amount": 0.308, 
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.0, 
-        "invoice": 61, 
-        "date": "2013-11-28T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.4, 
+        "invoice": 71, 
+        "date": "2013-12-04T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58456
+    "pk": 60258
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.041Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.862Z", 
-        "amount": 0.3248
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:25.355Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.098Z", 
+        "amount": 0.3304
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.64, 
-        "invoice": 61, 
-        "date": "2013-11-28T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.72, 
+        "invoice": 71, 
+        "date": "2013-12-04T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58457
+    "pk": 60259
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.132Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.871Z", 
-        "amount": 0.2464
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:25.462Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.106Z", 
+        "amount": 0.252
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 61, 
-        "date": "2013-11-29T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.6, 
+        "invoice": 71, 
+        "date": "2013-12-04T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58458
+    "pk": 60260
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.223Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.879Z", 
-        "amount": 0.1624, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:25.570Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.114Z", 
+        "amount": 0.2744, 
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.32, 
-        "invoice": 61, 
-        "date": "2013-11-29T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.92, 
+        "invoice": 71, 
+        "date": "2013-12-05T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58459
+    "pk": 60261
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.314Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.887Z", 
-        "amount": 0.1176
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:25.678Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.123Z", 
+        "amount": 0.2632
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 61, 
-        "date": "2013-11-29T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.76, 
+        "invoice": 71, 
+        "date": "2013-12-05T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58460
+    "pk": 60262
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.406Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.895Z", 
-        "amount": 0.2968
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:25.786Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.131Z", 
+        "amount": 0.2016
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.24, 
-        "invoice": 61, 
-        "date": "2013-11-30T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.88, 
+        "invoice": 71, 
+        "date": "2013-12-05T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58461
+    "pk": 60263
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.498Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.904Z", 
+        "updated": "2013-12-18T21:29:25.893Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.140Z", 
         "amount": 0.2688, 
-        "object": 90
-        "account": 13
+        "object": 109
+        "account": 15
         "state": "invoiced", 
         "coreHours": 3.84, 
-        "invoice": 61, 
-        "date": "2013-11-30T14:00:00Z", 
-        "kind": "besteffort"
-    }
-},
-{
-    "pk": 58462, 
-    "model": "core.charge", 
-    "fields": {
-        "updated": "2013-12-13T22:20:03.589Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:43.912Z", 
-        "amount": 0.1904, 
-        "object": 90, 
-        "account": 13, 
-        "state": "invoiced", 
-        "coreHours": 2.72, 
-        "invoice": 61, 
-        "date": "2013-11-30T22:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 71, 
+        "date": "2013-12-06T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58463
+    "pk": 60264
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.681Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.920Z", 
-        "amount": 0.28, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:26.001Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.148Z", 
+        "amount": 0.2856
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.0, 
-        "invoice": 61, 
-        "date": "2013-12-01T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.08, 
+        "invoice": 71, 
+        "date": "2013-12-06T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58464
+    "pk": 60265
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.772Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.929Z", 
-        "amount": 0.1568, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:26.109Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.156Z", 
+        "amount": 0.1848, 
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.24, 
-        "invoice": 61, 
-        "date": "2013-12-01T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.64, 
+        "invoice": 71, 
+        "date": "2013-12-06T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58465
+    "pk": 60266
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.863Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.937Z", 
-        "amount": 0.308
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:26.216Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.164Z", 
+        "amount": 0.1176
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 61, 
-        "date": "2013-12-01T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.68, 
+        "invoice": 71, 
+        "date": "2013-12-07T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58466
+    "pk": 60267
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.962Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.945Z", 
-        "amount": 0.2128
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:26.324Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.173Z", 
+        "amount": 0.2016
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.04, 
-        "invoice": 62, 
-        "date": "2013-12-02T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.88, 
+        "invoice": 71, 
+        "date": "2013-12-07T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58467
+    "pk": 60268
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.053Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.953Z", 
-        "amount": 0.2296
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:26.432Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.181Z", 
+        "amount": 0.224
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.28, 
-        "invoice": 62, 
-        "date": "2013-12-02T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.2, 
+        "invoice": 71, 
+        "date": "2013-12-07T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58468
+    "pk": 60269
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.144Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.962Z", 
-        "amount": 0.2912
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:26.539Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.189Z", 
+        "amount": 0.168
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 62, 
-        "date": "2013-12-02T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.4, 
+        "invoice": 71, 
+        "date": "2013-12-08T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58469
+    "pk": 60270
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.236Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.970Z", 
-        "amount": 0.3304
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:26.647Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.197Z", 
+        "amount": 0.2968
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.72, 
-        "invoice": 62, 
-        "date": "2013-12-03T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.24, 
+        "invoice": 71, 
+        "date": "2013-12-08T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58470
+    "pk": 60271
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.327Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.978Z", 
-        "amount": 0.2576
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:26.755Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.206Z", 
+        "amount": 0.1568
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.68, 
-        "invoice": 62, 
-        "date": "2013-12-03T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.24, 
+        "invoice": 71, 
+        "date": "2013-12-08T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58471
+    "pk": 60272
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.418Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.986Z", 
-        "amount": 0.1176
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:26.871Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.214Z", 
+        "amount": 0.2744
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 62, 
-        "date": "2013-12-03T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.92, 
+        "invoice": 72, 
+        "date": "2013-12-09T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58472
+    "pk": 60273
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.509Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:43.995Z", 
-        "amount": 0.1736
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:26.978Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.222Z", 
+        "amount": 0.3304
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.48, 
-        "invoice": 62, 
-        "date": "2013-12-04T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.72, 
+        "invoice": 72, 
+        "date": "2013-12-09T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58473
+    "pk": 60274
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.600Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.003Z", 
-        "amount": 0.1568
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:27.086Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.231Z", 
+        "amount": 0.1512
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.24, 
-        "invoice": 62, 
-        "date": "2013-12-04T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.16, 
+        "invoice": 72, 
+        "date": "2013-12-09T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58474
+    "pk": 60275
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.691Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.011Z", 
-        "amount": 0.196
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:27.194Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.253Z", 
+        "amount": 0.1288
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 62, 
-        "date": "2013-12-04T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.84, 
+        "invoice": 72, 
+        "date": "2013-12-10T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58475
+    "pk": 60276
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.782Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.020Z", 
-        "amount": 0.1176
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:27.301Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.331Z", 
+        "amount": 0.252
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 62, 
-        "date": "2013-12-05T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.6, 
+        "invoice": 72, 
+        "date": "2013-12-10T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58476
+    "pk": 60277
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.874Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.028Z", 
-        "amount": 0.1736, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:27.409Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.346Z", 
+        "amount": 0.196, 
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.48, 
-        "invoice": 62, 
-        "date": "2013-12-05T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 72, 
+        "date": "2013-12-10T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58477
+    "pk": 60278
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.965Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.036Z", 
-        "amount": 0.1344, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:27.517Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.355Z", 
+        "amount": 0.1904, 
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.92, 
-        "invoice": 62, 
-        "date": "2013-12-05T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.72, 
+        "invoice": 72, 
+        "date": "2013-12-11T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58478
+    "pk": 60279
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.056Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.044Z", 
-        "amount": 0.2296
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:27.683Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.363Z", 
+        "amount": 0.2408
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.28, 
-        "invoice": 62, 
-        "date": "2013-12-06T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.44, 
+        "invoice": 72, 
+        "date": "2013-12-11T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58479
+    "pk": 60280
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.154Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.053Z", 
-        "amount": 0.2296, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:27.790Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.371Z", 
+        "amount": 0.3136, 
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.28, 
-        "invoice": 62, 
-        "date": "2013-12-06T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.48, 
+        "invoice": 72, 
+        "date": "2013-12-11T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58480
+    "pk": 60281
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.245Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.061Z", 
-        "amount": 0.2912
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:27.898Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.380Z", 
+        "amount": 0.2408
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 62, 
-        "date": "2013-12-06T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.44, 
+        "invoice": 72, 
+        "date": "2013-12-12T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58481
+    "pk": 60282
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.336Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.069Z", 
-        "amount": 0.112, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:28.006Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.388Z", 
+        "amount": 0.1512, 
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.6, 
-        "invoice": 62, 
-        "date": "2013-12-07T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.16, 
+        "invoice": 72, 
+        "date": "2013-12-12T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58482
+    "pk": 60283
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.427Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.078Z", 
-        "amount": 0.1344
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:28.113Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.396Z", 
+        "amount": 0.28
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.92, 
-        "invoice": 62, 
-        "date": "2013-12-07T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.0, 
+        "invoice": 72, 
+        "date": "2013-12-12T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58483
+    "pk": 60284
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.518Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.086Z", 
-        "amount": 0.2688
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:28.221Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.404Z", 
+        "amount": 0.2856
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.84, 
-        "invoice": 62, 
-        "date": "2013-12-07T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.08, 
+        "invoice": 72, 
+        "date": "2013-12-13T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58484
+    "pk": 60285
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.609Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.094Z", 
-        "amount": 0.3248
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:28.329Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.413Z", 
+        "amount": 0.1456
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.64, 
-        "invoice": 62, 
-        "date": "2013-12-08T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 72, 
+        "date": "2013-12-13T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58485
+    "pk": 60286
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.700Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.102Z", 
+        "updated": "2013-12-18T21:29:28.436Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.421Z", 
         "amount": 0.3192, 
-        "object": 90
-        "account": 13
+        "object": 109
+        "account": 15
         "state": "invoiced", 
         "coreHours": 4.56, 
-        "invoice": 62, 
-        "date": "2013-12-08T14:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 72, 
+        "date": "2013-12-13T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58486
+    "pk": 60287
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.792Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.111Z", 
-        "amount": 0.2296
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:28.544Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.429Z", 
+        "amount": 0.3248
+        "object": 109
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.28, 
-        "invoice": 62, 
-        "date": "2013-12-08T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.64, 
+        "invoice": 72, 
+        "date": "2013-12-14T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58487
+    "pk": 60288
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.119Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:44.119Z", 
-        "amount": 0.14, 
-        "object": 90, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 2.0, 
-        "invoice": null, 
-        "date": "2013-12-09T06:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.652Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:05.438Z", 
+        "amount": 0.2352, 
+        "object": 109, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.36, 
+        "invoice": 72, 
+        "date": "2013-12-14T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58488
+    "pk": 60289
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.127Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:44.127Z", 
-        "amount": 0.224, 
-        "object": 90, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 3.2, 
-        "invoice": null, 
-        "date": "2013-12-09T14:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.759Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:05.446Z", 
+        "amount": 0.1288, 
+        "object": 109, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.84, 
+        "invoice": 72, 
+        "date": "2013-12-14T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58489
+    "pk": 60290
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.136Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:44.136Z", 
-        "amount": 0.224, 
-        "object": 90, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 3.2, 
-        "invoice": null, 
-        "date": "2013-12-09T22:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.867Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:05.454Z", 
+        "amount": 0.28, 
+        "object": 109, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.0, 
+        "invoice": 72, 
+        "date": "2013-12-15T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58490
+    "pk": 60291
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.144Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:44.144Z", 
-        "amount": 0.112, 
-        "object": 90, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 1.6, 
-        "invoice": null, 
-        "date": "2013-12-10T06:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.975Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:05.462Z", 
+        "amount": 0.2464, 
+        "object": 109, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.52, 
+        "invoice": 72, 
+        "date": "2013-12-15T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58491
+    "pk": 60292
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.152Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:44.152Z", 
-        "amount": 0.252, 
-        "object": 90, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 3.6, 
-        "invoice": null, 
-        "date": "2013-12-10T14:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:29.083Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:05.471Z", 
+        "amount": 0.3304, 
+        "object": 109, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.72, 
+        "invoice": 72, 
+        "date": "2013-12-15T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58492
+    "pk": 60293
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.160Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.160Z", 
-        "amount": 0.2408
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:05.479Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.479Z", 
+        "amount": 0.2632
+        "object": 109
+        "account": 15
         "state": "pending", 
-        "coreHours": 3.44
+        "coreHours": 3.76
         "invoice": null, 
-        "date": "2013-12-10T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58493
+    "pk": 60294
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.169Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.169Z", 
-        "amount": 0.308
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:05.487Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.487Z", 
+        "amount": 0.1736
+        "object": 109
+        "account": 15
         "state": "pending", 
-        "coreHours": 4.4
+        "coreHours": 2.48
         "invoice": null, 
-        "date": "2013-12-11T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58494
+    "pk": 60295
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.177Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.177Z", 
-        "amount": 0.2744
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:05.496Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.495Z", 
+        "amount": 0.3248
+        "object": 109
+        "account": 15
         "state": "pending", 
-        "coreHours": 3.92
+        "coreHours": 4.64
         "invoice": null, 
-        "date": "2013-12-11T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58495
+    "pk": 60296
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.185Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.185Z", 
-        "amount": 0.2744, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:05.504Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.504Z", 
+        "amount": 0.1344, 
+        "object": 109
+        "account": 15
         "state": "pending", 
-        "coreHours": 3.92, 
+        "coreHours": 1.92, 
         "invoice": null, 
-        "date": "2013-12-11T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58496
+    "pk": 60297
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.194Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.193Z", 
-        "amount": 0.1848
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:05.512Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.512Z", 
+        "amount": 0.1624
+        "object": 109
+        "account": 15
         "state": "pending", 
-        "coreHours": 2.64
+        "coreHours": 2.32
         "invoice": null, 
-        "date": "2013-12-12T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58497
+    "pk": 60298
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.202Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.202Z", 
-        "amount": 0.28, 
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:05.520Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.520Z", 
+        "amount": 0.2968, 
+        "object": 109
+        "account": 15
         "state": "pending", 
-        "coreHours": 4.0
+        "coreHours": 4.24
         "invoice": null, 
-        "date": "2013-12-12T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58498
+    "pk": 60299
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.210Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.210Z", 
-        "amount": 0.1904
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:05.529Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.529Z", 
+        "amount": 0.1232
+        "object": 109
+        "account": 15
         "state": "pending", 
-        "coreHours": 2.72
+        "coreHours": 1.76
         "invoice": null, 
-        "date": "2013-12-12T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-18T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58499
+    "pk": 60300
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.218Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.218Z", 
-        "amount": 0.1792
-        "object": 90
-        "account": 13
+        "updated": "2013-12-18T21:29:05.537Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.537Z", 
+        "amount": 0.2296
+        "object": 109
+        "account": 15
         "state": "pending", 
-        "coreHours": 2.56
+        "coreHours": 3.28
         "invoice": null, 
-        "date": "2013-12-13T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-18T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58500
+    "pk": 60301
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.227Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:44.227Z", 
-        "amount": 0.1904, 
-        "object": 90, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 2.72, 
-        "invoice": null, 
-        "date": "2013-12-13T14:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:20.244Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:05.552Z", 
+        "amount": 0.2072, 
+        "object": 110, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.96, 
+        "invoice": 69, 
+        "date": "2013-11-18T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58501
+    "pk": 60302
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.473Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.242Z", 
-        "amount": 0.308
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:20.351Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.562Z", 
+        "amount": 0.1512
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 59, 
-        "date": "2013-11-13T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.16, 
+        "invoice": 69, 
+        "date": "2013-11-19T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58502
+    "pk": 60303
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.565Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.252Z", 
-        "amount": 0.28
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:20.459Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.570Z", 
+        "amount": 0.1232
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.0, 
-        "invoice": 59, 
-        "date": "2013-11-14T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.76, 
+        "invoice": 69, 
+        "date": "2013-11-19T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58503
+    "pk": 60304
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.656Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.260Z", 
-        "amount": 0.2632
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:20.567Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.578Z", 
+        "amount": 0.1176
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.76, 
-        "invoice": 59, 
-        "date": "2013-11-14T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.68, 
+        "invoice": 69, 
+        "date": "2013-11-19T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58504
+    "pk": 60305
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.747Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.268Z", 
-        "amount": 0.168
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:20.674Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.587Z", 
+        "amount": 0.2912
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.4, 
-        "invoice": 59, 
-        "date": "2013-11-14T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.16, 
+        "invoice": 69, 
+        "date": "2013-11-20T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58505
+    "pk": 60306
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.838Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.276Z", 
-        "amount": 0.2744
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:20.782Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.595Z", 
+        "amount": 0.1456
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.92, 
-        "invoice": 59, 
-        "date": "2013-11-15T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 69, 
+        "date": "2013-11-20T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58506
+    "pk": 60307
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.929Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.285Z", 
-        "amount": 0.1736, 
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:20.890Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.603Z", 
+        "amount": 0.3136, 
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.48, 
-        "invoice": 59, 
-        "date": "2013-11-15T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.48, 
+        "invoice": 69, 
+        "date": "2013-11-20T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58507
+    "pk": 60308
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.038Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.293Z", 
-        "amount": 0.1344
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:20.997Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.611Z", 
+        "amount": 0.252
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.92, 
-        "invoice": 59, 
-        "date": "2013-11-15T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.6, 
+        "invoice": 69, 
+        "date": "2013-11-21T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58508
+    "pk": 60309
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.129Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.301Z", 
-        "amount": 0.1288, 
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:21.105Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.620Z", 
+        "amount": 0.2968, 
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.84, 
-        "invoice": 59, 
-        "date": "2013-11-16T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.24, 
+        "invoice": 69, 
+        "date": "2013-11-21T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58509
+    "pk": 60310
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.220Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.310Z", 
-        "amount": 0.2744, 
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:21.213Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.630Z", 
+        "amount": 0.2184, 
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.92, 
-        "invoice": 59, 
-        "date": "2013-11-16T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.12, 
+        "invoice": 69, 
+        "date": "2013-11-21T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58510
+    "pk": 60311
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.311Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.318Z", 
-        "amount": 0.336
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:21.321Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.645Z", 
+        "amount": 0.3248
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.8, 
-        "invoice": 59, 
-        "date": "2013-11-16T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.64, 
+        "invoice": 69, 
+        "date": "2013-11-22T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58511
+    "pk": 60312
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.402Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.326Z", 
-        "amount": 0.1624
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:21.428Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.655Z", 
+        "amount": 0.1736
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.32, 
-        "invoice": 59, 
-        "date": "2013-11-17T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.48, 
+        "invoice": 69, 
+        "date": "2013-11-22T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58512
+    "pk": 60313
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.493Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.334Z", 
-        "amount": 0.1848, 
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:21.536Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.670Z", 
+        "amount": 0.2968, 
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.64, 
-        "invoice": 59, 
-        "date": "2013-11-17T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.24, 
+        "invoice": 69, 
+        "date": "2013-11-22T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58513
+    "pk": 60314
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.584Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.343Z", 
-        "amount": 0.1904
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:21.644Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.680Z", 
+        "amount": 0.1176
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.72, 
-        "invoice": 59, 
-        "date": "2013-11-17T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.68, 
+        "invoice": 69, 
+        "date": "2013-11-23T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58514
+    "pk": 60315
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.696Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.351Z", 
-        "amount": 0.14, 
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:21.751Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.694Z", 
+        "amount": 0.224, 
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.0, 
-        "invoice": 60, 
-        "date": "2013-11-18T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.2, 
+        "invoice": 69, 
+        "date": "2013-11-23T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58515
+    "pk": 60316
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.787Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.359Z", 
-        "amount": 0.1792
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:21.859Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.705Z", 
+        "amount": 0.1624
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.56, 
-        "invoice": 60, 
-        "date": "2013-11-18T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.32, 
+        "invoice": 69, 
+        "date": "2013-11-23T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58516
+    "pk": 60317
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.878Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.368Z", 
-        "amount": 0.224
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:21.967Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.719Z", 
+        "amount": 0.3192
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 60, 
-        "date": "2013-11-18T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.56, 
+        "invoice": 69, 
+        "date": "2013-11-24T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58517
+    "pk": 60318
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.969Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.376Z", 
-        "amount": 0.2688
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:22.074Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.730Z", 
+        "amount": 0.3304
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.84, 
-        "invoice": 60, 
-        "date": "2013-11-19T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.72, 
+        "invoice": 69, 
+        "date": "2013-11-24T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58518
+    "pk": 60319
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.060Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.384Z", 
-        "amount": 0.1176
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:22.182Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.738Z", 
+        "amount": 0.1288
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 60, 
-        "date": "2013-11-19T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.84, 
+        "invoice": 69, 
+        "date": "2013-11-24T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58519
+    "pk": 60320
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.159Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.392Z", 
-        "amount": 0.2016, 
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:22.298Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.747Z", 
+        "amount": 0.1736, 
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.88, 
-        "invoice": 60, 
-        "date": "2013-11-19T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.48, 
+        "invoice": 70, 
+        "date": "2013-11-25T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58520
+    "pk": 60321
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.251Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.401Z", 
-        "amount": 0.2072
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:22.406Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.755Z", 
+        "amount": 0.3304
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.96, 
-        "invoice": 60, 
-        "date": "2013-11-20T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.72, 
+        "invoice": 70, 
+        "date": "2013-11-25T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58521
+    "pk": 60322
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.342Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.409Z", 
-        "amount": 0.3248
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:22.513Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.763Z", 
+        "amount": 0.2296
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.64, 
-        "invoice": 60, 
-        "date": "2013-11-20T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.28, 
+        "invoice": 70, 
+        "date": "2013-11-25T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58522
+    "pk": 60323
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.435Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.417Z", 
-        "amount": 0.1232, 
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:22.663Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.771Z", 
+        "amount": 0.2072, 
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.76, 
-        "invoice": 60, 
-        "date": "2013-11-20T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.96, 
+        "invoice": 70, 
+        "date": "2013-11-26T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58523
+    "pk": 60324
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.526Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.426Z", 
-        "amount": 0.336, 
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:22.770Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.780Z", 
+        "amount": 0.1456, 
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.8, 
-        "invoice": 60, 
-        "date": "2013-11-21T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 70, 
+        "date": "2013-11-26T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58524
+    "pk": 60325
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.634Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.434Z", 
-        "amount": 0.1736, 
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:22.878Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.788Z", 
+        "amount": 0.2856, 
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.48, 
-        "invoice": 60, 
-        "date": "2013-11-21T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.08, 
+        "invoice": 70, 
+        "date": "2013-11-26T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58525
+    "pk": 60326
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.725Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.442Z", 
-        "amount": 0.168
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:22.986Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.796Z", 
+        "amount": 0.2352
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.4, 
-        "invoice": 60, 
-        "date": "2013-11-21T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.36, 
+        "invoice": 70, 
+        "date": "2013-11-27T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58526
+    "pk": 60327
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.816Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.450Z", 
-        "amount": 0.2968, 
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:23.093Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.804Z", 
+        "amount": 0.2408, 
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.24, 
-        "invoice": 60, 
-        "date": "2013-11-22T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.44, 
+        "invoice": 70, 
+        "date": "2013-11-27T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58527
+    "pk": 60328
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.932Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.459Z", 
-        "amount": 0.1288, 
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:23.201Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.813Z", 
+        "amount": 0.2128, 
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.84, 
-        "invoice": 60, 
-        "date": "2013-11-22T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.04, 
+        "invoice": 70, 
+        "date": "2013-11-27T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58528
+    "pk": 60329
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.023Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.467Z", 
-        "amount": 0.1736
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:23.309Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.821Z", 
+        "amount": 0.2408
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.48, 
-        "invoice": 60, 
-        "date": "2013-11-22T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.44, 
+        "invoice": 70, 
+        "date": "2013-11-28T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58529
+    "pk": 60330
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.114Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.475Z", 
-        "amount": 0.1456, 
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:23.416Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.829Z", 
+        "amount": 0.2296, 
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.08, 
-        "invoice": 60, 
-        "date": "2013-11-23T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.28, 
+        "invoice": 70, 
+        "date": "2013-11-28T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58530
+    "pk": 60331
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.206Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.484Z", 
-        "amount": 0.28
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:23.524Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.838Z", 
+        "amount": 0.2576
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.0, 
-        "invoice": 60, 
-        "date": "2013-11-23T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.68, 
+        "invoice": 70, 
+        "date": "2013-11-28T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58531
+    "pk": 60332
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.404Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.492Z", 
-        "amount": 0.2632
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:23.632Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.846Z", 
+        "amount": 0.3304
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.76, 
-        "invoice": 60, 
-        "date": "2013-11-23T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.72, 
+        "invoice": 70, 
+        "date": "2013-11-29T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58532
+    "pk": 60333
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.744Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.500Z", 
-        "amount": 0.3304
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:23.739Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.854Z", 
+        "amount": 0.1176
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.72, 
-        "invoice": 60, 
-        "date": "2013-11-24T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.68, 
+        "invoice": 70, 
+        "date": "2013-11-29T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58533
+    "pk": 60334
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.835Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.508Z", 
-        "amount": 0.112, 
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:23.847Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.862Z", 
+        "amount": 0.2072, 
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.6, 
-        "invoice": 60, 
-        "date": "2013-11-24T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.96, 
+        "invoice": 70, 
+        "date": "2013-11-29T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58534
+    "pk": 60335
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.926Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.517Z", 
-        "amount": 0.112, 
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:23.955Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.871Z", 
+        "amount": 0.2632, 
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.6, 
-        "invoice": 60, 
-        "date": "2013-11-24T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.76, 
+        "invoice": 70, 
+        "date": "2013-11-30T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58535
+    "pk": 60336
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.026Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.525Z", 
-        "amount": 0.2688
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:24.062Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.879Z", 
+        "amount": 0.1736
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.84, 
-        "invoice": 61, 
-        "date": "2013-11-25T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.48, 
+        "invoice": 70, 
+        "date": "2013-11-30T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58536
+    "pk": 60337
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.117Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.533Z", 
-        "amount": 0.3024
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:24.170Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.887Z", 
+        "amount": 0.2632
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.32, 
-        "invoice": 61, 
-        "date": "2013-11-25T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.76, 
+        "invoice": 70, 
+        "date": "2013-11-30T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58537
+    "pk": 60338
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.208Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.541Z", 
-        "amount": 0.2576, 
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:24.278Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.896Z", 
+        "amount": 0.3136, 
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.68, 
-        "invoice": 61, 
-        "date": "2013-11-25T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.48, 
+        "invoice": 70, 
+        "date": "2013-12-01T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58538
+    "pk": 60339
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.304Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.550Z", 
-        "amount": 0.252
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:24.385Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.904Z", 
+        "amount": 0.2744
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.6, 
-        "invoice": 61, 
-        "date": "2013-11-26T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.92, 
+        "invoice": 70, 
+        "date": "2013-12-01T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58539
+    "pk": 60340
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.395Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.558Z", 
-        "amount": 0.1904
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:24.493Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.912Z", 
+        "amount": 0.2856
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.72, 
-        "invoice": 61, 
-        "date": "2013-11-26T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.08, 
+        "invoice": 70, 
+        "date": "2013-12-01T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58540
+    "pk": 60341
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.486Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.566Z", 
-        "amount": 0.2912
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:24.609Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.921Z", 
+        "amount": 0.168
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 61, 
-        "date": "2013-11-26T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.4, 
+        "invoice": 71, 
+        "date": "2013-12-02T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58541
+    "pk": 60342
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.577Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.575Z", 
-        "amount": 0.1792
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:24.717Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.929Z", 
+        "amount": 0.14
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.56, 
-        "invoice": 61, 
-        "date": "2013-11-27T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.0, 
+        "invoice": 71, 
+        "date": "2013-12-02T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58542
+    "pk": 60343
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.668Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.583Z", 
-        "amount": 0.2856
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:24.825Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.937Z", 
+        "amount": 0.1288
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.08, 
-        "invoice": 61, 
-        "date": "2013-11-27T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.84, 
+        "invoice": 71, 
+        "date": "2013-12-02T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58543
+    "pk": 60344
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.759Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.591Z", 
-        "amount": 0.2184
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:24.932Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.945Z", 
+        "amount": 0.2632
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.12, 
-        "invoice": 61, 
-        "date": "2013-11-27T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.76, 
+        "invoice": 71, 
+        "date": "2013-12-03T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58544
+    "pk": 60345
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.851Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.599Z", 
-        "amount": 0.1176
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:25.040Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.954Z", 
+        "amount": 0.2912
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 61, 
-        "date": "2013-11-28T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.16, 
+        "invoice": 71, 
+        "date": "2013-12-03T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58545
+    "pk": 60346
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.942Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.608Z", 
-        "amount": 0.2912
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:25.148Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.962Z", 
+        "amount": 0.3304
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 61, 
-        "date": "2013-11-28T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.72, 
+        "invoice": 71, 
+        "date": "2013-12-03T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58546
+    "pk": 60347
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.033Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.616Z", 
-        "amount": 0.1512
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:25.255Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.970Z", 
+        "amount": 0.2688
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.16, 
-        "invoice": 61, 
-        "date": "2013-11-28T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.84, 
+        "invoice": 71, 
+        "date": "2013-12-04T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58547
+    "pk": 60348
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.124Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.624Z", 
-        "amount": 0.1232
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:25.363Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.978Z", 
+        "amount": 0.308
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.76, 
-        "invoice": 61, 
-        "date": "2013-11-29T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.4, 
+        "invoice": 71, 
+        "date": "2013-12-04T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58548
+    "pk": 60349
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.215Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.633Z", 
-        "amount": 0.14
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:25.471Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.987Z", 
+        "amount": 0.1288
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.0, 
-        "invoice": 61, 
-        "date": "2013-11-29T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.84, 
+        "invoice": 71, 
+        "date": "2013-12-04T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58549
+    "pk": 60350
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.306Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.641Z", 
-        "amount": 0.1176
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:25.578Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:05.995Z", 
+        "amount": 0.3248
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 61, 
-        "date": "2013-11-29T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.64, 
+        "invoice": 71, 
+        "date": "2013-12-05T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58550
+    "pk": 60351
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.397Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.649Z", 
-        "amount": 0.1176
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:25.686Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.003Z", 
+        "amount": 0.2968
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 61, 
-        "date": "2013-11-30T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.24, 
+        "invoice": 71, 
+        "date": "2013-12-05T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58551
+    "pk": 60352
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.490Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.657Z", 
-        "amount": 0.2016
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:25.794Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.012Z", 
+        "amount": 0.3024
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.88, 
-        "invoice": 61, 
-        "date": "2013-11-30T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.32, 
+        "invoice": 71, 
+        "date": "2013-12-05T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58552
+    "pk": 60353
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.581Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.666Z", 
-        "amount": 0.1624, 
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:25.902Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.020Z", 
+        "amount": 0.224, 
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.32, 
-        "invoice": 61, 
-        "date": "2013-11-30T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.2, 
+        "invoice": 71, 
+        "date": "2013-12-06T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58553
+    "pk": 60354
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.672Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.674Z", 
-        "amount": 0.2296
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:26.009Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.028Z", 
+        "amount": 0.1848
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.28, 
-        "invoice": 61, 
-        "date": "2013-12-01T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.64, 
+        "invoice": 71, 
+        "date": "2013-12-06T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58554
+    "pk": 60355
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.763Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.682Z", 
-        "amount": 0.1176, 
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:26.117Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.036Z", 
+        "amount": 0.2576, 
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 61, 
-        "date": "2013-12-01T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.68, 
+        "invoice": 71, 
+        "date": "2013-12-06T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58555
+    "pk": 60356
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.855Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.690Z", 
-        "amount": 0.2016
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:26.225Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.045Z", 
+        "amount": 0.2968
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.88, 
-        "invoice": 61, 
-        "date": "2013-12-01T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.24, 
+        "invoice": 71, 
+        "date": "2013-12-07T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58556
+    "pk": 60357
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.954Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.699Z", 
-        "amount": 0.2296
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:26.332Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.053Z", 
+        "amount": 0.168
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.28, 
-        "invoice": 62, 
-        "date": "2013-12-02T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.4, 
+        "invoice": 71, 
+        "date": "2013-12-07T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58557
+    "pk": 60358
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.045Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.707Z", 
-        "amount": 0.2856
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:26.440Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.061Z", 
+        "amount": 0.1848
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.08, 
-        "invoice": 62, 
-        "date": "2013-12-02T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.64, 
+        "invoice": 71, 
+        "date": "2013-12-07T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58558
+    "pk": 60359
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.136Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.715Z", 
-        "amount": 0.2744
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:26.548Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.070Z", 
+        "amount": 0.2128
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.92, 
-        "invoice": 62, 
-        "date": "2013-12-02T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.04, 
+        "invoice": 71, 
+        "date": "2013-12-08T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58559
+    "pk": 60360
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.227Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.724Z", 
-        "amount": 0.1344
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:26.655Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.078Z", 
+        "amount": 0.1568
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.92, 
-        "invoice": 62, 
-        "date": "2013-12-03T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.24, 
+        "invoice": 71, 
+        "date": "2013-12-08T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58560
+    "pk": 60361
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.319Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.732Z", 
-        "amount": 0.28
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:26.763Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.086Z", 
+        "amount": 0.2576
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.0, 
-        "invoice": 62, 
-        "date": "2013-12-03T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.68, 
+        "invoice": 71, 
+        "date": "2013-12-08T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58561
+    "pk": 60362
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.410Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.740Z", 
-        "amount": 0.3136
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:26.879Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.094Z", 
+        "amount": 0.1792
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.48, 
-        "invoice": 62, 
-        "date": "2013-12-03T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.56, 
+        "invoice": 72, 
+        "date": "2013-12-09T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58562
+    "pk": 60363
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.501Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.749Z", 
-        "amount": 0.1456, 
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:26.987Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.103Z", 
+        "amount": 0.2856, 
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.08, 
-        "invoice": 62, 
-        "date": "2013-12-04T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.08, 
+        "invoice": 72, 
+        "date": "2013-12-09T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58563
+    "pk": 60364
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.592Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.757Z", 
-        "amount": 0.2744
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:27.094Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.111Z", 
+        "amount": 0.1848
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.92, 
-        "invoice": 62, 
-        "date": "2013-12-04T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.64, 
+        "invoice": 72, 
+        "date": "2013-12-09T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58564
+    "pk": 60365
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.683Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.765Z", 
-        "amount": 0.3024, 
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:27.202Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.119Z", 
+        "amount": 0.1344, 
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.32, 
-        "invoice": 62, 
-        "date": "2013-12-04T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.92, 
+        "invoice": 72, 
+        "date": "2013-12-10T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58565
+    "pk": 60366
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.774Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.773Z", 
-        "amount": 0.2576
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:27.310Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.128Z", 
+        "amount": 0.1792
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.68, 
-        "invoice": 62, 
-        "date": "2013-12-05T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.56, 
+        "invoice": 72, 
+        "date": "2013-12-10T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58566
+    "pk": 60367
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.865Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.782Z", 
-        "amount": 0.2072
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:27.418Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.136Z", 
+        "amount": 0.196
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.96, 
-        "invoice": 62, 
-        "date": "2013-12-05T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 72, 
+        "date": "2013-12-10T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58567
+    "pk": 60368
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.956Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.790Z", 
-        "amount": 0.1904
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:27.525Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.144Z", 
+        "amount": 0.1232
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.72, 
-        "invoice": 62, 
-        "date": "2013-12-05T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.76, 
+        "invoice": 72, 
+        "date": "2013-12-11T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58568
+    "pk": 60369
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.048Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.798Z", 
-        "amount": 0.1512, 
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:27.691Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.153Z", 
+        "amount": 0.3192, 
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.16, 
-        "invoice": 62, 
-        "date": "2013-12-06T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.56, 
+        "invoice": 72, 
+        "date": "2013-12-11T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58569
+    "pk": 60370
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.145Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.807Z", 
-        "amount": 0.2296
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:27.798Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.161Z", 
+        "amount": 0.2184
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.28, 
-        "invoice": 62, 
-        "date": "2013-12-06T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.12, 
+        "invoice": 72, 
+        "date": "2013-12-11T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58570
+    "pk": 60371
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.236Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.815Z", 
-        "amount": 0.2128
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:27.906Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.169Z", 
+        "amount": 0.3192
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.04, 
-        "invoice": 62, 
-        "date": "2013-12-06T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.56, 
+        "invoice": 72, 
+        "date": "2013-12-12T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58571
+    "pk": 60372
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.327Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.823Z", 
-        "amount": 0.1568
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:28.014Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.177Z", 
+        "amount": 0.3024
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.24, 
-        "invoice": 62, 
-        "date": "2013-12-07T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.32, 
+        "invoice": 72, 
+        "date": "2013-12-12T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58572
+    "pk": 60373
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.419Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.831Z", 
-        "amount": 0.2296
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:28.122Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.186Z", 
+        "amount": 0.1288
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.28, 
-        "invoice": 62, 
-        "date": "2013-12-07T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.84, 
+        "invoice": 72, 
+        "date": "2013-12-12T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58573
+    "pk": 60374
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.510Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.840Z", 
-        "amount": 0.224
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:28.229Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.194Z", 
+        "amount": 0.1456
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 62, 
-        "date": "2013-12-07T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 72, 
+        "date": "2013-12-13T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58574
+    "pk": 60375
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.601Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.848Z", 
-        "amount": 0.196
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:28.337Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.202Z", 
+        "amount": 0.1288
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 62, 
-        "date": "2013-12-08T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.84, 
+        "invoice": 72, 
+        "date": "2013-12-13T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58575
+    "pk": 60376
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.692Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.856Z", 
-        "amount": 0.308
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:28.445Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.210Z", 
+        "amount": 0.2632
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 62, 
-        "date": "2013-12-08T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.76, 
+        "invoice": 72, 
+        "date": "2013-12-13T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58576
+    "pk": 60377
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.783Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.865Z", 
-        "amount": 0.2128
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:28.552Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.219Z", 
+        "amount": 0.3192
+        "object": 110
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.04, 
-        "invoice": 62, 
-        "date": "2013-12-08T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.56, 
+        "invoice": 72, 
+        "date": "2013-12-14T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58577
+    "pk": 60378
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.873Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:44.873Z", 
-        "amount": 0.2408, 
-        "object": 91, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 3.44, 
-        "invoice": null, 
-        "date": "2013-12-09T06:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.660Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:06.227Z", 
+        "amount": 0.224, 
+        "object": 110, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.2, 
+        "invoice": 72, 
+        "date": "2013-12-14T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58578
+    "pk": 60379
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.881Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:44.881Z", 
-        "amount": 0.2632, 
-        "object": 91, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 3.76, 
-        "invoice": null, 
-        "date": "2013-12-09T14:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.768Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:06.235Z", 
+        "amount": 0.2184, 
+        "object": 110, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.12, 
+        "invoice": 72, 
+        "date": "2013-12-14T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58579
+    "pk": 60380
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.890Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:44.890Z", 
-        "amount": 0.3192, 
-        "object": 91, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 4.56, 
-        "invoice": null, 
-        "date": "2013-12-09T22:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.875Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:06.244Z", 
+        "amount": 0.196, 
+        "object": 110, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 2.8, 
+        "invoice": 72, 
+        "date": "2013-12-15T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58580
+    "pk": 60381
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.898Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:44.898Z", 
-        "amount": 0.2352, 
-        "object": 91, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 3.36, 
-        "invoice": null, 
-        "date": "2013-12-10T06:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.983Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:06.252Z", 
+        "amount": 0.28, 
+        "object": 110, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.0, 
+        "invoice": 72, 
+        "date": "2013-12-15T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58581
+    "pk": 60382
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.906Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:44.906Z", 
-        "amount": 0.1456, 
-        "object": 91, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 2.08, 
-        "invoice": null, 
-        "date": "2013-12-10T14:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:29.091Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:06.260Z", 
+        "amount": 0.224, 
+        "object": 110, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.2, 
+        "invoice": 72, 
+        "date": "2013-12-15T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58582
+    "pk": 60383
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.914Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.914Z", 
-        "amount": 0.3136
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:06.269Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.268Z", 
+        "amount": 0.3304
+        "object": 110
+        "account": 15
         "state": "pending", 
-        "coreHours": 4.48
+        "coreHours": 4.72
         "invoice": null, 
-        "date": "2013-12-10T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58583
+    "pk": 60384
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.923Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.923Z", 
-        "amount": 0.1736
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:06.277Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.277Z", 
+        "amount": 0.1848
+        "object": 110
+        "account": 15
         "state": "pending", 
-        "coreHours": 2.48
+        "coreHours": 2.64
         "invoice": null, 
-        "date": "2013-12-11T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58584
+    "pk": 60385
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.931Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.931Z", 
-        "amount": 0.2352
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:06.285Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.285Z", 
+        "amount": 0.28
+        "object": 110
+        "account": 15
         "state": "pending", 
-        "coreHours": 3.36
+        "coreHours": 4.0
         "invoice": null, 
-        "date": "2013-12-11T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58585
+    "pk": 60386
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.939Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.939Z", 
-        "amount": 0.2296, 
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:06.293Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.293Z", 
+        "amount": 0.1176, 
+        "object": 110
+        "account": 15
         "state": "pending", 
-        "coreHours": 3.28, 
+        "coreHours": 1.68, 
         "invoice": null, 
-        "date": "2013-12-11T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58586
+    "pk": 60387
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.947Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.947Z", 
-        "amount": 0.1456, 
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:06.302Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.302Z", 
+        "amount": 0.2016, 
+        "object": 110
+        "account": 15
         "state": "pending", 
-        "coreHours": 2.08, 
+        "coreHours": 2.88, 
         "invoice": null, 
-        "date": "2013-12-12T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58587
+    "pk": 60388
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.957Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.957Z", 
-        "amount": 0.2688
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:06.310Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.310Z", 
+        "amount": 0.2576
+        "object": 110
+        "account": 15
         "state": "pending", 
-        "coreHours": 3.84
+        "coreHours": 3.68
         "invoice": null, 
-        "date": "2013-12-12T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58588
+    "pk": 60389
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.966Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.966Z", 
-        "amount": 0.224
-        "object": 91
-        "account": 13
+        "updated": "2013-12-18T21:29:06.318Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.318Z", 
+        "amount": 0.336
+        "object": 110
+        "account": 15
         "state": "pending", 
-        "coreHours": 3.2
+        "coreHours": 4.8
         "invoice": null, 
-        "date": "2013-12-12T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-18T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58589
+    "pk": 60390
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.974Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.974Z", 
+        "updated": "2013-12-18T21:29:06.326Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.326Z", 
         "amount": 0.3248, 
-        "object": 91
-        "account": 13
+        "object": 110
+        "account": 15
         "state": "pending", 
         "coreHours": 4.64, 
         "invoice": null, 
-        "date": "2013-12-13T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-18T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58590
+    "pk": 60391
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:44.982Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:44.982Z", 
-        "amount": 0.2352, 
-        "object": 91, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 3.36, 
-        "invoice": null, 
-        "date": "2013-12-13T14:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:20.252Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:06.341Z", 
+        "amount": 0.3248, 
+        "object": 111, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 4.64, 
+        "invoice": 69, 
+        "date": "2013-11-18T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58591
+    "pk": 60392
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.465Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:44.997Z", 
-        "amount": 0.308, 
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:20.360Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.351Z", 
+        "amount": 0.3248, 
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 59, 
-        "date": "2013-11-13T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.64, 
+        "invoice": 69, 
+        "date": "2013-11-19T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58592
+    "pk": 60393
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.556Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.007Z", 
-        "amount": 0.168
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:20.467Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.360Z", 
+        "amount": 0.2576
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.4, 
-        "invoice": 59, 
-        "date": "2013-11-14T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.68, 
+        "invoice": 69, 
+        "date": "2013-11-19T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58593
+    "pk": 60394
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.648Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.015Z", 
-        "amount": 0.252
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:20.575Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.368Z", 
+        "amount": 0.3136
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.6, 
-        "invoice": 59, 
-        "date": "2013-11-14T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.48, 
+        "invoice": 69, 
+        "date": "2013-11-19T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58594
+    "pk": 60395
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.739Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.024Z", 
-        "amount": 0.28
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:20.683Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.376Z", 
+        "amount": 0.112
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.0, 
-        "invoice": 59, 
-        "date": "2013-11-14T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.6, 
+        "invoice": 69, 
+        "date": "2013-11-20T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58595
+    "pk": 60396
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.830Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.032Z", 
-        "amount": 0.2576
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:20.790Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.384Z", 
+        "amount": 0.28
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.68, 
-        "invoice": 59, 
-        "date": "2013-11-15T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.0, 
+        "invoice": 69, 
+        "date": "2013-11-20T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58596
+    "pk": 60397
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.921Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.040Z", 
-        "amount": 0.1736
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:20.898Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.393Z", 
+        "amount": 0.1344
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.48, 
-        "invoice": 59, 
-        "date": "2013-11-15T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.92, 
+        "invoice": 69, 
+        "date": "2013-11-20T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58597
+    "pk": 60398
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.029Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.049Z", 
-        "amount": 0.1512
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:21.006Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.401Z", 
+        "amount": 0.1176
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.16, 
-        "invoice": 59, 
-        "date": "2013-11-15T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.68, 
+        "invoice": 69, 
+        "date": "2013-11-21T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58598
+    "pk": 60399
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.120Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.057Z", 
-        "amount": 0.112
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:21.113Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.409Z", 
+        "amount": 0.1176
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.6, 
-        "invoice": 59, 
-        "date": "2013-11-16T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.68, 
+        "invoice": 69, 
+        "date": "2013-11-21T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58599
+    "pk": 60400
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.212Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.065Z", 
-        "amount": 0.2464, 
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:21.221Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.417Z", 
+        "amount": 0.3024, 
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 59, 
-        "date": "2013-11-16T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.32, 
+        "invoice": 69, 
+        "date": "2013-11-21T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58600
+    "pk": 60401
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.303Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.073Z", 
-        "amount": 0.2128
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:21.329Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.426Z", 
+        "amount": 0.1232
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.04, 
-        "invoice": 59, 
-        "date": "2013-11-16T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.76, 
+        "invoice": 69, 
+        "date": "2013-11-22T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58601
+    "pk": 60402
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.394Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.082Z", 
-        "amount": 0.3024
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:21.436Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.434Z", 
+        "amount": 0.252
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.32, 
-        "invoice": 59, 
-        "date": "2013-11-17T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.6, 
+        "invoice": 69, 
+        "date": "2013-11-22T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58602
+    "pk": 60403
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.485Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.090Z", 
-        "amount": 0.308
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:21.544Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.442Z", 
+        "amount": 0.1624
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 59, 
-        "date": "2013-11-17T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.32, 
+        "invoice": 69, 
+        "date": "2013-11-22T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58603
+    "pk": 60404
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.576Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.098Z", 
-        "amount": 0.3304
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:21.652Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.451Z", 
+        "amount": 0.2632
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.72, 
-        "invoice": 59, 
-        "date": "2013-11-17T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.76, 
+        "invoice": 69, 
+        "date": "2013-11-23T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58604
+    "pk": 60405
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.675Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.106Z", 
-        "amount": 0.2688, 
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:21.760Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.459Z", 
+        "amount": 0.1848, 
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.84, 
-        "invoice": 60, 
-        "date": "2013-11-18T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.64, 
+        "invoice": 69, 
+        "date": "2013-11-23T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58605
+    "pk": 60406
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.778Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.115Z", 
-        "amount": 0.3192
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:21.867Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.467Z", 
+        "amount": 0.2184
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.56, 
-        "invoice": 60, 
-        "date": "2013-11-18T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.12, 
+        "invoice": 69, 
+        "date": "2013-11-23T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58606
+    "pk": 60407
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.870Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.123Z", 
-        "amount": 0.2352
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:21.975Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.475Z", 
+        "amount": 0.2408
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 60, 
-        "date": "2013-11-18T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.44, 
+        "invoice": 69, 
+        "date": "2013-11-24T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58607
+    "pk": 60408
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.961Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.131Z", 
-        "amount": 0.2856
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:22.083Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.484Z", 
+        "amount": 0.2184
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.08, 
-        "invoice": 60, 
-        "date": "2013-11-19T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.12, 
+        "invoice": 69, 
+        "date": "2013-11-24T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58608
+    "pk": 60409
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.052Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.140Z", 
-        "amount": 0.2408, 
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:22.190Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.492Z", 
+        "amount": 0.1288, 
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.44, 
-        "invoice": 60, 
-        "date": "2013-11-19T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.84, 
+        "invoice": 69, 
+        "date": "2013-11-24T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58609
+    "pk": 60410
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.151Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.148Z", 
-        "amount": 0.2128, 
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:22.306Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.500Z", 
+        "amount": 0.2688, 
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.04, 
-        "invoice": 60, 
-        "date": "2013-11-19T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.84, 
+        "invoice": 70, 
+        "date": "2013-11-25T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58610
+    "pk": 60411
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.242Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.156Z", 
-        "amount": 0.2464
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:22.414Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.509Z", 
+        "amount": 0.2072
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 60, 
-        "date": "2013-11-20T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.96, 
+        "invoice": 70, 
+        "date": "2013-11-25T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58611
+    "pk": 60412
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.333Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.164Z", 
-        "amount": 0.14
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:22.522Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.517Z", 
+        "amount": 0.1232
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.0, 
-        "invoice": 60, 
-        "date": "2013-11-20T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.76, 
+        "invoice": 70, 
+        "date": "2013-11-25T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58612
+    "pk": 60413
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.427Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.173Z", 
-        "amount": 0.1568
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:22.671Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.525Z", 
+        "amount": 0.1792
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.24, 
-        "invoice": 60, 
-        "date": "2013-11-20T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.56, 
+        "invoice": 70, 
+        "date": "2013-11-26T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58613
+    "pk": 60414
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.518Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.181Z", 
-        "amount": 0.2296
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:22.779Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.534Z", 
+        "amount": 0.3024
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.28, 
-        "invoice": 60, 
-        "date": "2013-11-21T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.32, 
+        "invoice": 70, 
+        "date": "2013-11-26T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58614
+    "pk": 60415
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.626Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.189Z", 
-        "amount": 0.1232
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:22.886Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.542Z", 
+        "amount": 0.1568
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.76, 
-        "invoice": 60, 
-        "date": "2013-11-21T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.24, 
+        "invoice": 70, 
+        "date": "2013-11-26T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58615
+    "pk": 60416
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.717Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.198Z", 
-        "amount": 0.224
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:22.994Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.550Z", 
+        "amount": 0.1232
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 60, 
-        "date": "2013-11-21T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.76, 
+        "invoice": 70, 
+        "date": "2013-11-27T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58616
+    "pk": 60417
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.808Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.206Z", 
-        "amount": 0.2856
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:23.102Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.558Z", 
+        "amount": 0.3248
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.08, 
-        "invoice": 60, 
-        "date": "2013-11-22T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.64, 
+        "invoice": 70, 
+        "date": "2013-11-27T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58617
+    "pk": 60418
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.924Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.214Z", 
-        "amount": 0.336
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:23.209Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.567Z", 
+        "amount": 0.14
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.8, 
-        "invoice": 60, 
-        "date": "2013-11-22T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.0, 
+        "invoice": 70, 
+        "date": "2013-11-27T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58618
+    "pk": 60419
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.015Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.222Z", 
-        "amount": 0.3192, 
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:23.317Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.575Z", 
+        "amount": 0.2352, 
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.56, 
-        "invoice": 60, 
-        "date": "2013-11-22T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.36, 
+        "invoice": 70, 
+        "date": "2013-11-28T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58619
+    "pk": 60420
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.106Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.231Z", 
-        "amount": 0.252
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:23.425Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.583Z", 
+        "amount": 0.1568
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.6, 
-        "invoice": 60, 
-        "date": "2013-11-23T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.24, 
+        "invoice": 70, 
+        "date": "2013-11-28T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58620
+    "pk": 60421
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.197Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.239Z", 
-        "amount": 0.1512
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:23.532Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.591Z", 
+        "amount": 0.1288
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.16, 
-        "invoice": 60, 
-        "date": "2013-11-23T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.84, 
+        "invoice": 70, 
+        "date": "2013-11-28T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58621
+    "pk": 60422
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.363Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.247Z", 
-        "amount": 0.14
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:23.640Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.600Z", 
+        "amount": 0.2912
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.0, 
-        "invoice": 60, 
-        "date": "2013-11-23T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.16, 
+        "invoice": 70, 
+        "date": "2013-11-29T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58622
+    "pk": 60423
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.736Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.256Z", 
+        "updated": "2013-12-18T21:29:23.748Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.608Z", 
         "amount": 0.14, 
-        "object": 92
-        "account": 13
+        "object": 111
+        "account": 15
         "state": "invoiced", 
         "coreHours": 2.0, 
-        "invoice": 60, 
-        "date": "2013-11-24T06:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 70, 
+        "date": "2013-11-29T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58623
+    "pk": 60424
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.827Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.264Z", 
-        "amount": 0.1288
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:23.855Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.616Z", 
+        "amount": 0.1792
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.84, 
-        "invoice": 60, 
-        "date": "2013-11-24T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.56, 
+        "invoice": 70, 
+        "date": "2013-11-29T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58624
+    "pk": 60425
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.918Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.272Z", 
-        "amount": 0.1288
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:23.963Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.625Z", 
+        "amount": 0.252
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.84, 
-        "invoice": 60, 
-        "date": "2013-11-24T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.6, 
+        "invoice": 70, 
+        "date": "2013-11-30T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58625
+    "pk": 60426
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.017Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.280Z", 
-        "amount": 0.2296, 
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:24.071Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.633Z", 
+        "amount": 0.196, 
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.28, 
-        "invoice": 61, 
-        "date": "2013-11-25T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 70, 
+        "date": "2013-11-30T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58626
+    "pk": 60427
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.108Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.289Z", 
-        "amount": 0.14, 
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:24.178Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.641Z", 
+        "amount": 0.2744, 
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.0, 
-        "invoice": 61, 
-        "date": "2013-11-25T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.92, 
+        "invoice": 70, 
+        "date": "2013-11-30T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58627
+    "pk": 60428
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.199Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.297Z", 
-        "amount": 0.2464
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:24.286Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.650Z", 
+        "amount": 0.168
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 61, 
-        "date": "2013-11-25T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.4, 
+        "invoice": 70, 
+        "date": "2013-12-01T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58628
+    "pk": 60429
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.296Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.305Z", 
-        "amount": 0.1904, 
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:24.394Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.658Z", 
+        "amount": 0.3024, 
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.72, 
-        "invoice": 61, 
-        "date": "2013-11-26T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.32, 
+        "invoice": 70, 
+        "date": "2013-12-01T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58629
+    "pk": 60430
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.387Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.314Z", 
-        "amount": 0.2408
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:24.501Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.666Z", 
+        "amount": 0.3192
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.44, 
-        "invoice": 61, 
-        "date": "2013-11-26T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.56, 
+        "invoice": 70, 
+        "date": "2013-12-01T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58630
+    "pk": 60431
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.478Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.322Z", 
-        "amount": 0.1736, 
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:24.617Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.674Z", 
+        "amount": 0.3136, 
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.48, 
-        "invoice": 61, 
-        "date": "2013-11-26T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.48, 
+        "invoice": 71, 
+        "date": "2013-12-02T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58631
+    "pk": 60432
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.569Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.330Z", 
-        "amount": 0.1512
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:24.725Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.683Z", 
+        "amount": 0.3024
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.16, 
-        "invoice": 61, 
-        "date": "2013-11-27T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.32, 
+        "invoice": 71, 
+        "date": "2013-12-02T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58632
+    "pk": 60433
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.660Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.339Z", 
-        "amount": 0.2912
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:24.833Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.691Z", 
+        "amount": 0.1176
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 61, 
-        "date": "2013-11-27T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.68, 
+        "invoice": 71, 
+        "date": "2013-12-02T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58633
+    "pk": 60434
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.751Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.347Z", 
-        "amount": 0.1512, 
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:24.941Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.699Z", 
+        "amount": 0.1232, 
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.16, 
-        "invoice": 61, 
-        "date": "2013-11-27T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.76, 
+        "invoice": 71, 
+        "date": "2013-12-03T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58634
+    "pk": 60435
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.842Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.355Z", 
+        "updated": "2013-12-18T21:29:25.048Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.708Z", 
         "amount": 0.2632, 
-        "object": 92
-        "account": 13
+        "object": 111
+        "account": 15
         "state": "invoiced", 
         "coreHours": 3.76, 
-        "invoice": 61, 
-        "date": "2013-11-28T06:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 71, 
+        "date": "2013-12-03T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58635
+    "pk": 60436
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.933Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.363Z", 
-        "amount": 0.2968, 
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:25.156Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.716Z", 
+        "amount": 0.2128, 
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.24, 
-        "invoice": 61, 
-        "date": "2013-11-28T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.04, 
+        "invoice": 71, 
+        "date": "2013-12-03T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58636
+    "pk": 60437
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.025Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.372Z", 
-        "amount": 0.2352
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:25.264Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.724Z", 
+        "amount": 0.2968
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 61, 
-        "date": "2013-11-28T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.24, 
+        "invoice": 71, 
+        "date": "2013-12-04T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58637
+    "pk": 60438
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.116Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.380Z", 
-        "amount": 0.252, 
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:25.371Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.732Z", 
+        "amount": 0.2912, 
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.6, 
-        "invoice": 61, 
-        "date": "2013-11-29T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.16, 
+        "invoice": 71, 
+        "date": "2013-12-04T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58638
+    "pk": 60439
     "model": "core.charge", 
-    "fields": {
-        "updated": "2013-12-13T22:20:03.207Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.388Z", 
-        "amount": 0.2072
-        "object": 92
-        "account": 13
+    "fields": {
+        "updated": "2013-12-18T21:29:25.479Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.741Z", 
+        "amount": 0.1848
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.96, 
-        "invoice": 61, 
-        "date": "2013-11-29T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.64, 
+        "invoice": 71, 
+        "date": "2013-12-04T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58639
+    "pk": 60440
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.298Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.396Z", 
-        "amount": 0.224
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:25.587Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.749Z", 
+        "amount": 0.1568
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 61, 
-        "date": "2013-11-29T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.24, 
+        "invoice": 71, 
+        "date": "2013-12-05T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58640
+    "pk": 60441
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.389Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.405Z", 
-        "amount": 0.2408
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:25.694Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.757Z", 
+        "amount": 0.2296
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.44, 
-        "invoice": 61, 
-        "date": "2013-11-30T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.28, 
+        "invoice": 71, 
+        "date": "2013-12-05T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58641
+    "pk": 60442
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.482Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.413Z", 
-        "amount": 0.1512
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:25.802Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.766Z", 
+        "amount": 0.1848
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.16, 
-        "invoice": 61, 
-        "date": "2013-11-30T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.64, 
+        "invoice": 71, 
+        "date": "2013-12-05T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58642
+    "pk": 60443
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.573Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.421Z", 
-        "amount": 0.1736
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:25.910Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.774Z", 
+        "amount": 0.112
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.48, 
-        "invoice": 61, 
-        "date": "2013-11-30T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.6, 
+        "invoice": 71, 
+        "date": "2013-12-06T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58643
+    "pk": 60444
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.664Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.430Z", 
-        "amount": 0.3136, 
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:26.017Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.782Z", 
+        "amount": 0.2296, 
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.48, 
-        "invoice": 61, 
-        "date": "2013-12-01T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.28, 
+        "invoice": 71, 
+        "date": "2013-12-06T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58644
+    "pk": 60445
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.755Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.438Z", 
-        "amount": 0.2184
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:26.125Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.790Z", 
+        "amount": 0.1232
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.12, 
-        "invoice": 61, 
-        "date": "2013-12-01T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.76, 
+        "invoice": 71, 
+        "date": "2013-12-06T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58645
+    "pk": 60446
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.838Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.446Z", 
-        "amount": 0.336
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:26.233Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.799Z", 
+        "amount": 0.1288
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.8, 
-        "invoice": 61, 
-        "date": "2013-12-01T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.84, 
+        "invoice": 71, 
+        "date": "2013-12-07T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58646
+    "pk": 60447
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.937Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.454Z", 
-        "amount": 0.14, 
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:26.341Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.807Z", 
+        "amount": 0.1456
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.0, 
-        "invoice": 62, 
-        "date": "2013-12-02T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 71, 
+        "date": "2013-12-07T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58647
+    "pk": 60448
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.028Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.463Z", 
-        "amount": 0.1288
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:26.448Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.815Z", 
+        "amount": 0.252
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.84, 
-        "invoice": 62, 
-        "date": "2013-12-02T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.6, 
+        "invoice": 71, 
+        "date": "2013-12-07T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58648
+    "pk": 60449
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.120Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.471Z", 
-        "amount": 0.1624
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:26.556Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.823Z", 
+        "amount": 0.3136
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.32, 
-        "invoice": 62, 
-        "date": "2013-12-02T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.48, 
+        "invoice": 71, 
+        "date": "2013-12-08T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58649
+    "pk": 60450
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.211Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.479Z", 
-        "amount": 0.196
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:26.664Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.832Z", 
+        "amount": 0.2408
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 62, 
-        "date": "2013-12-03T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.44, 
+        "invoice": 71, 
+        "date": "2013-12-08T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58650
+    "pk": 60451
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.302Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.487Z", 
-        "amount": 0.2576, 
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:26.771Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.840Z", 
+        "amount": 0.2016, 
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.68, 
-        "invoice": 62, 
-        "date": "2013-12-03T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.88, 
+        "invoice": 71, 
+        "date": "2013-12-08T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58651
+    "pk": 60452
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.393Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.496Z", 
-        "amount": 0.308
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:26.887Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.848Z", 
+        "amount": 0.2464
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 62, 
-        "date": "2013-12-03T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.52, 
+        "invoice": 72, 
+        "date": "2013-12-09T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58652
+    "pk": 60453
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.484Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.504Z", 
-        "amount": 0.28, 
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:26.995Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.857Z", 
+        "amount": 0.2856
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.0, 
-        "invoice": 62, 
-        "date": "2013-12-04T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.08, 
+        "invoice": 72, 
+        "date": "2013-12-09T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58653
+    "pk": 60454
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.575Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.534Z", 
-        "amount": 0.2464
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:27.103Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.865Z", 
+        "amount": 0.3192
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 62, 
-        "date": "2013-12-04T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.56, 
+        "invoice": 72, 
+        "date": "2013-12-09T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58654
+    "pk": 60455
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.666Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.554Z", 
-        "amount": 0.2464
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:27.210Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.873Z", 
+        "amount": 0.2576
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 62, 
-        "date": "2013-12-04T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.68, 
+        "invoice": 72, 
+        "date": "2013-12-10T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58655
+    "pk": 60456
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.757Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.562Z", 
-        "amount": 0.2464
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:27.318Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.881Z", 
+        "amount": 0.2072
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 62, 
-        "date": "2013-12-05T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.96, 
+        "invoice": 72, 
+        "date": "2013-12-10T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58656
+    "pk": 60457
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.849Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.570Z", 
+        "updated": "2013-12-18T21:29:27.426Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.890Z", 
         "amount": 0.2184, 
-        "object": 92
-        "account": 13
+        "object": 111
+        "account": 15
         "state": "invoiced", 
         "coreHours": 3.12, 
-        "invoice": 62, 
-        "date": "2013-12-05T14:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 72, 
+        "date": "2013-12-10T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58657
+    "pk": 60458
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.940Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.579Z", 
-        "amount": 0.196
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:27.533Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.898Z", 
+        "amount": 0.1344
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 62, 
-        "date": "2013-12-05T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.92, 
+        "invoice": 72, 
+        "date": "2013-12-11T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58658
+    "pk": 60459
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.039Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.587Z", 
-        "amount": 0.3024
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:27.699Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.906Z", 
+        "amount": 0.28
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.32, 
-        "invoice": 62, 
-        "date": "2013-12-06T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.0, 
+        "invoice": 72, 
+        "date": "2013-12-11T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58659
+    "pk": 60460
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.137Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.595Z", 
-        "amount": 0.3192
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:27.807Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.915Z", 
+        "amount": 0.1568
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.56, 
-        "invoice": 62, 
-        "date": "2013-12-06T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.24, 
+        "invoice": 72, 
+        "date": "2013-12-11T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58660
+    "pk": 60461
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.228Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.603Z", 
-        "amount": 0.196
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:27.914Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.923Z", 
+        "amount": 0.2744
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 62, 
-        "date": "2013-12-06T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.92, 
+        "invoice": 72, 
+        "date": "2013-12-12T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58661
+    "pk": 60462
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.319Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.612Z", 
+        "updated": "2013-12-18T21:29:28.022Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.931Z", 
         "amount": 0.1624, 
-        "object": 92
-        "account": 13
+        "object": 111
+        "account": 15
         "state": "invoiced", 
         "coreHours": 2.32, 
-        "invoice": 62, 
-        "date": "2013-12-07T06:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 72, 
+        "date": "2013-12-12T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58662
+    "pk": 60463
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.410Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.620Z", 
-        "amount": 0.2072
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:28.130Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.939Z", 
+        "amount": 0.1456
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.96, 
-        "invoice": 62, 
-        "date": "2013-12-07T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 72, 
+        "date": "2013-12-12T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58663
+    "pk": 60464
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.501Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.628Z", 
-        "amount": 0.3304, 
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:28.238Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.948Z", 
+        "amount": 0.14, 
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.72, 
-        "invoice": 62, 
-        "date": "2013-12-07T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.0, 
+        "invoice": 72, 
+        "date": "2013-12-13T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58664
+    "pk": 60465
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.593Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.637Z", 
-        "amount": 0.2128
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:28.345Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.956Z", 
+        "amount": 0.224
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.04, 
-        "invoice": 62, 
-        "date": "2013-12-08T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.2, 
+        "invoice": 72, 
+        "date": "2013-12-13T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58665
+    "pk": 60466
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.684Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.645Z", 
-        "amount": 0.252
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:28.453Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.964Z", 
+        "amount": 0.2688
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.6, 
-        "invoice": 62, 
-        "date": "2013-12-08T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.84, 
+        "invoice": 72, 
+        "date": "2013-12-13T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58666
+    "pk": 60467
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.775Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.653Z", 
-        "amount": 0.3192
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:28.561Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:06.972Z", 
+        "amount": 0.224
+        "object": 111
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.56, 
-        "invoice": 62, 
-        "date": "2013-12-08T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.2, 
+        "invoice": 72, 
+        "date": "2013-12-14T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58667
+    "pk": 60468
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:45.662Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:45.661Z", 
-        "amount": 0.112, 
-        "object": 92, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 1.6, 
-        "invoice": null, 
-        "date": "2013-12-09T06:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.668Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:06.981Z", 
+        "amount": 0.1176, 
+        "object": 111, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.68, 
+        "invoice": 72, 
+        "date": "2013-12-14T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58668
+    "pk": 60469
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:45.670Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:45.670Z", 
+        "updated": "2013-12-18T21:29:28.776Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:06.989Z", 
+        "amount": 0.2296, 
+        "object": 111, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.28, 
+        "invoice": 72, 
+        "date": "2013-12-14T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
+    }
+},
+{
+    "pk": 60470, 
+    "model": "core.charge", 
+    "fields": {
+        "updated": "2013-12-18T21:29:28.884Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:06.997Z", 
         "amount": 0.2072, 
-        "object": 92
-        "account": 13
-        "state": "pending", 
+        "object": 111
+        "account": 15
+        "state": "invoiced", 
         "coreHours": 2.96, 
-        "invoice": null, 
-        "date": "2013-12-09T14:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 72, 
+        "date": "2013-12-15T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58669
+    "pk": 60471
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:45.678Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:45.678Z", 
-        "amount": 0.2464, 
-        "object": 92, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 3.52, 
-        "invoice": null, 
-        "date": "2013-12-09T22:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.991Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:07.006Z", 
+        "amount": 0.1344, 
+        "object": 111, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 1.92, 
+        "invoice": 72, 
+        "date": "2013-12-15T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58670
+    "pk": 60472
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:45.686Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:45.686Z", 
-        "amount": 0.1232, 
-        "object": 92, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 1.76, 
-        "invoice": null, 
-        "date": "2013-12-10T06:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:29.099Z", 
+        "slice": 6, 
+        "created": "2013-12-18T21:29:07.014Z", 
+        "amount": 0.2352, 
+        "object": 111, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 3.36, 
+        "invoice": 72, 
+        "date": "2013-12-15T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58671
+    "pk": 60473
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:45.695Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.695Z", 
-        "amount": 0.1624
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:07.022Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:07.022Z", 
+        "amount": 0.308
+        "object": 111
+        "account": 15
         "state": "pending", 
-        "coreHours": 2.32
+        "coreHours": 4.4
         "invoice": null, 
-        "date": "2013-12-10T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58672
+    "pk": 60474
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:45.703Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.703Z", 
+        "updated": "2013-12-18T21:29:07.031Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:07.031Z", 
         "amount": 0.14, 
-        "object": 92
-        "account": 13
+        "object": 111
+        "account": 15
         "state": "pending", 
         "coreHours": 2.0, 
         "invoice": null, 
-        "date": "2013-12-10T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58673
+    "pk": 60475
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:45.711Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.711Z", 
-        "amount": 0.3304, 
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:07.039Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:07.039Z", 
+        "amount": 0.1344, 
+        "object": 111
+        "account": 15
         "state": "pending", 
-        "coreHours": 4.72, 
+        "coreHours": 1.92, 
         "invoice": null, 
-        "date": "2013-12-11T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58674
+    "pk": 60476
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:45.719Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.719Z", 
+        "updated": "2013-12-18T21:29:07.047Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:07.047Z", 
         "amount": 0.196, 
-        "object": 92
-        "account": 13
+        "object": 111
+        "account": 15
         "state": "pending", 
         "coreHours": 2.8, 
         "invoice": null, 
-        "date": "2013-12-11T14:00:00Z", 
-        "kind": "besteffort"
-    }
-},
-{
-    "pk": 58675, 
-    "model": "core.charge", 
-    "fields": {
-        "updated": "2013-12-13T22:19:45.728Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:45.728Z", 
-        "amount": 0.2912, 
-        "object": 92, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 4.16, 
-        "invoice": null, 
-        "date": "2013-12-11T22:00:00Z", 
-        "kind": "besteffort"
-    }
-},
-{
-    "pk": 58676, 
-    "model": "core.charge", 
-    "fields": {
-        "updated": "2013-12-13T22:19:45.736Z", 
-        "slice": 4, 
-        "created": "2013-12-13T22:19:45.736Z", 
-        "amount": 0.1904, 
-        "object": 92, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 2.72, 
-        "invoice": null, 
-        "date": "2013-12-12T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58677, 
+    "pk": 60477, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:45.744Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.744Z", 
-        "amount": 0.3136, 
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:07.055Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:07.055Z", 
+        "amount": 0.336, 
+        "object": 111
+        "account": 15
         "state": "pending", 
-        "coreHours": 4.48, 
+        "coreHours": 4.8, 
         "invoice": null, 
-        "date": "2013-12-12T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58678, 
+    "pk": 60478, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:45.753Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.753Z", 
-        "amount": 0.3304
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:07.064Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:07.064Z", 
+        "amount": 0.3248
+        "object": 111
+        "account": 15
         "state": "pending", 
-        "coreHours": 4.72
+        "coreHours": 4.64
         "invoice": null, 
-        "date": "2013-12-12T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58679, 
+    "pk": 60479, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:45.761Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.761Z", 
-        "amount": 0.1792, 
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:07.072Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:07.072Z", 
+        "amount": 0.2912, 
+        "object": 111
+        "account": 15
         "state": "pending", 
-        "coreHours": 2.56, 
+        "coreHours": 4.16, 
         "invoice": null, 
-        "date": "2013-12-13T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-18T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58680, 
+    "pk": 60480, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:45.769Z", 
-        "slice": 4
-        "created": "2013-12-13T22:19:45.769Z", 
-        "amount": 0.1344
-        "object": 92
-        "account": 13
+        "updated": "2013-12-18T21:29:07.080Z", 
+        "slice": 6
+        "created": "2013-12-18T21:29:07.080Z", 
+        "amount": 0.28
+        "object": 111
+        "account": 15
         "state": "pending", 
-        "coreHours": 1.92
+        "coreHours": 4.0
         "invoice": null, 
-        "date": "2013-12-13T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-18T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58681, 
+    "pk": 60481, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.457Z", 
+        "updated": "2013-12-18T21:29:20.260Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:45.817Z", 
+        "created": "2013-12-18T21:29:07.112Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-13T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-18T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58682, 
+    "pk": 60482, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.548Z", 
+        "updated": "2013-12-18T21:29:20.368Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:45.827Z", 
+        "created": "2013-12-18T21:29:07.122Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-14T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-19T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58683, 
+    "pk": 60483, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.639Z", 
+        "updated": "2013-12-18T21:29:20.476Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:45.836Z", 
+        "created": "2013-12-18T21:29:07.130Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-14T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-19T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58684, 
+    "pk": 60484, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.730Z", 
+        "updated": "2013-12-18T21:29:20.583Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:45.844Z", 
+        "created": "2013-12-18T21:29:07.138Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-14T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-19T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58685, 
+    "pk": 60485, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.822Z", 
+        "updated": "2013-12-18T21:29:20.691Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:45.852Z", 
+        "created": "2013-12-18T21:29:07.147Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-15T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-20T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58686, 
+    "pk": 60486, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.913Z", 
+        "updated": "2013-12-18T21:29:20.799Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:45.860Z", 
+        "created": "2013-12-18T21:29:07.155Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-15T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-20T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58687, 
+    "pk": 60487, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.021Z", 
+        "updated": "2013-12-18T21:29:20.906Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:45.869Z", 
+        "created": "2013-12-18T21:29:07.163Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-15T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-20T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58688, 
+    "pk": 60488, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.112Z", 
+        "updated": "2013-12-18T21:29:21.014Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:45.877Z", 
+        "created": "2013-12-18T21:29:07.171Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-16T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-21T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58689, 
+    "pk": 60489, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.203Z", 
+        "updated": "2013-12-18T21:29:21.122Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:45.885Z", 
+        "created": "2013-12-18T21:29:07.180Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-16T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-21T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58690, 
+    "pk": 60490, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.294Z", 
+        "updated": "2013-12-18T21:29:21.229Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:45.893Z", 
+        "created": "2013-12-18T21:29:07.188Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-16T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-21T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58691, 
+    "pk": 60491, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.386Z", 
+        "updated": "2013-12-18T21:29:21.337Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:45.902Z", 
+        "created": "2013-12-18T21:29:07.196Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-17T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-22T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58692, 
+    "pk": 60492, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.477Z", 
+        "updated": "2013-12-18T21:29:21.445Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:45.910Z", 
+        "created": "2013-12-18T21:29:07.205Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-17T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-22T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58693, 
+    "pk": 60493, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.568Z", 
+        "updated": "2013-12-18T21:29:21.552Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:45.918Z", 
+        "created": "2013-12-18T21:29:07.213Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-17T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-22T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58694, 
+    "pk": 60494, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.667Z", 
+        "updated": "2013-12-18T21:29:21.660Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:45.927Z", 
+        "created": "2013-12-18T21:29:07.221Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-18T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-23T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58695, 
+    "pk": 60495, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.770Z", 
+        "updated": "2013-12-18T21:29:21.768Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:45.935Z", 
+        "created": "2013-12-18T21:29:07.230Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-18T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-23T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58696, 
+    "pk": 60496, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.861Z", 
+        "updated": "2013-12-18T21:29:21.876Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:45.943Z", 
+        "created": "2013-12-18T21:29:07.238Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-18T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-23T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58697, 
+    "pk": 60497, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.952Z", 
+        "updated": "2013-12-18T21:29:21.983Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:45.951Z", 
+        "created": "2013-12-18T21:29:07.246Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-19T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-24T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58698, 
+    "pk": 60498, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.043Z", 
+        "updated": "2013-12-18T21:29:22.091Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:45.960Z", 
+        "created": "2013-12-18T21:29:07.254Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-19T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-24T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58699, 
+    "pk": 60499, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.143Z", 
+        "updated": "2013-12-18T21:29:22.199Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:45.968Z", 
+        "created": "2013-12-18T21:29:07.262Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-19T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-24T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58700, 
+    "pk": 60500, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.234Z", 
+        "updated": "2013-12-18T21:29:22.315Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:45.976Z", 
+        "created": "2013-12-18T21:29:07.271Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-20T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-25T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58701, 
+    "pk": 60501, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.325Z", 
+        "updated": "2013-12-18T21:29:22.422Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:45.985Z", 
+        "created": "2013-12-18T21:29:07.279Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-20T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-25T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58702, 
+    "pk": 60502, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.419Z", 
+        "updated": "2013-12-18T21:29:22.530Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:45.993Z", 
+        "created": "2013-12-18T21:29:07.287Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-20T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-25T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58703, 
+    "pk": 60503, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.510Z", 
+        "updated": "2013-12-18T21:29:22.679Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.001Z", 
+        "created": "2013-12-18T21:29:07.296Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-21T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-26T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58704, 
+    "pk": 60504, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.617Z", 
+        "updated": "2013-12-18T21:29:22.787Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.009Z", 
+        "created": "2013-12-18T21:29:07.304Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-21T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-26T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58705, 
+    "pk": 60505, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.709Z", 
+        "updated": "2013-12-18T21:29:22.894Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.018Z", 
+        "created": "2013-12-18T21:29:07.312Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-21T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-26T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58706, 
+    "pk": 60506, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.800Z", 
+        "updated": "2013-12-18T21:29:23.002Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.026Z", 
+        "created": "2013-12-18T21:29:07.321Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-22T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-27T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58707, 
+    "pk": 60507, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.918Z", 
+        "updated": "2013-12-18T21:29:23.110Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.034Z", 
+        "created": "2013-12-18T21:29:07.329Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-22T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-27T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58708, 
+    "pk": 60508, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.007Z", 
+        "updated": "2013-12-18T21:29:23.218Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.043Z", 
+        "created": "2013-12-18T21:29:07.337Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-22T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-27T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58709, 
+    "pk": 60509, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.098Z", 
+        "updated": "2013-12-18T21:29:23.325Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.051Z", 
+        "created": "2013-12-18T21:29:07.345Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-23T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-28T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58710, 
+    "pk": 60510, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.189Z", 
+        "updated": "2013-12-18T21:29:23.433Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.059Z", 
+        "created": "2013-12-18T21:29:07.354Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-23T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-28T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58711, 
+    "pk": 60511, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.355Z", 
+        "updated": "2013-12-18T21:29:23.541Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.067Z", 
+        "created": "2013-12-18T21:29:07.362Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-23T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-28T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58712, 
+    "pk": 60512, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.727Z", 
+        "updated": "2013-12-18T21:29:23.648Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.076Z", 
+        "created": "2013-12-18T21:29:07.370Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-24T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-29T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58713, 
+    "pk": 60513, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.818Z", 
+        "updated": "2013-12-18T21:29:23.756Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.084Z", 
+        "created": "2013-12-18T21:29:07.378Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-24T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-29T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58714, 
+    "pk": 60514, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.910Z", 
+        "updated": "2013-12-18T21:29:23.864Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.092Z", 
+        "created": "2013-12-18T21:29:07.387Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-24T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-29T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58715, 
+    "pk": 60515, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.009Z", 
+        "updated": "2013-12-18T21:29:23.971Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.101Z", 
+        "created": "2013-12-18T21:29:07.395Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-25T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-30T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58716, 
+    "pk": 60516, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.100Z", 
+        "updated": "2013-12-18T21:29:24.079Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.109Z", 
+        "created": "2013-12-18T21:29:07.403Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-25T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-30T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58717, 
+    "pk": 60517, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.191Z", 
+        "updated": "2013-12-18T21:29:24.187Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.117Z", 
+        "created": "2013-12-18T21:29:07.412Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-25T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-30T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58718, 
+    "pk": 60518, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.287Z", 
+        "updated": "2013-12-18T21:29:24.294Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.125Z", 
+        "created": "2013-12-18T21:29:07.420Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-26T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-12-01T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58719, 
+    "pk": 60519, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.378Z", 
+        "updated": "2013-12-18T21:29:24.402Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.134Z", 
+        "created": "2013-12-18T21:29:07.428Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-26T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-12-01T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58720, 
+    "pk": 60520, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.469Z", 
+        "updated": "2013-12-18T21:29:24.510Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.142Z", 
+        "created": "2013-12-18T21:29:07.436Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-26T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-12-01T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58721, 
+    "pk": 60521, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.561Z", 
+        "updated": "2013-12-18T21:29:24.626Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.150Z", 
+        "created": "2013-12-18T21:29:07.445Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-27T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-02T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58722, 
+    "pk": 60522, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.652Z", 
+        "updated": "2013-12-18T21:29:24.734Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.158Z", 
+        "created": "2013-12-18T21:29:07.453Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-27T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-02T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58723, 
+    "pk": 60523, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.743Z", 
+        "updated": "2013-12-18T21:29:24.841Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.167Z", 
+        "created": "2013-12-18T21:29:07.461Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-27T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-02T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58724, 
+    "pk": 60524, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.834Z", 
+        "updated": "2013-12-18T21:29:24.949Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.175Z", 
+        "created": "2013-12-18T21:29:07.470Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-28T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-03T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58725, 
+    "pk": 60525, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.925Z", 
+        "updated": "2013-12-18T21:29:25.057Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.183Z", 
+        "created": "2013-12-18T21:29:07.478Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-28T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-03T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58726, 
+    "pk": 60526, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.016Z", 
+        "updated": "2013-12-18T21:29:25.164Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.192Z", 
+        "created": "2013-12-18T21:29:07.497Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-28T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-03T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58727, 
+    "pk": 60527, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.107Z", 
+        "updated": "2013-12-18T21:29:25.272Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.200Z", 
+        "created": "2013-12-18T21:29:07.547Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-29T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-04T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58728, 
+    "pk": 60528, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.198Z", 
+        "updated": "2013-12-18T21:29:25.380Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.208Z", 
+        "created": "2013-12-18T21:29:07.561Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-29T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-04T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58729, 
+    "pk": 60529, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.290Z", 
+        "updated": "2013-12-18T21:29:25.487Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.216Z", 
+        "created": "2013-12-18T21:29:07.569Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-29T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-04T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58730, 
+    "pk": 60530, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.381Z", 
+        "updated": "2013-12-18T21:29:25.595Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.225Z", 
+        "created": "2013-12-18T21:29:07.577Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-30T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-05T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58731, 
+    "pk": 60531, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.473Z", 
+        "updated": "2013-12-18T21:29:25.703Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.233Z", 
+        "created": "2013-12-18T21:29:07.586Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-30T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-05T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58732, 
+    "pk": 60532, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.565Z", 
+        "updated": "2013-12-18T21:29:25.810Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.241Z", 
+        "created": "2013-12-18T21:29:07.594Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-30T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-05T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58733, 
+    "pk": 60533, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.656Z", 
+        "updated": "2013-12-18T21:29:25.918Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.250Z", 
+        "created": "2013-12-18T21:29:07.602Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-12-01T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-06T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58734, 
+    "pk": 60534, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.747Z", 
+        "updated": "2013-12-18T21:29:26.026Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.258Z", 
+        "created": "2013-12-18T21:29:07.610Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-12-01T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-06T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58735, 
+    "pk": 60535, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.830Z", 
+        "updated": "2013-12-18T21:29:26.133Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.266Z", 
+        "created": "2013-12-18T21:29:07.619Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-12-01T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-06T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58736, 
+    "pk": 60536, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.929Z", 
+        "updated": "2013-12-18T21:29:26.241Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.274Z", 
+        "created": "2013-12-18T21:29:07.627Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-02T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-07T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58737, 
+    "pk": 60537, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.020Z", 
+        "updated": "2013-12-18T21:29:26.349Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.283Z", 
+        "created": "2013-12-18T21:29:07.635Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-02T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-07T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58738, 
+    "pk": 60538, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.111Z", 
+        "updated": "2013-12-18T21:29:26.456Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.291Z", 
+        "created": "2013-12-18T21:29:07.644Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-02T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-07T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58739, 
+    "pk": 60539, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.203Z", 
+        "updated": "2013-12-18T21:29:26.564Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.299Z", 
+        "created": "2013-12-18T21:29:07.652Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-03T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-08T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58740, 
+    "pk": 60540, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.294Z", 
+        "updated": "2013-12-18T21:29:26.672Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.308Z", 
+        "created": "2013-12-18T21:29:07.660Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-03T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-08T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58741, 
+    "pk": 60541, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.385Z", 
+        "updated": "2013-12-18T21:29:26.780Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.316Z", 
+        "created": "2013-12-18T21:29:07.669Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-03T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-08T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58742, 
+    "pk": 60542, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.476Z", 
+        "updated": "2013-12-18T21:29:26.896Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.324Z", 
+        "created": "2013-12-18T21:29:07.677Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-04T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-09T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58743, 
+    "pk": 60543, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.567Z", 
+        "updated": "2013-12-18T21:29:27.003Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.333Z", 
+        "created": "2013-12-18T21:29:07.685Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-04T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-09T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58744, 
+    "pk": 60544, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.658Z", 
+        "updated": "2013-12-18T21:29:27.111Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.341Z", 
+        "created": "2013-12-18T21:29:07.693Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-04T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-09T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58745, 
+    "pk": 60545, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.749Z", 
+        "updated": "2013-12-18T21:29:27.219Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.349Z", 
+        "created": "2013-12-18T21:29:07.702Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-05T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-10T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58746, 
+    "pk": 60546, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.840Z", 
+        "updated": "2013-12-18T21:29:27.326Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.357Z", 
+        "created": "2013-12-18T21:29:07.710Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-05T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-10T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58747, 
+    "pk": 60547, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.932Z", 
+        "updated": "2013-12-18T21:29:27.434Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.366Z", 
+        "created": "2013-12-18T21:29:07.718Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-05T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-10T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58748, 
+    "pk": 60548, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.031Z", 
+        "updated": "2013-12-18T21:29:27.542Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.374Z", 
+        "created": "2013-12-18T21:29:07.726Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-06T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-11T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58749, 
+    "pk": 60549, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.129Z", 
+        "updated": "2013-12-18T21:29:27.708Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.382Z", 
+        "created": "2013-12-18T21:29:07.735Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-06T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-11T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58750, 
+    "pk": 60550, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.220Z", 
+        "updated": "2013-12-18T21:29:27.815Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.391Z", 
+        "created": "2013-12-18T21:29:07.743Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-06T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-11T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58751, 
+    "pk": 60551, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.311Z", 
+        "updated": "2013-12-18T21:29:27.923Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.399Z", 
+        "created": "2013-12-18T21:29:07.751Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-07T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-12T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58752, 
+    "pk": 60552, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.402Z", 
+        "updated": "2013-12-18T21:29:28.030Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.407Z", 
+        "created": "2013-12-18T21:29:07.760Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-07T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-12T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58753, 
+    "pk": 60553, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.493Z", 
+        "updated": "2013-12-18T21:29:28.138Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.415Z", 
+        "created": "2013-12-18T21:29:07.768Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-07T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-12T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58754, 
+    "pk": 60554, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.584Z", 
+        "updated": "2013-12-18T21:29:28.246Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.424Z", 
+        "created": "2013-12-18T21:29:07.776Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-08T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-13T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58755, 
+    "pk": 60555, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.675Z", 
+        "updated": "2013-12-18T21:29:28.354Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.432Z", 
+        "created": "2013-12-18T21:29:07.784Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-08T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-13T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58756, 
+    "pk": 60556, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.766Z", 
+        "updated": "2013-12-18T21:29:28.461Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.440Z", 
+        "created": "2013-12-18T21:29:07.793Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-08T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-13T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58757, 
+    "pk": 60557, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:46.448Z", 
+        "updated": "2013-12-18T21:29:28.569Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.448Z", 
+        "created": "2013-12-18T21:29:07.801Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
-        "state": "pending", 
+        "object": 112
+        "account": 15
+        "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-09T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-14T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58758, 
+    "pk": 60558, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:46.457Z", 
+        "updated": "2013-12-18T21:29:28.677Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.457Z", 
+        "created": "2013-12-18T21:29:07.809Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
-        "state": "pending", 
+        "object": 112
+        "account": 15
+        "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-09T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-14T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58759, 
+    "pk": 60559, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:46.465Z", 
+        "updated": "2013-12-18T21:29:28.784Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.465Z", 
+        "created": "2013-12-18T21:29:07.817Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
-        "state": "pending", 
+        "object": 112
+        "account": 15
+        "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-09T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-14T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58760, 
+    "pk": 60560, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:46.473Z", 
+        "updated": "2013-12-18T21:29:28.892Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.473Z", 
+        "created": "2013-12-18T21:29:07.826Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
-        "state": "pending", 
+        "object": 112
+        "account": 15
+        "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-10T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-15T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58761, 
+    "pk": 60561, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:46.482Z", 
+        "updated": "2013-12-18T21:29:29Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.482Z", 
+        "created": "2013-12-18T21:29:07.834Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
-        "state": "pending", 
+        "object": 112
+        "account": 15
+        "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-10T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-15T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58762, 
+    "pk": 60562, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:46.490Z", 
+        "updated": "2013-12-18T21:29:29.107Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.490Z", 
+        "created": "2013-12-18T21:29:07.842Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
-        "state": "pending", 
+        "object": 112
+        "account": 15
+        "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-10T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-15T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58763, 
+    "pk": 60563, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:46.498Z", 
+        "updated": "2013-12-18T21:29:07.851Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.498Z", 
+        "created": "2013-12-18T21:29:07.851Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "pending", 
         "coreHours": 8.0, 
         "invoice": null, 
-        "date": "2013-12-11T06:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-16T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58764, 
+    "pk": 60564, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:46.506Z", 
+        "updated": "2013-12-18T21:29:07.859Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.506Z", 
+        "created": "2013-12-18T21:29:07.859Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "pending", 
         "coreHours": 8.0, 
         "invoice": null, 
-        "date": "2013-12-11T14:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-16T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58765, 
+    "pk": 60565, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:46.515Z", 
+        "updated": "2013-12-18T21:29:07.867Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.515Z", 
+        "created": "2013-12-18T21:29:07.867Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "pending", 
         "coreHours": 8.0, 
         "invoice": null, 
-        "date": "2013-12-11T22:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-16T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58766, 
+    "pk": 60566, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:46.523Z", 
+        "updated": "2013-12-18T21:29:07.875Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.523Z", 
+        "created": "2013-12-18T21:29:07.875Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "pending", 
         "coreHours": 8.0, 
         "invoice": null, 
-        "date": "2013-12-12T06:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-17T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58767, 
+    "pk": 60567, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:46.531Z", 
+        "updated": "2013-12-18T21:29:07.884Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.531Z", 
+        "created": "2013-12-18T21:29:07.884Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "pending", 
         "coreHours": 8.0, 
         "invoice": null, 
-        "date": "2013-12-12T14:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-17T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58768, 
+    "pk": 60568, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:46.540Z", 
+        "updated": "2013-12-18T21:29:07.892Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.540Z", 
+        "created": "2013-12-18T21:29:07.892Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "pending", 
         "coreHours": 8.0, 
         "invoice": null, 
-        "date": "2013-12-12T22:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-17T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58769, 
+    "pk": 60569, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:46.548Z", 
+        "updated": "2013-12-18T21:29:07.900Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.548Z", 
+        "created": "2013-12-18T21:29:07.900Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "pending", 
         "coreHours": 8.0, 
         "invoice": null, 
-        "date": "2013-12-13T06:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-18T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58770, 
+    "pk": 60570, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:46.556Z", 
+        "updated": "2013-12-18T21:29:07.909Z", 
         "slice": 8, 
-        "created": "2013-12-13T22:19:46.556Z", 
+        "created": "2013-12-18T21:29:07.909Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "pending", 
         "coreHours": 8.0, 
         "invoice": null, 
-        "date": "2013-12-13T14:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-18T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58771, 
+    "pk": 60571, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.490Z", 
+        "updated": "2013-12-18T21:29:20.268Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.577Z", 
+        "created": "2013-12-18T21:29:07.929Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-13T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-18T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58772, 
+    "pk": 60572, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.581Z", 
+        "updated": "2013-12-18T21:29:20.376Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.589Z", 
+        "created": "2013-12-18T21:29:07.942Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-14T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-19T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58773, 
+    "pk": 60573, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.672Z", 
+        "updated": "2013-12-18T21:29:20.484Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.597Z", 
+        "created": "2013-12-18T21:29:07.950Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-14T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-19T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58774, 
+    "pk": 60574, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.764Z", 
+        "updated": "2013-12-18T21:29:20.591Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.606Z", 
+        "created": "2013-12-18T21:29:07.958Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-14T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-19T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58775, 
+    "pk": 60575, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.855Z", 
+        "updated": "2013-12-18T21:29:20.699Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.614Z", 
+        "created": "2013-12-18T21:29:07.967Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-15T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-20T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58776, 
+    "pk": 60576, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.963Z", 
+        "updated": "2013-12-18T21:29:20.807Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.622Z", 
+        "created": "2013-12-18T21:29:07.975Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-15T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-20T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58777, 
+    "pk": 60577, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.054Z", 
+        "updated": "2013-12-18T21:29:20.914Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.631Z", 
+        "created": "2013-12-18T21:29:07.983Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-15T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-20T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58778, 
+    "pk": 60578, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.145Z", 
+        "updated": "2013-12-18T21:29:21.022Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.639Z", 
+        "created": "2013-12-18T21:29:07.991Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-16T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-21T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58779, 
+    "pk": 60579, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.236Z", 
+        "updated": "2013-12-18T21:29:21.130Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.647Z", 
+        "created": "2013-12-18T21:29:08Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-16T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-21T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58780, 
+    "pk": 60580, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.328Z", 
+        "updated": "2013-12-18T21:29:21.238Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.656Z", 
+        "created": "2013-12-18T21:29:08.008Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-16T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-21T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58781, 
+    "pk": 60581, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.419Z", 
+        "updated": "2013-12-18T21:29:21.345Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.664Z", 
+        "created": "2013-12-18T21:29:08.016Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-17T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-22T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58782, 
+    "pk": 60582, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.510Z", 
+        "updated": "2013-12-18T21:29:21.453Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.672Z", 
+        "created": "2013-12-18T21:29:08.025Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-17T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-22T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58783, 
+    "pk": 60583, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.601Z", 
+        "updated": "2013-12-18T21:29:21.561Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.680Z", 
+        "created": "2013-12-18T21:29:08.033Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-17T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-22T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58784, 
+    "pk": 60584, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.712Z", 
+        "updated": "2013-12-18T21:29:21.668Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.689Z", 
+        "created": "2013-12-18T21:29:08.041Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-18T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-23T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58785, 
+    "pk": 60585, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.803Z", 
+        "updated": "2013-12-18T21:29:21.776Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.697Z", 
+        "created": "2013-12-18T21:29:08.049Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-18T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-23T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58786, 
+    "pk": 60586, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.894Z", 
+        "updated": "2013-12-18T21:29:21.884Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.705Z", 
+        "created": "2013-12-18T21:29:08.058Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-18T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-23T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58787, 
+    "pk": 60587, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.985Z", 
+        "updated": "2013-12-18T21:29:21.991Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.713Z", 
+        "created": "2013-12-18T21:29:08.066Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-19T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-24T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58788, 
+    "pk": 60588, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.077Z", 
+        "updated": "2013-12-18T21:29:22.099Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.722Z", 
+        "created": "2013-12-18T21:29:08.074Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-19T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-24T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58789, 
+    "pk": 60589, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.135Z", 
+        "updated": "2013-12-18T21:29:22.207Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.730Z", 
+        "created": "2013-12-18T21:29:08.082Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-19T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 69, 
+        "date": "2013-11-24T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58790, 
+    "pk": 60590, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.226Z", 
+        "updated": "2013-12-18T21:29:22.323Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.738Z", 
+        "created": "2013-12-18T21:29:08.091Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-20T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-25T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58791, 
+    "pk": 60591, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.317Z", 
+        "updated": "2013-12-18T21:29:22.431Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.747Z", 
+        "created": "2013-12-18T21:29:08.099Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-20T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-25T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58792, 
+    "pk": 60592, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.410Z", 
+        "updated": "2013-12-18T21:29:22.538Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.755Z", 
+        "created": "2013-12-18T21:29:08.107Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-20T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-25T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58793, 
+    "pk": 60593, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.501Z", 
+        "updated": "2013-12-18T21:29:22.687Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.763Z", 
+        "created": "2013-12-18T21:29:08.116Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-21T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-26T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58794, 
+    "pk": 60594, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.602Z", 
+        "updated": "2013-12-18T21:29:22.795Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.771Z", 
+        "created": "2013-12-18T21:29:08.124Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-21T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-26T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58795, 
+    "pk": 60595, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.700Z", 
+        "updated": "2013-12-18T21:29:22.903Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.780Z", 
+        "created": "2013-12-18T21:29:08.132Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-21T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-26T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58796, 
+    "pk": 60596, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.792Z", 
+        "updated": "2013-12-18T21:29:23.010Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.788Z", 
+        "created": "2013-12-18T21:29:08.141Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-22T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-27T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58797, 
+    "pk": 60597, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.883Z", 
+        "updated": "2013-12-18T21:29:23.118Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.797Z", 
+        "created": "2013-12-18T21:29:08.149Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-22T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-27T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58798, 
+    "pk": 60598, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.999Z", 
+        "updated": "2013-12-18T21:29:23.226Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.805Z", 
+        "created": "2013-12-18T21:29:08.157Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-22T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-27T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58799, 
+    "pk": 60599, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.090Z", 
+        "updated": "2013-12-18T21:29:23.333Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.813Z", 
+        "created": "2013-12-18T21:29:08.166Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-23T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-28T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58800, 
+    "pk": 60600, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.181Z", 
+        "updated": "2013-12-18T21:29:23.441Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.821Z", 
+        "created": "2013-12-18T21:29:08.174Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-23T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-28T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58801, 
+    "pk": 60601, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.347Z", 
+        "updated": "2013-12-18T21:29:23.549Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.830Z", 
+        "created": "2013-12-18T21:29:08.182Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-23T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-28T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58802, 
+    "pk": 60602, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.719Z", 
+        "updated": "2013-12-18T21:29:23.657Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.838Z", 
+        "created": "2013-12-18T21:29:08.190Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-24T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-29T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58803, 
+    "pk": 60603, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.810Z", 
+        "updated": "2013-12-18T21:29:23.764Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.846Z", 
+        "created": "2013-12-18T21:29:08.199Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-24T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-29T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58804, 
+    "pk": 60604, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.901Z", 
+        "updated": "2013-12-18T21:29:23.872Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.854Z", 
+        "created": "2013-12-18T21:29:08.207Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-24T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-29T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58805, 
+    "pk": 60605, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.001Z", 
+        "updated": "2013-12-18T21:29:23.980Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.863Z", 
+        "created": "2013-12-18T21:29:08.215Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-25T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-30T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58806, 
+    "pk": 60606, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.092Z", 
+        "updated": "2013-12-18T21:29:24.087Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.871Z", 
+        "created": "2013-12-18T21:29:08.224Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-25T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-30T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58807, 
+    "pk": 60607, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.183Z", 
+        "updated": "2013-12-18T21:29:24.195Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.879Z", 
+        "created": "2013-12-18T21:29:08.232Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-25T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-11-30T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58808, 
+    "pk": 60608, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.279Z", 
+        "updated": "2013-12-18T21:29:24.303Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.888Z", 
+        "created": "2013-12-18T21:29:08.240Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-26T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-12-01T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58809, 
+    "pk": 60609, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.370Z", 
+        "updated": "2013-12-18T21:29:24.410Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.896Z", 
+        "created": "2013-12-18T21:29:08.249Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-26T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-12-01T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58810, 
+    "pk": 60610, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.461Z", 
+        "updated": "2013-12-18T21:29:24.518Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.904Z", 
+        "created": "2013-12-18T21:29:08.257Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-26T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 70, 
+        "date": "2013-12-01T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58811, 
+    "pk": 60611, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.552Z", 
+        "updated": "2013-12-18T21:29:24.634Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.912Z", 
+        "created": "2013-12-18T21:29:08.265Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-27T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-02T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58812, 
+    "pk": 60612, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.643Z", 
+        "updated": "2013-12-18T21:29:24.742Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.921Z", 
+        "created": "2013-12-18T21:29:08.273Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-27T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-02T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58813, 
+    "pk": 60613, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.735Z", 
+        "updated": "2013-12-18T21:29:24.849Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.929Z", 
+        "created": "2013-12-18T21:29:08.282Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-27T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-02T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58814, 
+    "pk": 60614, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.826Z", 
+        "updated": "2013-12-18T21:29:24.957Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.937Z", 
+        "created": "2013-12-18T21:29:08.290Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-28T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-03T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58815, 
+    "pk": 60615, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.917Z", 
+        "updated": "2013-12-18T21:29:25.065Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.945Z", 
+        "created": "2013-12-18T21:29:08.298Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-28T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-03T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58816, 
+    "pk": 60616, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.008Z", 
+        "updated": "2013-12-18T21:29:25.173Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.954Z", 
+        "created": "2013-12-18T21:29:08.306Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-28T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-03T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58817, 
+    "pk": 60617, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.091Z", 
+        "updated": "2013-12-18T21:29:25.280Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.962Z", 
+        "created": "2013-12-18T21:29:08.315Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-29T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-04T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58818, 
+    "pk": 60618, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.182Z", 
+        "updated": "2013-12-18T21:29:25.388Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.970Z", 
+        "created": "2013-12-18T21:29:08.323Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-29T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-04T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58819, 
+    "pk": 60619, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.273Z", 
+        "updated": "2013-12-18T21:29:25.496Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.979Z", 
+        "created": "2013-12-18T21:29:08.331Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-29T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-04T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58820, 
+    "pk": 60620, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.364Z", 
+        "updated": "2013-12-18T21:29:25.603Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.987Z", 
+        "created": "2013-12-18T21:29:08.339Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-30T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-05T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58821, 
+    "pk": 60621, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.457Z", 
+        "updated": "2013-12-18T21:29:25.711Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:46.995Z", 
+        "created": "2013-12-18T21:29:08.348Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-30T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-05T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58822, 
+    "pk": 60622, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.548Z", 
+        "updated": "2013-12-18T21:29:25.819Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.004Z", 
+        "created": "2013-12-18T21:29:08.356Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-30T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-05T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58823, 
+    "pk": 60623, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.639Z", 
+        "updated": "2013-12-18T21:29:25.926Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.012Z", 
+        "created": "2013-12-18T21:29:08.364Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-12-01T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-06T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58824, 
+    "pk": 60624, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.730Z", 
+        "updated": "2013-12-18T21:29:26.034Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.020Z", 
+        "created": "2013-12-18T21:29:08.373Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-12-01T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-06T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58825, 
+    "pk": 60625, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.813Z", 
+        "updated": "2013-12-18T21:29:26.142Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.028Z", 
+        "created": "2013-12-18T21:29:08.381Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-12-01T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-06T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58826, 
+    "pk": 60626, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.913Z", 
+        "updated": "2013-12-18T21:29:26.249Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.037Z", 
+        "created": "2013-12-18T21:29:08.389Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-02T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-07T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58827, 
+    "pk": 60627, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.004Z", 
+        "updated": "2013-12-18T21:29:26.357Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.045Z", 
+        "created": "2013-12-18T21:29:08.397Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-02T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-07T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58828, 
+    "pk": 60628, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.095Z", 
+        "updated": "2013-12-18T21:29:26.465Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.053Z", 
+        "created": "2013-12-18T21:29:08.406Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-02T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-07T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58829, 
+    "pk": 60629, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.186Z", 
+        "updated": "2013-12-18T21:29:26.572Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.061Z", 
+        "created": "2013-12-18T21:29:08.414Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-03T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-08T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58830, 
+    "pk": 60630, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.277Z", 
+        "updated": "2013-12-18T21:29:26.680Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.070Z", 
+        "created": "2013-12-18T21:29:08.422Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-03T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-08T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58831, 
+    "pk": 60631, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.368Z", 
+        "updated": "2013-12-18T21:29:26.788Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.078Z", 
+        "created": "2013-12-18T21:29:08.431Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-03T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 71, 
+        "date": "2013-12-08T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58832, 
+    "pk": 60632, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.459Z", 
+        "updated": "2013-12-18T21:29:26.904Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.086Z", 
+        "created": "2013-12-18T21:29:08.439Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-04T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-09T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58833, 
+    "pk": 60633, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.550Z", 
+        "updated": "2013-12-18T21:29:27.011Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.095Z", 
+        "created": "2013-12-18T21:29:08.447Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-04T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-09T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58834, 
+    "pk": 60634, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.642Z", 
+        "updated": "2013-12-18T21:29:27.119Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.103Z", 
+        "created": "2013-12-18T21:29:08.455Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-04T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-09T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58835, 
+    "pk": 60635, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.733Z", 
+        "updated": "2013-12-18T21:29:27.227Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.111Z", 
+        "created": "2013-12-18T21:29:08.464Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-05T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-10T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58836, 
+    "pk": 60636, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.824Z", 
+        "updated": "2013-12-18T21:29:27.335Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.119Z", 
+        "created": "2013-12-18T21:29:08.472Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-05T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-10T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58837, 
+    "pk": 60637, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.915Z", 
+        "updated": "2013-12-18T21:29:27.442Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.128Z", 
+        "created": "2013-12-18T21:29:08.480Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-05T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-10T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58838, 
+    "pk": 60638, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.014Z", 
+        "updated": "2013-12-18T21:29:27.550Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.136Z", 
+        "created": "2013-12-18T21:29:08.489Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-06T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-11T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58839, 
+    "pk": 60639, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.112Z", 
+        "updated": "2013-12-18T21:29:27.716Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.144Z", 
+        "created": "2013-12-18T21:29:08.497Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-06T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-11T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58840, 
+    "pk": 60640, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.203Z", 
+        "updated": "2013-12-18T21:29:27.823Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.153Z", 
+        "created": "2013-12-18T21:29:08.505Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-06T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-11T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58841, 
+    "pk": 60641, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.294Z", 
+        "updated": "2013-12-18T21:29:27.931Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.161Z", 
+        "created": "2013-12-18T21:29:08.513Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-07T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-12T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58842, 
+    "pk": 60642, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.385Z", 
+        "updated": "2013-12-18T21:29:28.039Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.169Z", 
+        "created": "2013-12-18T21:29:08.522Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-07T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-12T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58843, 
+    "pk": 60643, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.477Z", 
+        "updated": "2013-12-18T21:29:28.147Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.177Z", 
+        "created": "2013-12-18T21:29:08.530Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-07T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-12T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58844, 
+    "pk": 60644, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.568Z", 
+        "updated": "2013-12-18T21:29:28.254Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.186Z", 
+        "created": "2013-12-18T21:29:08.538Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-08T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-13T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58845, 
+    "pk": 60645, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.659Z", 
+        "updated": "2013-12-18T21:29:28.362Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.194Z", 
+        "created": "2013-12-18T21:29:08.546Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-08T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-13T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58846, 
+    "pk": 60646, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.750Z", 
+        "updated": "2013-12-18T21:29:28.469Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.202Z", 
+        "created": "2013-12-18T21:29:08.555Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-08T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-13T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58847, 
+    "pk": 60647, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:47.211Z", 
+        "updated": "2013-12-18T21:29:28.577Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.211Z", 
+        "created": "2013-12-18T21:29:08.563Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
-        "state": "pending", 
+        "object": 112
+        "account": 15
+        "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-09T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-14T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58848, 
+    "pk": 60648, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:47.219Z", 
+        "updated": "2013-12-18T21:29:28.685Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.219Z", 
+        "created": "2013-12-18T21:29:08.571Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
-        "state": "pending", 
+        "object": 112
+        "account": 15
+        "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-09T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-14T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58849, 
+    "pk": 60649, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:47.227Z", 
+        "updated": "2013-12-18T21:29:28.793Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.227Z", 
+        "created": "2013-12-18T21:29:08.580Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
-        "state": "pending", 
+        "object": 112
+        "account": 15
+        "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-09T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-14T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58850, 
+    "pk": 60650, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:47.236Z", 
+        "updated": "2013-12-18T21:29:28.900Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.236Z", 
+        "created": "2013-12-18T21:29:08.588Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
-        "state": "pending", 
+        "object": 112
+        "account": 15
+        "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-10T06:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-15T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58851, 
+    "pk": 60651, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:47.244Z", 
+        "updated": "2013-12-18T21:29:29.008Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.244Z", 
+        "created": "2013-12-18T21:29:08.596Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
-        "state": "pending", 
+        "object": 112
+        "account": 15
+        "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-10T14:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-15T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58852, 
+    "pk": 60652, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:47.252Z", 
+        "updated": "2013-12-18T21:29:29.116Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.252Z", 
+        "created": "2013-12-18T21:29:08.605Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
-        "state": "pending", 
+        "object": 112
+        "account": 15
+        "state": "invoiced", 
         "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-10T22:00:00Z", 
-        "kind": "reservation"
+        "invoice": 72, 
+        "date": "2013-12-15T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58853, 
+    "pk": 60653, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:47.260Z", 
+        "updated": "2013-12-18T21:29:08.613Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.260Z", 
+        "created": "2013-12-18T21:29:08.613Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "pending", 
         "coreHours": 8.0, 
         "invoice": null, 
-        "date": "2013-12-11T06:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-16T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58854, 
+    "pk": 60654, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:47.269Z", 
+        "updated": "2013-12-18T21:29:08.621Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.269Z", 
+        "created": "2013-12-18T21:29:08.621Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "pending", 
         "coreHours": 8.0, 
         "invoice": null, 
-        "date": "2013-12-11T14:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-16T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58855, 
+    "pk": 60655, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:47.277Z", 
+        "updated": "2013-12-18T21:29:08.630Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.277Z", 
+        "created": "2013-12-18T21:29:08.629Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "pending", 
         "coreHours": 8.0, 
         "invoice": null, 
-        "date": "2013-12-11T22:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-16T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58856, 
+    "pk": 60656, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:47.285Z", 
+        "updated": "2013-12-18T21:29:08.638Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.285Z", 
+        "created": "2013-12-18T21:29:08.638Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "pending", 
         "coreHours": 8.0, 
         "invoice": null, 
-        "date": "2013-12-12T06:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-17T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58857, 
+    "pk": 60657, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:47.294Z", 
+        "updated": "2013-12-18T21:29:08.646Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.294Z", 
+        "created": "2013-12-18T21:29:08.646Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "pending", 
         "coreHours": 8.0, 
         "invoice": null, 
-        "date": "2013-12-12T14:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-17T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58858, 
+    "pk": 60658, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:47.302Z", 
+        "updated": "2013-12-18T21:29:08.654Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.302Z", 
+        "created": "2013-12-18T21:29:08.654Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "pending", 
         "coreHours": 8.0, 
         "invoice": null, 
-        "date": "2013-12-12T22:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-17T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58859, 
+    "pk": 60659, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:47.310Z", 
+        "updated": "2013-12-18T21:29:08.663Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.310Z", 
+        "created": "2013-12-18T21:29:08.663Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "pending", 
         "coreHours": 8.0, 
         "invoice": null, 
-        "date": "2013-12-13T06:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-18T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58860, 
+    "pk": 60660, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:47.318Z", 
+        "updated": "2013-12-18T21:29:08.671Z", 
         "slice": 9, 
-        "created": "2013-12-13T22:19:47.318Z", 
+        "created": "2013-12-18T21:29:08.671Z", 
         "amount": 0.56, 
-        "object": 93
-        "account": 13
+        "object": 112
+        "account": 15
         "state": "pending", 
         "coreHours": 8.0, 
         "invoice": null, 
-        "date": "2013-12-13T14:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-18T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 58861, 
+    "pk": 60661, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.449Z", 
+        "updated": "2013-12-18T21:29:29.215Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.350Z", 
-        "amount": 0.336
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.698Z", 
+        "amount": 0.1848
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.8, 
-        "invoice": 59, 
-        "date": "2013-11-13T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.64, 
+        "invoice": 73, 
+        "date": "2013-11-18T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58862, 
+    "pk": 60662, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.540Z", 
+        "updated": "2013-12-18T21:29:29.240Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.360Z", 
-        "amount": 0.3024
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.704Z", 
+        "amount": 0.2072
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.32, 
-        "invoice": 59, 
-        "date": "2013-11-14T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.96, 
+        "invoice": 74, 
+        "date": "2013-11-19T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58863, 
+    "pk": 60663, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.631Z", 
+        "updated": "2013-12-18T21:29:29.256Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.368Z", 
-        "amount": 0.2016
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.712Z", 
+        "amount": 0.3248
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.88, 
-        "invoice": 59, 
-        "date": "2013-11-14T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.64, 
+        "invoice": 74, 
+        "date": "2013-11-19T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58864, 
+    "pk": 60664, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.722Z", 
+        "updated": "2013-12-18T21:29:29.273Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.376Z", 
-        "amount": 0.2912, 
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.721Z", 
+        "amount": 0.2352, 
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 59, 
-        "date": "2013-11-14T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.36, 
+        "invoice": 74, 
+        "date": "2013-11-19T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58865, 
+    "pk": 60665, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.813Z", 
+        "updated": "2013-12-18T21:29:29.290Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.385Z", 
-        "amount": 0.2632
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.729Z", 
+        "amount": 0.3304
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.76, 
-        "invoice": 59, 
-        "date": "2013-11-15T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.72, 
+        "invoice": 74, 
+        "date": "2013-11-20T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58866, 
+    "pk": 60666, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.904Z", 
+        "updated": "2013-12-18T21:29:29.306Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.393Z", 
-        "amount": 0.2016
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.737Z", 
+        "amount": 0.308
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.88, 
-        "invoice": 59, 
-        "date": "2013-11-15T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.4, 
+        "invoice": 74, 
+        "date": "2013-11-20T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58867, 
+    "pk": 60667, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.013Z", 
+        "updated": "2013-12-18T21:29:29.323Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.401Z", 
-        "amount": 0.252, 
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.745Z", 
+        "amount": 0.1232, 
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.6, 
-        "invoice": 59, 
-        "date": "2013-11-15T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.76, 
+        "invoice": 74, 
+        "date": "2013-11-20T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58868, 
+    "pk": 60668, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.104Z", 
+        "updated": "2013-12-18T21:29:29.339Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.410Z", 
-        "amount": 0.1456
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.754Z", 
+        "amount": 0.1568
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.08, 
-        "invoice": 59, 
-        "date": "2013-11-16T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.24, 
+        "invoice": 74, 
+        "date": "2013-11-21T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58869, 
+    "pk": 60669, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.195Z", 
+        "updated": "2013-12-18T21:29:29.356Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.418Z", 
-        "amount": 0.1512
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.762Z", 
+        "amount": 0.2744
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.16, 
-        "invoice": 59, 
-        "date": "2013-11-16T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.92, 
+        "invoice": 74, 
+        "date": "2013-11-21T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58870, 
+    "pk": 60670, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.286Z", 
+        "updated": "2013-12-18T21:29:29.372Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.426Z", 
-        "amount": 0.2688
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.770Z", 
+        "amount": 0.2184
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.84, 
-        "invoice": 59, 
-        "date": "2013-11-16T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.12, 
+        "invoice": 74, 
+        "date": "2013-11-21T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58871, 
+    "pk": 60671, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.369Z", 
+        "updated": "2013-12-18T21:29:29.389Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.434Z", 
-        "amount": 0.168
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.779Z", 
+        "amount": 0.2184
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.4, 
-        "invoice": 59, 
-        "date": "2013-11-17T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.12, 
+        "invoice": 74, 
+        "date": "2013-11-22T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58872, 
+    "pk": 60672, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.460Z", 
+        "updated": "2013-12-18T21:29:29.406Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.443Z", 
-        "amount": 0.2856
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.787Z", 
+        "amount": 0.14
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.08, 
-        "invoice": 59, 
-        "date": "2013-11-17T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.0, 
+        "invoice": 74, 
+        "date": "2013-11-22T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58873, 
+    "pk": 60673, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.551Z", 
+        "updated": "2013-12-18T21:29:29.424Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.451Z", 
-        "amount": 0.3192, 
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.795Z", 
+        "amount": 0.2352, 
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.56, 
-        "invoice": 59, 
-        "date": "2013-11-17T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.36, 
+        "invoice": 74, 
+        "date": "2013-11-22T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58874, 
+    "pk": 60674, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.651Z", 
+        "updated": "2013-12-18T21:29:29.440Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.459Z", 
-        "amount": 0.3192, 
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.803Z", 
+        "amount": 0.1232, 
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.56, 
-        "invoice": 60, 
-        "date": "2013-11-18T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.76, 
+        "invoice": 74, 
+        "date": "2013-11-23T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58875, 
+    "pk": 60675, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.753Z", 
+        "updated": "2013-12-18T21:29:29.457Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.467Z", 
-        "amount": 0.196, 
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.812Z", 
+        "amount": 0.2016, 
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 60, 
-        "date": "2013-11-18T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.88, 
+        "invoice": 74, 
+        "date": "2013-11-23T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58876, 
+    "pk": 60676, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.845Z", 
+        "updated": "2013-12-18T21:29:29.473Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.476Z", 
-        "amount": 0.196
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.820Z", 
+        "amount": 0.28
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 60, 
-        "date": "2013-11-18T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.0, 
+        "invoice": 74, 
+        "date": "2013-11-23T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58877, 
+    "pk": 60677, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.936Z", 
+        "updated": "2013-12-18T21:29:29.490Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.484Z", 
-        "amount": 0.168, 
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.828Z", 
+        "amount": 0.2408, 
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.4, 
-        "invoice": 60, 
-        "date": "2013-11-19T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.44, 
+        "invoice": 74, 
+        "date": "2013-11-24T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58878, 
+    "pk": 60678, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.027Z", 
+        "updated": "2013-12-18T21:29:29.507Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.492Z", 
+        "created": "2013-12-18T21:29:08.837Z", 
         "amount": 0.2072, 
-        "object": 94
-        "account": 13
+        "object": 105
+        "account": 16
         "state": "invoiced", 
         "coreHours": 2.96, 
-        "invoice": 60, 
-        "date": "2013-11-19T14:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 74, 
+        "date": "2013-11-24T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58879, 
+    "pk": 60679, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.118Z", 
+        "updated": "2013-12-18T21:29:29.523Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.501Z", 
-        "amount": 0.1792
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.845Z", 
+        "amount": 0.2296
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.56, 
-        "invoice": 60, 
-        "date": "2013-11-19T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.28, 
+        "invoice": 74, 
+        "date": "2013-11-24T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58880, 
+    "pk": 60680, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.209Z", 
+        "updated": "2013-12-18T21:29:29.548Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.509Z", 
-        "amount": 0.2464
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.853Z", 
+        "amount": 0.28
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 60, 
-        "date": "2013-11-20T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.0, 
+        "invoice": 75, 
+        "date": "2013-11-25T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58881, 
+    "pk": 60681, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.300Z", 
+        "updated": "2013-12-18T21:29:29.565Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.517Z", 
-        "amount": 0.2296
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.861Z", 
+        "amount": 0.3024
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.28, 
-        "invoice": 60, 
-        "date": "2013-11-20T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.32, 
+        "invoice": 75, 
+        "date": "2013-11-25T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58882, 
+    "pk": 60682, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.394Z", 
+        "updated": "2013-12-18T21:29:29.581Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.525Z", 
-        "amount": 0.2576
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.870Z", 
+        "amount": 0.1512
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.68, 
-        "invoice": 60, 
-        "date": "2013-11-20T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.16, 
+        "invoice": 75, 
+        "date": "2013-11-25T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58883, 
+    "pk": 60683, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.485Z", 
+        "updated": "2013-12-18T21:29:29.598Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.534Z", 
-        "amount": 0.2968
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.878Z", 
+        "amount": 0.196
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.24, 
-        "invoice": 60, 
-        "date": "2013-11-21T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 75, 
+        "date": "2013-11-26T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58884, 
+    "pk": 60684, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.576Z", 
+        "updated": "2013-12-18T21:29:29.614Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.542Z", 
-        "amount": 0.2072, 
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.886Z", 
+        "amount": 0.112, 
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.96, 
-        "invoice": 60, 
-        "date": "2013-11-21T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.6, 
+        "invoice": 75, 
+        "date": "2013-11-26T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58885, 
+    "pk": 60685, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.684Z", 
+        "updated": "2013-12-18T21:29:29.631Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.550Z", 
-        "amount": 0.1288, 
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.894Z", 
+        "amount": 0.2688, 
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 1.84, 
-        "invoice": 60, 
-        "date": "2013-11-21T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.84, 
+        "invoice": 75, 
+        "date": "2013-11-26T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58886, 
+    "pk": 60686, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.775Z", 
+        "updated": "2013-12-18T21:29:29.648Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.559Z", 
-        "amount": 0.1624
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.903Z", 
+        "amount": 0.336
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.32, 
-        "invoice": 60, 
-        "date": "2013-11-22T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.8, 
+        "invoice": 75, 
+        "date": "2013-11-27T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58887, 
+    "pk": 60687, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.866Z", 
+        "updated": "2013-12-18T21:29:29.664Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.567Z", 
-        "amount": 0.3248
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.911Z", 
+        "amount": 0.2296
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.64, 
-        "invoice": 60, 
-        "date": "2013-11-22T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.28, 
+        "invoice": 75, 
+        "date": "2013-11-27T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58888, 
+    "pk": 60688, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.982Z", 
+        "updated": "2013-12-18T21:29:29.681Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.575Z", 
-        "amount": 0.3248
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.919Z", 
+        "amount": 0.2912
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.64, 
-        "invoice": 60, 
-        "date": "2013-11-22T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.16, 
+        "invoice": 75, 
+        "date": "2013-11-27T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58889, 
+    "pk": 60689, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.073Z", 
+        "updated": "2013-12-18T21:29:29.697Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.583Z", 
-        "amount": 0.1848, 
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.928Z", 
+        "amount": 0.308, 
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.64, 
-        "invoice": 60, 
-        "date": "2013-11-23T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.4, 
+        "invoice": 75, 
+        "date": "2013-11-28T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58890, 
+    "pk": 60690, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.164Z", 
+        "updated": "2013-12-18T21:29:29.714Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.592Z", 
-        "amount": 0.3136
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.936Z", 
+        "amount": 0.308
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.48, 
-        "invoice": 60, 
-        "date": "2013-11-23T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.4, 
+        "invoice": 75, 
+        "date": "2013-11-28T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58891, 
+    "pk": 60691, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.330Z", 
+        "updated": "2013-12-18T21:29:29.730Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.600Z", 
-        "amount": 0.2128
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.944Z", 
+        "amount": 0.336
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.04, 
-        "invoice": 60, 
-        "date": "2013-11-23T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.8, 
+        "invoice": 75, 
+        "date": "2013-11-28T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58892, 
+    "pk": 60692, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.636Z", 
+        "updated": "2013-12-18T21:29:29.747Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.608Z", 
-        "amount": 0.2688
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.952Z", 
+        "amount": 0.336
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.84, 
-        "invoice": 60, 
-        "date": "2013-11-24T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.8, 
+        "invoice": 75, 
+        "date": "2013-11-29T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58893, 
+    "pk": 60693, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.794Z", 
+        "updated": "2013-12-18T21:29:29.763Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.616Z", 
-        "amount": 0.2968
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.961Z", 
+        "amount": 0.336
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.24, 
-        "invoice": 60, 
-        "date": "2013-11-24T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.8, 
+        "invoice": 75, 
+        "date": "2013-11-29T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58894, 
+    "pk": 60694, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.885Z", 
+        "updated": "2013-12-18T21:29:29.780Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.625Z", 
-        "amount": 0.168
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.969Z", 
+        "amount": 0.224
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.4, 
-        "invoice": 60, 
-        "date": "2013-11-24T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.2, 
+        "invoice": 75, 
+        "date": "2013-11-29T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58895, 
+    "pk": 60695, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.984Z", 
+        "updated": "2013-12-18T21:29:29.797Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.633Z", 
-        "amount": 0.3248
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.977Z", 
+        "amount": 0.3304
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.64, 
-        "invoice": 61, 
-        "date": "2013-11-25T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.72, 
+        "invoice": 75, 
+        "date": "2013-11-30T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58896, 
+    "pk": 60696, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.075Z", 
+        "updated": "2013-12-18T21:29:29.813Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.641Z", 
-        "amount": 0.2968
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.986Z", 
+        "amount": 0.3136
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.24, 
-        "invoice": 61, 
-        "date": "2013-11-25T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.48, 
+        "invoice": 75, 
+        "date": "2013-11-30T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58897, 
+    "pk": 60697, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.166Z", 
+        "updated": "2013-12-18T21:29:29.830Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.650Z", 
-        "amount": 0.2968
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:08.994Z", 
+        "amount": 0.2856
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.24, 
-        "invoice": 61, 
-        "date": "2013-11-25T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.08, 
+        "invoice": 75, 
+        "date": "2013-11-30T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58898, 
+    "pk": 60698, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.262Z", 
+        "updated": "2013-12-18T21:29:29.846Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.658Z", 
-        "amount": 0.2184
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.002Z", 
+        "amount": 0.336
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.12, 
-        "invoice": 61, 
-        "date": "2013-11-26T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.8, 
+        "invoice": 75, 
+        "date": "2013-12-01T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58899, 
+    "pk": 60699, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.354Z", 
+        "updated": "2013-12-18T21:29:29.863Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.666Z", 
-        "amount": 0.3304
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.010Z", 
+        "amount": 0.2128
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.72, 
-        "invoice": 61, 
-        "date": "2013-11-26T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.04, 
+        "invoice": 75, 
+        "date": "2013-12-01T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58900, 
+    "pk": 60700, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.445Z", 
+        "updated": "2013-12-18T21:29:29.879Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.674Z", 
-        "amount": 0.1568
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.019Z", 
+        "amount": 0.1456
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.24, 
-        "invoice": 61, 
-        "date": "2013-11-26T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 75, 
+        "date": "2013-12-01T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58901, 
+    "pk": 60701, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.536Z", 
+        "updated": "2013-12-18T21:29:29.904Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.683Z", 
-        "amount": 0.1848, 
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.027Z", 
+        "amount": 0.2128, 
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.64, 
-        "invoice": 61, 
-        "date": "2013-11-27T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.04, 
+        "invoice": 76, 
+        "date": "2013-12-02T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58902, 
+    "pk": 60702, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.627Z", 
+        "updated": "2013-12-18T21:29:29.921Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.691Z", 
-        "amount": 0.308
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.035Z", 
+        "amount": 0.2576
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 61, 
-        "date": "2013-11-27T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.68, 
+        "invoice": 76, 
+        "date": "2013-12-02T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58903, 
+    "pk": 60703, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.718Z", 
+        "updated": "2013-12-18T21:29:29.937Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.699Z", 
-        "amount": 0.336, 
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.044Z", 
+        "amount": 0.2856, 
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.8, 
-        "invoice": 61, 
-        "date": "2013-11-27T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.08, 
+        "invoice": 76, 
+        "date": "2013-12-02T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58904, 
+    "pk": 60704, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.809Z", 
+        "updated": "2013-12-18T21:29:29.954Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.708Z", 
-        "amount": 0.2184, 
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.054Z", 
+        "amount": 0.2464, 
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.12, 
-        "invoice": 61, 
-        "date": "2013-11-28T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.52, 
+        "invoice": 76, 
+        "date": "2013-12-03T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58905, 
+    "pk": 60705, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.900Z", 
+        "updated": "2013-12-18T21:29:29.971Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.716Z", 
-        "amount": 0.1904
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.060Z", 
+        "amount": 0.1736
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.72, 
-        "invoice": 61, 
-        "date": "2013-11-28T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.48, 
+        "invoice": 76, 
+        "date": "2013-12-03T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58906, 
+    "pk": 60706, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.991Z", 
+        "updated": "2013-12-18T21:29:29.987Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.724Z", 
-        "amount": 0.1624, 
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.068Z", 
+        "amount": 0.2464, 
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.32, 
-        "invoice": 61, 
-        "date": "2013-11-28T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.52, 
+        "invoice": 76, 
+        "date": "2013-12-03T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58907, 
+    "pk": 60707, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.083Z", 
+        "updated": "2013-12-18T21:29:30.004Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.733Z", 
-        "amount": 0.2072
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.077Z", 
+        "amount": 0.2744
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.96, 
-        "invoice": 61, 
-        "date": "2013-11-29T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.92, 
+        "invoice": 76, 
+        "date": "2013-12-04T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58908, 
+    "pk": 60708, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.174Z", 
+        "updated": "2013-12-18T21:29:30.020Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.741Z", 
-        "amount": 0.2968
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.085Z", 
+        "amount": 0.2016
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.24, 
-        "invoice": 61, 
-        "date": "2013-11-29T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.88, 
+        "invoice": 76, 
+        "date": "2013-12-04T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58909, 
+    "pk": 60709, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.265Z", 
+        "updated": "2013-12-18T21:29:30.037Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.749Z", 
-        "amount": 0.3024
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.093Z", 
+        "amount": 0.308
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.32, 
-        "invoice": 61, 
-        "date": "2013-11-29T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.4, 
+        "invoice": 76, 
+        "date": "2013-12-04T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58910, 
+    "pk": 60710, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.356Z", 
+        "updated": "2013-12-18T21:29:30.053Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.757Z", 
-        "amount": 0.2856
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.102Z", 
+        "amount": 0.1288
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.08, 
-        "invoice": 61, 
-        "date": "2013-11-30T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.84, 
+        "invoice": 76, 
+        "date": "2013-12-05T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58911, 
+    "pk": 60711, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.449Z", 
+        "updated": "2013-12-18T21:29:30.070Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.765Z", 
+        "created": "2013-12-18T21:29:09.110Z", 
         "amount": 0.1232, 
-        "object": 94
-        "account": 13
+        "object": 105
+        "account": 16
         "state": "invoiced", 
         "coreHours": 1.76, 
-        "invoice": 61, 
-        "date": "2013-11-30T14:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 76, 
+        "date": "2013-12-05T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58912, 
+    "pk": 60712, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.540Z", 
+        "updated": "2013-12-18T21:29:30.087Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.774Z", 
-        "amount": 0.1792
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.118Z", 
+        "amount": 0.2184
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.56, 
-        "invoice": 61, 
-        "date": "2013-11-30T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.12, 
+        "invoice": 76, 
+        "date": "2013-12-05T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58913, 
+    "pk": 60713, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.631Z", 
+        "updated": "2013-12-18T21:29:30.103Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.782Z", 
-        "amount": 0.1792, 
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.126Z", 
+        "amount": 0.3192, 
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.56, 
-        "invoice": 61, 
-        "date": "2013-12-01T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.56, 
+        "invoice": 76, 
+        "date": "2013-12-06T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58914, 
+    "pk": 60714, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.722Z", 
+        "updated": "2013-12-18T21:29:30.120Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.791Z", 
-        "amount": 0.1344
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.135Z", 
+        "amount": 0.3192
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 1.92, 
-        "invoice": 61, 
-        "date": "2013-12-01T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.56, 
+        "invoice": 76, 
+        "date": "2013-12-06T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58915, 
+    "pk": 60715, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.805Z", 
+        "updated": "2013-12-18T21:29:30.136Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.799Z", 
-        "amount": 0.3192
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.143Z", 
+        "amount": 0.2744
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.56, 
-        "invoice": 61, 
-        "date": "2013-12-01T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.92, 
+        "invoice": 76, 
+        "date": "2013-12-06T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58916, 
+    "pk": 60716, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.904Z", 
+        "updated": "2013-12-18T21:29:30.153Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.807Z", 
+        "created": "2013-12-18T21:29:09.151Z", 
         "amount": 0.1232, 
-        "object": 94
-        "account": 13
+        "object": 105
+        "account": 16
         "state": "invoiced", 
         "coreHours": 1.76, 
-        "invoice": 62, 
-        "date": "2013-12-02T06:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 76, 
+        "date": "2013-12-07T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58917, 
+    "pk": 60717, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.995Z", 
+        "updated": "2013-12-18T21:29:30.169Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.815Z", 
-        "amount": 0.1288
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.160Z", 
+        "amount": 0.2912
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 1.84, 
-        "invoice": 62, 
-        "date": "2013-12-02T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.16, 
+        "invoice": 76, 
+        "date": "2013-12-07T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58918, 
+    "pk": 60718, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.087Z", 
+        "updated": "2013-12-18T21:29:30.186Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.824Z", 
-        "amount": 0.2912
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.168Z", 
+        "amount": 0.3304
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 62, 
-        "date": "2013-12-02T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.72, 
+        "invoice": 76, 
+        "date": "2013-12-07T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58919, 
+    "pk": 60719, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.178Z", 
+        "updated": "2013-12-18T21:29:30.203Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.832Z", 
-        "amount": 0.2744, 
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.176Z", 
+        "amount": 0.224, 
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.92, 
-        "invoice": 62, 
-        "date": "2013-12-03T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.2, 
+        "invoice": 76, 
+        "date": "2013-12-08T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58920, 
+    "pk": 60720, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.269Z", 
+        "updated": "2013-12-18T21:29:30.219Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.840Z", 
-        "amount": 0.1568
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.185Z", 
+        "amount": 0.1456
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.24, 
-        "invoice": 62, 
-        "date": "2013-12-03T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 76, 
+        "date": "2013-12-08T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58921, 
+    "pk": 60721, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.360Z", 
+        "updated": "2013-12-18T21:29:30.236Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.849Z", 
-        "amount": 0.2688
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.193Z", 
+        "amount": 0.3192
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.84, 
-        "invoice": 62, 
-        "date": "2013-12-03T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.56, 
+        "invoice": 76, 
+        "date": "2013-12-08T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58922, 
+    "pk": 60722, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.451Z", 
+        "updated": "2013-12-18T21:29:30.260Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.857Z", 
-        "amount": 0.336, 
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.201Z", 
+        "amount": 0.2576, 
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.8, 
-        "invoice": 62, 
-        "date": "2013-12-04T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.68, 
+        "invoice": 77, 
+        "date": "2013-12-09T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58923, 
+    "pk": 60723, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.542Z", 
+        "updated": "2013-12-18T21:29:30.277Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.865Z", 
-        "amount": 0.196
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.209Z", 
+        "amount": 0.168
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 62, 
-        "date": "2013-12-04T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.4, 
+        "invoice": 77, 
+        "date": "2013-12-09T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58924, 
+    "pk": 60724, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.633Z", 
+        "updated": "2013-12-18T21:29:30.294Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.873Z", 
-        "amount": 0.1176, 
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.218Z", 
+        "amount": 0.2856, 
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 62, 
-        "date": "2013-12-04T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.08, 
+        "invoice": 77, 
+        "date": "2013-12-09T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
+    }
+},
+{
+    "pk": 60725, 
+    "model": "core.charge", 
+    "fields": {
+        "updated": "2013-12-18T21:29:30.319Z", 
+        "slice": 11, 
+        "created": "2013-12-18T21:29:09.226Z", 
+        "amount": 0.1232, 
+        "object": 105, 
+        "account": 16, 
+        "state": "invoiced", 
+        "coreHours": 1.76, 
+        "invoice": 77, 
+        "date": "2013-12-10T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58925
+    "pk": 60726
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.724Z", 
+        "updated": "2013-12-18T21:29:30.335Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.885Z", 
-        "amount": 0.1512
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.234Z", 
+        "amount": 0.168
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.16, 
-        "invoice": 62, 
-        "date": "2013-12-05T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.4, 
+        "invoice": 77, 
+        "date": "2013-12-10T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58926
+    "pk": 60727
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.816Z", 
+        "updated": "2013-12-18T21:29:30.352Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.893Z", 
-        "amount": 0.308
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.243Z", 
+        "amount": 0.1792
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 62, 
-        "date": "2013-12-05T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.56, 
+        "invoice": 77, 
+        "date": "2013-12-10T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58927
+    "pk": 60728
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.907Z", 
+        "updated": "2013-12-18T21:29:30.369Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.902Z", 
+        "created": "2013-12-18T21:29:09.251Z", 
         "amount": 0.3192, 
-        "object": 94
-        "account": 13
+        "object": 105
+        "account": 16
         "state": "invoiced", 
         "coreHours": 4.56, 
-        "invoice": 62, 
-        "date": "2013-12-05T22:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 77, 
+        "date": "2013-12-11T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58928
+    "pk": 60729
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.006Z", 
+        "updated": "2013-12-18T21:29:30.385Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.910Z", 
-        "amount": 0.1904
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.259Z", 
+        "amount": 0.1736
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.72, 
-        "invoice": 62, 
-        "date": "2013-12-06T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.48, 
+        "invoice": 77, 
+        "date": "2013-12-11T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58929
+    "pk": 60730
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.097Z", 
+        "updated": "2013-12-18T21:29:30.402Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.918Z", 
-        "amount": 0.14
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.267Z", 
+        "amount": 0.196
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.0, 
-        "invoice": 62, 
-        "date": "2013-12-06T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 77, 
+        "date": "2013-12-11T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58930
+    "pk": 60731
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.195Z", 
+        "updated": "2013-12-18T21:29:30.418Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.926Z", 
-        "amount": 0.1288
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.276Z", 
+        "amount": 0.112
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 1.84, 
-        "invoice": 62, 
-        "date": "2013-12-06T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.6, 
+        "invoice": 77, 
+        "date": "2013-12-12T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58931
+    "pk": 60732
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.286Z", 
+        "updated": "2013-12-18T21:29:30.435Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.935Z", 
-        "amount": 0.1512
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.284Z", 
+        "amount": 0.2856
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.16, 
-        "invoice": 62, 
-        "date": "2013-12-07T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.08, 
+        "invoice": 77, 
+        "date": "2013-12-12T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58932
+    "pk": 60733
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.377Z", 
+        "updated": "2013-12-18T21:29:30.451Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.943Z", 
-        "amount": 0.252
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.292Z", 
+        "amount": 0.1568
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.6, 
-        "invoice": 62, 
-        "date": "2013-12-07T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.24, 
+        "invoice": 77, 
+        "date": "2013-12-12T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58933
+    "pk": 60734
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.468Z", 
+        "updated": "2013-12-18T21:29:30.468Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.951Z", 
-        "amount": 0.1232
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.300Z", 
+        "amount": 0.2408
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 1.76, 
-        "invoice": 62, 
-        "date": "2013-12-07T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.44, 
+        "invoice": 77, 
+        "date": "2013-12-13T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58934
+    "pk": 60735
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.559Z", 
+        "updated": "2013-12-18T21:29:30.485Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.960Z", 
-        "amount": 0.1232, 
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.309Z", 
+        "amount": 0.2912, 
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 1.76, 
-        "invoice": 62, 
-        "date": "2013-12-08T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.16, 
+        "invoice": 77, 
+        "date": "2013-12-13T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58935
+    "pk": 60736
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.651Z", 
+        "updated": "2013-12-18T21:29:30.501Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.968Z", 
+        "created": "2013-12-18T21:29:09.317Z", 
         "amount": 0.1512, 
-        "object": 94
-        "account": 13
+        "object": 105
+        "account": 16
         "state": "invoiced", 
         "coreHours": 2.16, 
-        "invoice": 62, 
-        "date": "2013-12-08T14:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 77, 
+        "date": "2013-12-13T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58936
+    "pk": 60737
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.742Z", 
+        "updated": "2013-12-18T21:29:30.518Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.976Z", 
-        "amount": 0.336
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.325Z", 
+        "amount": 0.2632
+        "object": 105
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.8, 
-        "invoice": 62, 
-        "date": "2013-12-08T22:00:00Z", 
-        "kind": "besteffort"
-    }
-},
-{
-    "pk": 58937, 
-    "model": "core.charge", 
-    "fields": {
-        "updated": "2013-12-13T22:19:47.984Z", 
-        "slice": 11, 
-        "created": "2013-12-13T22:19:47.984Z", 
-        "amount": 0.196, 
-        "object": 94, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 2.8, 
-        "invoice": null, 
-        "date": "2013-12-09T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.76, 
+        "invoice": 77, 
+        "date": "2013-12-14T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58938, 
+    "pk": 60738, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:47.993Z", 
+        "updated": "2013-12-18T21:29:30.534Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:47.993Z", 
-        "amount": 0.1904, 
-        "object": 94, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 2.72, 
-        "invoice": null, 
-        "date": "2013-12-09T14:00:00Z", 
-        "kind": "besteffort"
+        "created": "2013-12-18T21:29:09.334Z", 
+        "amount": 0.2744, 
+        "object": 105, 
+        "account": 16, 
+        "state": "invoiced", 
+        "coreHours": 3.92, 
+        "invoice": 77, 
+        "date": "2013-12-14T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58939, 
+    "pk": 60739, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.001Z", 
+        "updated": "2013-12-18T21:29:30.551Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:48.001Z", 
-        "amount": 0.2464, 
-        "object": 94, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 3.52, 
-        "invoice": null, 
-        "date": "2013-12-09T22:00:00Z", 
-        "kind": "besteffort"
+        "created": "2013-12-18T21:29:09.342Z", 
+        "amount": 0.1512, 
+        "object": 105, 
+        "account": 16, 
+        "state": "invoiced", 
+        "coreHours": 2.16, 
+        "invoice": 77, 
+        "date": "2013-12-14T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58940, 
+    "pk": 60740, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.009Z", 
+        "updated": "2013-12-18T21:29:30.567Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:48.009Z", 
-        "amount": 0.196, 
-        "object": 94, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 2.8, 
-        "invoice": null, 
-        "date": "2013-12-10T06:00:00Z", 
-        "kind": "besteffort"
+        "created": "2013-12-18T21:29:09.350Z", 
+        "amount": 0.2856, 
+        "object": 105, 
+        "account": 16, 
+        "state": "invoiced", 
+        "coreHours": 4.08, 
+        "invoice": 77, 
+        "date": "2013-12-15T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58941, 
+    "pk": 60741, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.017Z", 
+        "updated": "2013-12-18T21:29:30.584Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:48.017Z", 
-        "amount": 0.1736, 
-        "object": 94, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 2.48, 
-        "invoice": null, 
-        "date": "2013-12-10T14:00:00Z", 
-        "kind": "besteffort"
+        "created": "2013-12-18T21:29:09.358Z", 
+        "amount": 0.2856, 
+        "object": 105, 
+        "account": 16, 
+        "state": "invoiced", 
+        "coreHours": 4.08, 
+        "invoice": 77, 
+        "date": "2013-12-15T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58942, 
+    "pk": 60742, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.026Z", 
+        "updated": "2013-12-18T21:29:30.601Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:48.026Z", 
-        "amount": 0.1848, 
-        "object": 94, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 2.64, 
-        "invoice": null, 
-        "date": "2013-12-10T22:00:00Z", 
-        "kind": "besteffort"
+        "created": "2013-12-18T21:29:09.367Z", 
+        "amount": 0.3136, 
+        "object": 105, 
+        "account": 16, 
+        "state": "invoiced", 
+        "coreHours": 4.48, 
+        "invoice": 77, 
+        "date": "2013-12-15T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58943, 
+    "pk": 60743, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.034Z", 
+        "updated": "2013-12-18T21:29:09.375Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:48.034Z", 
-        "amount": 0.1568
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.375Z", 
+        "amount": 0.1176
+        "object": 105
+        "account": 16
         "state": "pending", 
-        "coreHours": 2.24
+        "coreHours": 1.68
         "invoice": null, 
-        "date": "2013-12-11T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58944, 
+    "pk": 60744, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.042Z", 
+        "updated": "2013-12-18T21:29:09.383Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:48.042Z", 
-        "amount": 0.1904
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.383Z", 
+        "amount": 0.2128
+        "object": 105
+        "account": 16
         "state": "pending", 
-        "coreHours": 2.72
+        "coreHours": 3.04
         "invoice": null, 
-        "date": "2013-12-11T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58945, 
+    "pk": 60745, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.051Z", 
+        "updated": "2013-12-18T21:29:09.392Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:48.051Z", 
-        "amount": 0.3192
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.392Z", 
+        "amount": 0.28
+        "object": 105
+        "account": 16
         "state": "pending", 
-        "coreHours": 4.56
+        "coreHours": 4.0
         "invoice": null, 
-        "date": "2013-12-11T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58946, 
+    "pk": 60746, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.059Z", 
+        "updated": "2013-12-18T21:29:09.400Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:48.059Z", 
-        "amount": 0.1568
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.400Z", 
+        "amount": 0.224
+        "object": 105
+        "account": 16
         "state": "pending", 
-        "coreHours": 2.24
+        "coreHours": 3.2
         "invoice": null, 
-        "date": "2013-12-12T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58947, 
+    "pk": 60747, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.067Z", 
+        "updated": "2013-12-18T21:29:09.408Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:48.067Z", 
-        "amount": 0.2688
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.408Z", 
+        "amount": 0.2184
+        "object": 105
+        "account": 16
         "state": "pending", 
-        "coreHours": 3.84
+        "coreHours": 3.12
         "invoice": null, 
-        "date": "2013-12-12T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58948, 
+    "pk": 60748, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.075Z", 
+        "updated": "2013-12-18T21:29:09.416Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:48.075Z", 
-        "amount": 0.2632
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.416Z", 
+        "amount": 0.2464
+        "object": 105
+        "account": 16
         "state": "pending", 
-        "coreHours": 3.76
+        "coreHours": 3.52
         "invoice": null, 
-        "date": "2013-12-12T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58949, 
+    "pk": 60749, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.084Z", 
+        "updated": "2013-12-18T21:29:09.425Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:48.084Z", 
-        "amount": 0.2856
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.425Z", 
+        "amount": 0.308
+        "object": 105
+        "account": 16
         "state": "pending", 
-        "coreHours": 4.08
+        "coreHours": 4.4
         "invoice": null, 
-        "date": "2013-12-13T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-18T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58950, 
+    "pk": 60750, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.092Z", 
+        "updated": "2013-12-18T21:29:09.433Z", 
         "slice": 11, 
-        "created": "2013-12-13T22:19:48.092Z", 
-        "amount": 0.336
-        "object": 94
-        "account": 13
+        "created": "2013-12-18T21:29:09.433Z", 
+        "amount": 0.3024
+        "object": 105
+        "account": 16
         "state": "pending", 
-        "coreHours": 4.8
+        "coreHours": 4.32
         "invoice": null, 
-        "date": "2013-12-13T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-18T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58951, 
+    "pk": 60751, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.440Z", 
+        "updated": "2013-12-18T21:29:29.232Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.115Z", 
-        "amount": 0.2296
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.456Z", 
+        "amount": 0.2352
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.28, 
-        "invoice": 59, 
-        "date": "2013-11-13T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.36, 
+        "invoice": 74, 
+        "date": "2013-11-18T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58952, 
+    "pk": 60752, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.532Z", 
+        "updated": "2013-12-18T21:29:29.248Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.125Z", 
-        "amount": 0.2352
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.466Z", 
+        "amount": 0.308
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 59, 
-        "date": "2013-11-14T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.4, 
+        "invoice": 74, 
+        "date": "2013-11-19T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58953, 
+    "pk": 60753, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.623Z", 
+        "updated": "2013-12-18T21:29:29.265Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.133Z", 
-        "amount": 0.308
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.474Z", 
+        "amount": 0.2576
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 59, 
-        "date": "2013-11-14T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.68, 
+        "invoice": 74, 
+        "date": "2013-11-19T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58954, 
+    "pk": 60754, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.714Z", 
+        "updated": "2013-12-18T21:29:29.281Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.142Z", 
-        "amount": 0.252, 
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.483Z", 
+        "amount": 0.3192, 
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.6, 
-        "invoice": 59, 
-        "date": "2013-11-14T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.56, 
+        "invoice": 74, 
+        "date": "2013-11-19T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58955, 
+    "pk": 60755, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.805Z", 
+        "updated": "2013-12-18T21:29:29.298Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.150Z", 
-        "amount": 0.308
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.491Z", 
+        "amount": 0.1904
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 59, 
-        "date": "2013-11-15T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.72, 
+        "invoice": 74, 
+        "date": "2013-11-20T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58956, 
+    "pk": 60756, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.896Z", 
+        "updated": "2013-12-18T21:29:29.314Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.158Z", 
-        "amount": 0.3024
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.499Z", 
+        "amount": 0.3136
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.32, 
-        "invoice": 59, 
-        "date": "2013-11-15T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.48, 
+        "invoice": 74, 
+        "date": "2013-11-20T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58957, 
+    "pk": 60757, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.004Z", 
+        "updated": "2013-12-18T21:29:29.331Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.167Z", 
-        "amount": 0.1456, 
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.508Z", 
+        "amount": 0.1176, 
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.08, 
-        "invoice": 59, 
-        "date": "2013-11-15T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.68, 
+        "invoice": 74, 
+        "date": "2013-11-20T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58958, 
+    "pk": 60758, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.096Z", 
+        "updated": "2013-12-18T21:29:29.347Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.175Z", 
-        "amount": 0.2912
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.516Z", 
+        "amount": 0.28
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 59, 
-        "date": "2013-11-16T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.0, 
+        "invoice": 74, 
+        "date": "2013-11-21T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58959, 
+    "pk": 60759, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.187Z", 
+        "updated": "2013-12-18T21:29:29.364Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.183Z", 
+        "created": "2013-12-18T21:29:09.524Z", 
         "amount": 0.1232, 
-        "object": 95
-        "account": 13
+        "object": 113
+        "account": 16
         "state": "invoiced", 
         "coreHours": 1.76, 
-        "invoice": 59, 
-        "date": "2013-11-16T14:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 74, 
+        "date": "2013-11-21T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58960, 
+    "pk": 60760, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.278Z", 
+        "updated": "2013-12-18T21:29:29.381Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.191Z", 
-        "amount": 0.2184
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.532Z", 
+        "amount": 0.3136
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.12, 
-        "invoice": 59, 
-        "date": "2013-11-16T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.48, 
+        "invoice": 74, 
+        "date": "2013-11-21T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58961, 
+    "pk": 60761, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.361Z", 
+        "updated": "2013-12-18T21:29:29.397Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.200Z", 
-        "amount": 0.2352
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.541Z", 
+        "amount": 0.1456
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 59, 
-        "date": "2013-11-17T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 74, 
+        "date": "2013-11-22T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58962, 
+    "pk": 60762, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.452Z", 
+        "updated": "2013-12-18T21:29:29.414Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.208Z", 
-        "amount": 0.2016, 
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.549Z", 
+        "amount": 0.2576, 
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.88, 
-        "invoice": 59, 
-        "date": "2013-11-17T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.68, 
+        "invoice": 74, 
+        "date": "2013-11-22T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58963, 
+    "pk": 60763, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.543Z", 
+        "updated": "2013-12-18T21:29:29.432Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.216Z", 
-        "amount": 0.1512
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.557Z", 
+        "amount": 0.2016
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.16, 
-        "invoice": 59, 
-        "date": "2013-11-17T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.88, 
+        "invoice": 74, 
+        "date": "2013-11-22T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58964, 
+    "pk": 60764, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.642Z", 
+        "updated": "2013-12-18T21:29:29.448Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.224Z", 
-        "amount": 0.2296
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.565Z", 
+        "amount": 0.3024
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.28, 
-        "invoice": 60, 
-        "date": "2013-11-18T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.32, 
+        "invoice": 74, 
+        "date": "2013-11-23T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58965, 
+    "pk": 60765, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.745Z", 
+        "updated": "2013-12-18T21:29:29.465Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.233Z", 
-        "amount": 0.308
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.574Z", 
+        "amount": 0.3136
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 60, 
-        "date": "2013-11-18T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.48, 
+        "invoice": 74, 
+        "date": "2013-11-23T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58966, 
+    "pk": 60766, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.836Z", 
+        "updated": "2013-12-18T21:29:29.482Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.241Z", 
-        "amount": 0.2408, 
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.582Z", 
+        "amount": 0.2128, 
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.44, 
-        "invoice": 60, 
-        "date": "2013-11-18T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.04, 
+        "invoice": 74, 
+        "date": "2013-11-23T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58967, 
+    "pk": 60767, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.927Z", 
+        "updated": "2013-12-18T21:29:29.498Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.249Z", 
-        "amount": 0.1512
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.590Z", 
+        "amount": 0.1848
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.16, 
-        "invoice": 60, 
-        "date": "2013-11-19T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.64, 
+        "invoice": 74, 
+        "date": "2013-11-24T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58968, 
+    "pk": 60768, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.019Z", 
+        "updated": "2013-12-18T21:29:29.515Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.258Z", 
-        "amount": 0.2016, 
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.599Z", 
+        "amount": 0.3136, 
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.88, 
-        "invoice": 60, 
-        "date": "2013-11-19T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.48, 
+        "invoice": 74, 
+        "date": "2013-11-24T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58969, 
+    "pk": 60769, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.110Z", 
+        "updated": "2013-12-18T21:29:29.531Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.266Z", 
-        "amount": 0.2744
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.607Z", 
+        "amount": 0.1456
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.92, 
-        "invoice": 60, 
-        "date": "2013-11-19T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 74, 
+        "date": "2013-11-24T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58970, 
+    "pk": 60770, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.201Z", 
+        "updated": "2013-12-18T21:29:29.556Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.274Z", 
-        "amount": 0.2184
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.615Z", 
+        "amount": 0.2576
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.12, 
-        "invoice": 60, 
-        "date": "2013-11-20T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.68, 
+        "invoice": 75, 
+        "date": "2013-11-25T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58971, 
+    "pk": 60771, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.292Z", 
+        "updated": "2013-12-18T21:29:29.573Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.283Z", 
-        "amount": 0.2016
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.623Z", 
+        "amount": 0.2912
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.88, 
-        "invoice": 60, 
-        "date": "2013-11-20T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.16, 
+        "invoice": 75, 
+        "date": "2013-11-25T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58972, 
+    "pk": 60772, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.386Z", 
+        "updated": "2013-12-18T21:29:29.589Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.291Z", 
-        "amount": 0.1792
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.632Z", 
+        "amount": 0.2744
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.56, 
-        "invoice": 60, 
-        "date": "2013-11-20T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.92, 
+        "invoice": 75, 
+        "date": "2013-11-25T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58973, 
+    "pk": 60773, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.477Z", 
+        "updated": "2013-12-18T21:29:29.606Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.299Z", 
-        "amount": 0.196, 
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.640Z", 
+        "amount": 0.2296, 
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 60, 
-        "date": "2013-11-21T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.28, 
+        "invoice": 75, 
+        "date": "2013-11-26T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58974, 
+    "pk": 60774, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.568Z", 
+        "updated": "2013-12-18T21:29:29.623Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.308Z", 
-        "amount": 0.1288, 
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.649Z", 
+        "amount": 0.308, 
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 1.84, 
-        "invoice": 60, 
-        "date": "2013-11-21T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.4, 
+        "invoice": 75, 
+        "date": "2013-11-26T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58975, 
+    "pk": 60775, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.675Z", 
+        "updated": "2013-12-18T21:29:29.639Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.316Z", 
-        "amount": 0.224
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.657Z", 
+        "amount": 0.1736
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 60, 
-        "date": "2013-11-21T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.48, 
+        "invoice": 75, 
+        "date": "2013-11-26T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58976, 
+    "pk": 60776, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.767Z", 
+        "updated": "2013-12-18T21:29:29.656Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.324Z", 
-        "amount": 0.1904
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.665Z", 
+        "amount": 0.1176
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.72, 
-        "invoice": 60, 
-        "date": "2013-11-22T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.68, 
+        "invoice": 75, 
+        "date": "2013-11-27T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58977, 
+    "pk": 60777, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.858Z", 
+        "updated": "2013-12-18T21:29:29.672Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.332Z", 
-        "amount": 0.3304
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.673Z", 
+        "amount": 0.1736
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.72, 
-        "invoice": 60, 
-        "date": "2013-11-22T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.48, 
+        "invoice": 75, 
+        "date": "2013-11-27T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58978, 
+    "pk": 60778, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.974Z", 
+        "updated": "2013-12-18T21:29:29.689Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.341Z", 
-        "amount": 0.2632
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.682Z", 
+        "amount": 0.2968
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.76, 
-        "invoice": 60, 
-        "date": "2013-11-22T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.24, 
+        "invoice": 75, 
+        "date": "2013-11-27T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58979, 
+    "pk": 60779, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.065Z", 
+        "updated": "2013-12-18T21:29:29.706Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.349Z", 
-        "amount": 0.168
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.690Z", 
+        "amount": 0.252
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.4, 
-        "invoice": 60, 
-        "date": "2013-11-23T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.6, 
+        "invoice": 75, 
+        "date": "2013-11-28T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58980, 
+    "pk": 60780, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.156Z", 
+        "updated": "2013-12-18T21:29:29.722Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.357Z", 
-        "amount": 0.2464
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.698Z", 
+        "amount": 0.2632
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 60, 
-        "date": "2013-11-23T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.76, 
+        "invoice": 75, 
+        "date": "2013-11-28T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58981, 
+    "pk": 60781, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.314Z", 
+        "updated": "2013-12-18T21:29:29.739Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.365Z", 
-        "amount": 0.196, 
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.706Z", 
+        "amount": 0.1456, 
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 60, 
-        "date": "2013-11-23T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 75, 
+        "date": "2013-11-28T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58982, 
+    "pk": 60782, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.578Z", 
+        "updated": "2013-12-18T21:29:29.755Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.374Z", 
-        "amount": 0.2408
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.715Z", 
+        "amount": 0.1512
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.44, 
-        "invoice": 60, 
-        "date": "2013-11-24T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.16, 
+        "invoice": 75, 
+        "date": "2013-11-29T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58983, 
+    "pk": 60783, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.786Z", 
+        "updated": "2013-12-18T21:29:29.772Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.382Z", 
-        "amount": 0.3192, 
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.723Z", 
+        "amount": 0.2072, 
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.56, 
-        "invoice": 60, 
-        "date": "2013-11-24T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.96, 
+        "invoice": 75, 
+        "date": "2013-11-29T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58984, 
+    "pk": 60784, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.877Z", 
+        "updated": "2013-12-18T21:29:29.788Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.390Z", 
-        "amount": 0.1848
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.731Z", 
+        "amount": 0.1624
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.64, 
-        "invoice": 60, 
-        "date": "2013-11-24T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.32, 
+        "invoice": 75, 
+        "date": "2013-11-29T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58985, 
+    "pk": 60785, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.976Z", 
+        "updated": "2013-12-18T21:29:29.805Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.399Z", 
-        "amount": 0.168, 
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.740Z", 
+        "amount": 0.1848, 
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.4, 
-        "invoice": 61, 
-        "date": "2013-11-25T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.64, 
+        "invoice": 75, 
+        "date": "2013-11-30T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58986, 
+    "pk": 60786, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.067Z", 
+        "updated": "2013-12-18T21:29:29.821Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.407Z", 
-        "amount": 0.224
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.748Z", 
+        "amount": 0.1176
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 61, 
-        "date": "2013-11-25T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.68, 
+        "invoice": 75, 
+        "date": "2013-11-30T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58987, 
+    "pk": 60787, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.158Z", 
+        "updated": "2013-12-18T21:29:29.838Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.415Z", 
-        "amount": 0.1736, 
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.756Z", 
+        "amount": 0.196, 
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.48, 
-        "invoice": 61, 
-        "date": "2013-11-25T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 75, 
+        "date": "2013-11-30T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58988, 
+    "pk": 60788, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.254Z", 
+        "updated": "2013-12-18T21:29:29.855Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.423Z", 
-        "amount": 0.308
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.764Z", 
+        "amount": 0.1792
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 61, 
-        "date": "2013-11-26T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.56, 
+        "invoice": 75, 
+        "date": "2013-12-01T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58989, 
+    "pk": 60789, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.345Z", 
+        "updated": "2013-12-18T21:29:29.871Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.432Z", 
-        "amount": 0.1736
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.773Z", 
+        "amount": 0.2408
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.48, 
-        "invoice": 61, 
-        "date": "2013-11-26T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.44, 
+        "invoice": 75, 
+        "date": "2013-12-01T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58990, 
+    "pk": 60790, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.436Z", 
+        "updated": "2013-12-18T21:29:29.888Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.440Z", 
-        "amount": 0.1176
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.781Z", 
+        "amount": 0.14
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 61, 
-        "date": "2013-11-26T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.0, 
+        "invoice": 75, 
+        "date": "2013-12-01T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58991, 
+    "pk": 60791, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.527Z", 
+        "updated": "2013-12-18T21:29:29.913Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.448Z", 
-        "amount": 0.2744
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.789Z", 
+        "amount": 0.112
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.92, 
-        "invoice": 61, 
-        "date": "2013-11-27T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.6, 
+        "invoice": 76, 
+        "date": "2013-12-02T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58992, 
+    "pk": 60792, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.619Z", 
+        "updated": "2013-12-18T21:29:29.929Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.457Z", 
-        "amount": 0.224
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.798Z", 
+        "amount": 0.3136
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 61, 
-        "date": "2013-11-27T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.48, 
+        "invoice": 76, 
+        "date": "2013-12-02T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58993, 
+    "pk": 60793, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.710Z", 
+        "updated": "2013-12-18T21:29:29.946Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.465Z", 
-        "amount": 0.1176, 
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.806Z", 
+        "amount": 0.1456, 
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 61, 
-        "date": "2013-11-27T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 76, 
+        "date": "2013-12-02T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58994, 
+    "pk": 60794, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.801Z", 
+        "updated": "2013-12-18T21:29:29.962Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.473Z", 
-        "amount": 0.2184
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.814Z", 
+        "amount": 0.2912
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.12, 
-        "invoice": 61, 
-        "date": "2013-11-28T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.16, 
+        "invoice": 76, 
+        "date": "2013-12-03T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58995, 
+    "pk": 60795, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.892Z", 
+        "updated": "2013-12-18T21:29:29.979Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.481Z", 
-        "amount": 0.1904
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.822Z", 
+        "amount": 0.2128
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.72, 
-        "invoice": 61, 
-        "date": "2013-11-28T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.04, 
+        "invoice": 76, 
+        "date": "2013-12-03T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58996, 
+    "pk": 60796, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.983Z", 
+        "updated": "2013-12-18T21:29:29.995Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.490Z", 
-        "amount": 0.196
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.831Z", 
+        "amount": 0.1848
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 61, 
-        "date": "2013-11-28T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.64, 
+        "invoice": 76, 
+        "date": "2013-12-03T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58997, 
+    "pk": 60797, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.074Z", 
+        "updated": "2013-12-18T21:29:30.012Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.498Z", 
-        "amount": 0.2464, 
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.839Z", 
+        "amount": 0.3304, 
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 61, 
-        "date": "2013-11-29T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.72, 
+        "invoice": 76, 
+        "date": "2013-12-04T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58998, 
+    "pk": 60798, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.165Z", 
+        "updated": "2013-12-18T21:29:30.029Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.506Z", 
-        "amount": 0.1232
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.847Z", 
+        "amount": 0.28
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 1.76, 
-        "invoice": 61, 
-        "date": "2013-11-29T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.0, 
+        "invoice": 76, 
+        "date": "2013-12-04T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 58999, 
+    "pk": 60799, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.256Z", 
+        "updated": "2013-12-18T21:29:30.045Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.514Z", 
-        "amount": 0.2016
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.855Z", 
+        "amount": 0.308
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.88, 
-        "invoice": 61, 
-        "date": "2013-11-29T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.4, 
+        "invoice": 76, 
+        "date": "2013-12-04T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59000, 
+    "pk": 60800, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.348Z", 
+        "updated": "2013-12-18T21:29:30.062Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.523Z", 
-        "amount": 0.2408
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.864Z", 
+        "amount": 0.3304
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.44, 
-        "invoice": 61, 
-        "date": "2013-11-30T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.72, 
+        "invoice": 76, 
+        "date": "2013-12-05T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59001, 
+    "pk": 60801, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.440Z", 
+        "updated": "2013-12-18T21:29:30.078Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.531Z", 
-        "amount": 0.196
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.872Z", 
+        "amount": 0.2464
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 61, 
-        "date": "2013-11-30T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.52, 
+        "invoice": 76, 
+        "date": "2013-12-05T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59002, 
+    "pk": 60802, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.531Z", 
+        "updated": "2013-12-18T21:29:30.095Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.539Z", 
-        "amount": 0.1848
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.880Z", 
+        "amount": 0.3136
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.64, 
-        "invoice": 61, 
-        "date": "2013-11-30T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.48, 
+        "invoice": 76, 
+        "date": "2013-12-05T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59003, 
+    "pk": 60803, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.623Z", 
+        "updated": "2013-12-18T21:29:30.111Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.548Z", 
-        "amount": 0.252, 
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.889Z", 
+        "amount": 0.112, 
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.6, 
-        "invoice": 61, 
-        "date": "2013-12-01T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.6, 
+        "invoice": 76, 
+        "date": "2013-12-06T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59004, 
+    "pk": 60804, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.714Z", 
+        "updated": "2013-12-18T21:29:30.128Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.556Z", 
-        "amount": 0.14, 
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.897Z", 
+        "amount": 0.2744, 
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.0, 
-        "invoice": 61, 
-        "date": "2013-12-01T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.92, 
+        "invoice": 76, 
+        "date": "2013-12-06T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59005, 
+    "pk": 60805, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.846Z", 
+        "updated": "2013-12-18T21:29:30.145Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.564Z", 
-        "amount": 0.1288
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.905Z", 
+        "amount": 0.1792
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 1.84, 
-        "invoice": 61, 
-        "date": "2013-12-01T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.56, 
+        "invoice": 76, 
+        "date": "2013-12-06T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59006, 
+    "pk": 60806, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.946Z", 
+        "updated": "2013-12-18T21:29:30.161Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.572Z", 
-        "amount": 0.1456
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.913Z", 
+        "amount": 0.1568
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.08, 
-        "invoice": 62, 
-        "date": "2013-12-02T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.24, 
+        "invoice": 76, 
+        "date": "2013-12-07T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59007, 
+    "pk": 60807, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.037Z", 
+        "updated": "2013-12-18T21:29:30.178Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.581Z", 
-        "amount": 0.308, 
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.922Z", 
+        "amount": 0.2408, 
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 62, 
-        "date": "2013-12-02T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.44, 
+        "invoice": 76, 
+        "date": "2013-12-07T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59008, 
+    "pk": 60808, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.128Z", 
+        "updated": "2013-12-18T21:29:30.194Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.589Z", 
-        "amount": 0.1512
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.930Z", 
+        "amount": 0.1176
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.16, 
-        "invoice": 62, 
-        "date": "2013-12-02T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.68, 
+        "invoice": 76, 
+        "date": "2013-12-07T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59009, 
+    "pk": 60809, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.219Z", 
+        "updated": "2013-12-18T21:29:30.211Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.597Z", 
-        "amount": 0.2912
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.938Z", 
+        "amount": 0.1176
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 62, 
-        "date": "2013-12-03T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.68, 
+        "invoice": 76, 
+        "date": "2013-12-08T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59010, 
+    "pk": 60810, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.310Z", 
+        "updated": "2013-12-18T21:29:30.227Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.606Z", 
-        "amount": 0.1568
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.947Z", 
+        "amount": 0.3304
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.24, 
-        "invoice": 62, 
-        "date": "2013-12-03T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.72, 
+        "invoice": 76, 
+        "date": "2013-12-08T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59011, 
+    "pk": 60811, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.401Z", 
+        "updated": "2013-12-18T21:29:30.244Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.614Z", 
-        "amount": 0.3192
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.955Z", 
+        "amount": 0.196
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.56, 
-        "invoice": 62, 
-        "date": "2013-12-03T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 76, 
+        "date": "2013-12-08T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59012, 
+    "pk": 60812, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.492Z", 
+        "updated": "2013-12-18T21:29:30.269Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.622Z", 
-        "amount": 0.1232
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.963Z", 
+        "amount": 0.2744
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 1.76, 
-        "invoice": 62, 
-        "date": "2013-12-04T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.92, 
+        "invoice": 77, 
+        "date": "2013-12-09T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59013, 
+    "pk": 60813, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.584Z", 
+        "updated": "2013-12-18T21:29:30.285Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.630Z", 
-        "amount": 0.3248
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.971Z", 
+        "amount": 0.1792
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.64, 
-        "invoice": 62, 
-        "date": "2013-12-04T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.56, 
+        "invoice": 77, 
+        "date": "2013-12-09T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59014, 
+    "pk": 60814, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.675Z", 
+        "updated": "2013-12-18T21:29:30.302Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.639Z", 
-        "amount": 0.1344
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.980Z", 
+        "amount": 0.112
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 1.92, 
-        "invoice": 62, 
-        "date": "2013-12-04T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.6, 
+        "invoice": 77, 
+        "date": "2013-12-09T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59015, 
+    "pk": 60815, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.766Z", 
+        "updated": "2013-12-18T21:29:30.327Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.647Z", 
-        "amount": 0.252
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.988Z", 
+        "amount": 0.2296
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.6, 
-        "invoice": 62, 
-        "date": "2013-12-05T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.28, 
+        "invoice": 77, 
+        "date": "2013-12-10T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59016, 
+    "pk": 60816, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.857Z", 
+        "updated": "2013-12-18T21:29:30.344Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.655Z", 
-        "amount": 0.2856
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:09.996Z", 
+        "amount": 0.1232
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 4.08, 
-        "invoice": 62, 
-        "date": "2013-12-05T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.76, 
+        "invoice": 77, 
+        "date": "2013-12-10T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59017, 
+    "pk": 60817, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.948Z", 
+        "updated": "2013-12-18T21:29:30.360Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.664Z", 
-        "amount": 0.196
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:10.005Z", 
+        "amount": 0.1848
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 62, 
-        "date": "2013-12-05T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.64, 
+        "invoice": 77, 
+        "date": "2013-12-10T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59018, 
+    "pk": 60818, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.998Z", 
+        "updated": "2013-12-18T21:29:30.377Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.672Z", 
-        "amount": 0.196, 
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:10.013Z", 
+        "amount": 0.2296, 
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 62, 
-        "date": "2013-12-06T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.28, 
+        "invoice": 77, 
+        "date": "2013-12-11T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59019, 
+    "pk": 60819, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.089Z", 
+        "updated": "2013-12-18T21:29:30.393Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.680Z", 
-        "amount": 0.1232
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:10.021Z", 
+        "amount": 0.2968
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 1.76, 
-        "invoice": 62, 
-        "date": "2013-12-06T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.24, 
+        "invoice": 77, 
+        "date": "2013-12-11T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59020, 
+    "pk": 60820, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.187Z", 
+        "updated": "2013-12-18T21:29:30.410Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.688Z", 
-        "amount": 0.2464
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:10.029Z", 
+        "amount": 0.112
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 62, 
-        "date": "2013-12-06T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.6, 
+        "invoice": 77, 
+        "date": "2013-12-11T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59021, 
+    "pk": 60821, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.278Z", 
+        "updated": "2013-12-18T21:29:30.427Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.697Z", 
-        "amount": 0.2128
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:10.038Z", 
+        "amount": 0.2576
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.04, 
-        "invoice": 62, 
-        "date": "2013-12-07T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.68, 
+        "invoice": 77, 
+        "date": "2013-12-12T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59022, 
+    "pk": 60822, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.369Z", 
+        "updated": "2013-12-18T21:29:30.443Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.705Z", 
-        "amount": 0.1288
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:10.046Z", 
+        "amount": 0.2856
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 1.84, 
-        "invoice": 62, 
-        "date": "2013-12-07T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.08, 
+        "invoice": 77, 
+        "date": "2013-12-12T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59023, 
+    "pk": 60823, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.460Z", 
+        "updated": "2013-12-18T21:29:30.460Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.713Z", 
-        "amount": 0.1904
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:10.054Z", 
+        "amount": 0.2576
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.72, 
-        "invoice": 62, 
-        "date": "2013-12-07T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.68, 
+        "invoice": 77, 
+        "date": "2013-12-12T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59024, 
+    "pk": 60824, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.551Z", 
+        "updated": "2013-12-18T21:29:30.476Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.722Z", 
-        "amount": 0.1792
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:10.063Z", 
+        "amount": 0.2688
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 2.56, 
-        "invoice": 62, 
-        "date": "2013-12-08T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.84, 
+        "invoice": 77, 
+        "date": "2013-12-13T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59025, 
+    "pk": 60825, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.642Z", 
+        "updated": "2013-12-18T21:29:30.493Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.730Z", 
+        "created": "2013-12-18T21:29:10.071Z", 
         "amount": 0.252, 
-        "object": 95
-        "account": 13
+        "object": 113
+        "account": 16
         "state": "invoiced", 
         "coreHours": 3.6, 
-        "invoice": 62, 
-        "date": "2013-12-08T14:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 77, 
+        "date": "2013-12-13T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59026, 
+    "pk": 60826, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.733Z", 
+        "updated": "2013-12-18T21:29:30.509Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.738Z", 
-        "amount": 0.2688
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:10.079Z", 
+        "amount": 0.14
+        "object": 113
+        "account": 16
         "state": "invoiced", 
-        "coreHours": 3.84, 
-        "invoice": 62, 
-        "date": "2013-12-08T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.0, 
+        "invoice": 77, 
+        "date": "2013-12-13T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59027, 
+    "pk": 60827, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.746Z", 
+        "updated": "2013-12-18T21:29:30.526Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.746Z", 
-        "amount": 0.2576, 
-        "object": 95, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 3.68, 
-        "invoice": null, 
-        "date": "2013-12-09T06:00:00Z", 
-        "kind": "besteffort"
+        "created": "2013-12-18T21:29:10.087Z", 
+        "amount": 0.3304, 
+        "object": 113, 
+        "account": 16, 
+        "state": "invoiced", 
+        "coreHours": 4.72, 
+        "invoice": 77, 
+        "date": "2013-12-14T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59028, 
+    "pk": 60828, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.755Z", 
+        "updated": "2013-12-18T21:29:30.543Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.755Z", 
-        "amount": 0.2968, 
-        "object": 95, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 4.24, 
-        "invoice": null, 
-        "date": "2013-12-09T14:00:00Z", 
-        "kind": "besteffort"
+        "created": "2013-12-18T21:29:10.096Z", 
+        "amount": 0.3304, 
+        "object": 113, 
+        "account": 16, 
+        "state": "invoiced", 
+        "coreHours": 4.72, 
+        "invoice": 77, 
+        "date": "2013-12-14T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59029, 
+    "pk": 60829, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.763Z", 
+        "updated": "2013-12-18T21:29:30.559Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.763Z", 
-        "amount": 0.2968, 
-        "object": 95, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 4.24, 
-        "invoice": null, 
-        "date": "2013-12-09T22:00:00Z", 
-        "kind": "besteffort"
+        "created": "2013-12-18T21:29:10.104Z", 
+        "amount": 0.1848, 
+        "object": 113, 
+        "account": 16, 
+        "state": "invoiced", 
+        "coreHours": 2.64, 
+        "invoice": 77, 
+        "date": "2013-12-14T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59030, 
+    "pk": 60830, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.771Z", 
+        "updated": "2013-12-18T21:29:30.576Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.771Z", 
-        "amount": 0.3192, 
-        "object": 95, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 4.56, 
-        "invoice": null, 
-        "date": "2013-12-10T06:00:00Z", 
-        "kind": "besteffort"
+        "created": "2013-12-18T21:29:10.112Z", 
+        "amount": 0.2856, 
+        "object": 113, 
+        "account": 16, 
+        "state": "invoiced", 
+        "coreHours": 4.08, 
+        "invoice": 77, 
+        "date": "2013-12-15T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59031, 
+    "pk": 60831, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.780Z", 
+        "updated": "2013-12-18T21:29:30.592Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.780Z", 
-        "amount": 0.3024, 
-        "object": 95, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 4.32, 
-        "invoice": null, 
-        "date": "2013-12-10T14:00:00Z", 
-        "kind": "besteffort"
+        "created": "2013-12-18T21:29:10.120Z", 
+        "amount": 0.2912, 
+        "object": 113, 
+        "account": 16, 
+        "state": "invoiced", 
+        "coreHours": 4.16, 
+        "invoice": 77, 
+        "date": "2013-12-15T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59032, 
+    "pk": 60832, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.788Z", 
+        "updated": "2013-12-18T21:29:30.609Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.788Z", 
-        "amount": 0.1176, 
-        "object": 95, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 1.68, 
-        "invoice": null, 
-        "date": "2013-12-10T22:00:00Z", 
-        "kind": "besteffort"
+        "created": "2013-12-18T21:29:10.129Z", 
+        "amount": 0.252, 
+        "object": 113, 
+        "account": 16, 
+        "state": "invoiced", 
+        "coreHours": 3.6, 
+        "invoice": 77, 
+        "date": "2013-12-15T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59033, 
+    "pk": 60833, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.796Z", 
+        "updated": "2013-12-18T21:29:10.137Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.796Z", 
-        "amount": 0.308
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:10.137Z", 
+        "amount": 0.14
+        "object": 113
+        "account": 16
         "state": "pending", 
-        "coreHours": 4.4
+        "coreHours": 2.0
         "invoice": null, 
-        "date": "2013-12-11T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59034, 
+    "pk": 60834, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.805Z", 
+        "updated": "2013-12-18T21:29:10.146Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.805Z", 
-        "amount": 0.2408
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:10.146Z", 
+        "amount": 0.14
+        "object": 113
+        "account": 16
         "state": "pending", 
-        "coreHours": 3.44
+        "coreHours": 2.0
         "invoice": null, 
-        "date": "2013-12-11T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59035, 
+    "pk": 60835, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.813Z", 
+        "updated": "2013-12-18T21:29:10.154Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.813Z", 
-        "amount": 0.1344, 
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:10.154Z", 
+        "amount": 0.2184, 
+        "object": 113
+        "account": 16
         "state": "pending", 
-        "coreHours": 1.92, 
+        "coreHours": 3.12, 
         "invoice": null, 
-        "date": "2013-12-11T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59036, 
+    "pk": 60836, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.821Z", 
+        "updated": "2013-12-18T21:29:10.162Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.821Z", 
-        "amount": 0.112
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:10.162Z", 
+        "amount": 0.1904
+        "object": 113
+        "account": 16
         "state": "pending", 
-        "coreHours": 1.6
+        "coreHours": 2.72
         "invoice": null, 
-        "date": "2013-12-12T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59037, 
+    "pk": 60837, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.829Z", 
+        "updated": "2013-12-18T21:29:10.170Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.829Z", 
-        "amount": 0.1792
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:10.170Z", 
+        "amount": 0.1624
+        "object": 113
+        "account": 16
         "state": "pending", 
-        "coreHours": 2.56
+        "coreHours": 2.32
         "invoice": null, 
-        "date": "2013-12-12T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59038, 
+    "pk": 60838, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.838Z", 
+        "updated": "2013-12-18T21:29:10.179Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.838Z", 
-        "amount": 0.1792, 
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:10.179Z", 
+        "amount": 0.252, 
+        "object": 113
+        "account": 16
         "state": "pending", 
-        "coreHours": 2.56, 
+        "coreHours": 3.6, 
         "invoice": null, 
-        "date": "2013-12-12T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59039, 
+    "pk": 60839, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.846Z", 
+        "updated": "2013-12-18T21:29:10.187Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.846Z", 
-        "amount": 0.3192
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:10.187Z", 
+        "amount": 0.1904
+        "object": 113
+        "account": 16
         "state": "pending", 
-        "coreHours": 4.56
+        "coreHours": 2.72
         "invoice": null, 
-        "date": "2013-12-13T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-18T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59040, 
+    "pk": 60840, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:48.854Z", 
+        "updated": "2013-12-18T21:29:10.195Z", 
         "slice": 12, 
-        "created": "2013-12-13T22:19:48.854Z", 
-        "amount": 0.3192
-        "object": 95
-        "account": 13
+        "created": "2013-12-18T21:29:10.195Z", 
+        "amount": 0.224
+        "object": 113
+        "account": 16
         "state": "pending", 
-        "coreHours": 4.56
+        "coreHours": 3.2
         "invoice": null, 
-        "date": "2013-12-13T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-18T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59041, 
+    "pk": 60841, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.076Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:48.886Z", 
-        "amount": 0.3136, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:20.277Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.227Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.48, 
-        "invoice": 54, 
-        "date": "2013-11-13T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-18T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59042, 
+    "pk": 60842, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.117Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:48.896Z", 
-        "amount": 0.2072
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:20.384Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.237Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.96, 
-        "invoice": 54, 
-        "date": "2013-11-14T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-19T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59043, 
+    "pk": 60843, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.158Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:48.904Z", 
-        "amount": 0.2408
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:20.492Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.245Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.44, 
-        "invoice": 54, 
-        "date": "2013-11-14T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-19T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59044, 
+    "pk": 60844, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.200Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:48.912Z", 
-        "amount": 0.2576, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:20.600Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.253Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.68, 
-        "invoice": 54, 
-        "date": "2013-11-14T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-19T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59045, 
+    "pk": 60845, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.241Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:48.921Z", 
-        "amount": 0.2632
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:20.707Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.262Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.76, 
-        "invoice": 54, 
-        "date": "2013-11-15T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-20T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59046, 
+    "pk": 60846, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.283Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:48.929Z", 
-        "amount": 0.2352
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:20.815Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.270Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 54, 
-        "date": "2013-11-15T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-20T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59047, 
+    "pk": 60847, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.324Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:48.937Z", 
-        "amount": 0.2072
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:20.923Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.278Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.96, 
-        "invoice": 54, 
-        "date": "2013-11-15T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-20T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59048, 
+    "pk": 60848, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.366Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:48.945Z", 
-        "amount": 0.2296, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:21.031Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.286Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.28, 
-        "invoice": 54, 
-        "date": "2013-11-16T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-21T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59049, 
+    "pk": 60849, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.407Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:48.954Z", 
-        "amount": 0.1792
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:21.138Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.295Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.56, 
-        "invoice": 54, 
-        "date": "2013-11-16T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-21T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59050, 
+    "pk": 60850, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.448Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:48.962Z", 
-        "amount": 0.2296, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:21.246Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.303Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.28, 
-        "invoice": 54, 
-        "date": "2013-11-16T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-21T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59051, 
+    "pk": 60851, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.490Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:48.970Z", 
-        "amount": 0.3192
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:21.354Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.311Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.56, 
-        "invoice": 54, 
-        "date": "2013-11-17T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-22T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59052, 
+    "pk": 60852, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.531Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:48.978Z", 
-        "amount": 0.2128
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:21.461Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.319Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.04, 
-        "invoice": 54, 
-        "date": "2013-11-17T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-22T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59053, 
+    "pk": 60853, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.584Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:48.987Z", 
-        "amount": 0.3024
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:21.569Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.328Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.32, 
-        "invoice": 54, 
-        "date": "2013-11-17T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-22T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59054, 
+    "pk": 60854, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.647Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:48.995Z", 
-        "amount": 0.2408
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:21.677Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.336Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.44, 
-        "invoice": 55, 
-        "date": "2013-11-18T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-23T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59055, 
+    "pk": 60855, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.689Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.003Z", 
-        "amount": 0.3024
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:21.784Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.344Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.32, 
-        "invoice": 55, 
-        "date": "2013-11-18T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-23T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59056, 
+    "pk": 60856, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.730Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.012Z", 
-        "amount": 0.224
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:21.892Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.352Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 55, 
-        "date": "2013-11-18T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-23T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59057, 
+    "pk": 60857, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.771Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.020Z", 
-        "amount": 0.2408
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:22Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.361Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.44, 
-        "invoice": 55, 
-        "date": "2013-11-19T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-24T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59058, 
+    "pk": 60858, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.813Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.028Z", 
-        "amount": 0.196, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:22.107Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.369Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 55, 
-        "date": "2013-11-19T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-24T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59059, 
+    "pk": 60859, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.854Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.036Z", 
-        "amount": 0.2968
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:22.215Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.377Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.24, 
-        "invoice": 55, 
-        "date": "2013-11-19T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-24T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59060, 
+    "pk": 60860, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.896Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.045Z", 
-        "amount": 0.2464
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:22.331Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.386Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 55, 
-        "date": "2013-11-20T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-25T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59061, 
+    "pk": 60861, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.937Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.053Z", 
-        "amount": 0.252
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:22.439Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.394Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.6, 
-        "invoice": 55, 
-        "date": "2013-11-20T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-25T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59062, 
+    "pk": 60862, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.979Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.061Z", 
-        "amount": 0.336, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:22.559Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.402Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.8, 
-        "invoice": 55, 
-        "date": "2013-11-20T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-25T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59063, 
+    "pk": 60863, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.020Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.070Z", 
-        "amount": 0.28
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:22.696Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.410Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.0, 
-        "invoice": 55, 
-        "date": "2013-11-21T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-26T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59064, 
+    "pk": 60864, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.061Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.078Z", 
-        "amount": 0.3192
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:22.803Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.419Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.56, 
-        "invoice": 55, 
-        "date": "2013-11-21T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-26T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59065, 
+    "pk": 60865, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.103Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.086Z", 
-        "amount": 0.1904
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:22.911Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.427Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.72, 
-        "invoice": 55, 
-        "date": "2013-11-21T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-26T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59066, 
+    "pk": 60866, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.144Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.094Z", 
-        "amount": 0.2016, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:23.019Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.435Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.88, 
-        "invoice": 55, 
-        "date": "2013-11-22T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-27T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59067, 
+    "pk": 60867, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.186Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.103Z", 
-        "amount": 0.1232
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:23.126Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.444Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.76, 
-        "invoice": 55, 
-        "date": "2013-11-22T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-27T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59068, 
+    "pk": 60868, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.227Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.111Z", 
-        "amount": 0.1176, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:23.234Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.452Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 55, 
-        "date": "2013-11-22T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-27T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59069, 
+    "pk": 60869, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.268Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.119Z", 
-        "amount": 0.308
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:23.342Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.460Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 55, 
-        "date": "2013-11-23T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-28T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59070, 
+    "pk": 60870, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.310Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.127Z", 
-        "amount": 0.2856, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:23.449Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.468Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.08, 
-        "invoice": 55, 
-        "date": "2013-11-23T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-28T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59071, 
+    "pk": 60871, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.351Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.136Z", 
-        "amount": 0.3248
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:23.557Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.477Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.64, 
-        "invoice": 55, 
-        "date": "2013-11-23T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-28T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59072, 
+    "pk": 60872, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.393Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.144Z", 
-        "amount": 0.2016, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:23.665Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.485Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.88, 
-        "invoice": 55, 
-        "date": "2013-11-24T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-29T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59073, 
+    "pk": 60873, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.434Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.152Z", 
-        "amount": 0.28
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:23.773Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.493Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.0, 
-        "invoice": 55, 
-        "date": "2013-11-24T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-29T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59074, 
+    "pk": 60874, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.476Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.161Z", 
-        "amount": 0.252
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:23.880Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.502Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.6, 
-        "invoice": 55, 
-        "date": "2013-11-24T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-29T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59075, 
+    "pk": 60875, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.525Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.169Z", 
-        "amount": 0.2352
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:23.988Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.510Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 56, 
-        "date": "2013-11-25T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-30T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59076, 
+    "pk": 60876, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.567Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.177Z", 
-        "amount": 0.1848
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:24.096Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.518Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.64, 
-        "invoice": 56, 
-        "date": "2013-11-25T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-30T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59077, 
+    "pk": 60877, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.608Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.186Z", 
-        "amount": 0.2632
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:24.203Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.526Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.76, 
-        "invoice": 56, 
-        "date": "2013-11-25T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-30T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59078, 
+    "pk": 60878, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.650Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.194Z", 
-        "amount": 0.1232
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:24.311Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.535Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.76, 
-        "invoice": 56, 
-        "date": "2013-11-26T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-12-01T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59079, 
+    "pk": 60879, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.693Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.202Z", 
-        "amount": 0.112
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:24.419Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.543Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.6, 
-        "invoice": 56, 
-        "date": "2013-11-26T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-12-01T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59080, 
+    "pk": 60880, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.734Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.210Z", 
-        "amount": 0.3304
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:24.526Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.551Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.72, 
-        "invoice": 56, 
-        "date": "2013-11-26T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-12-01T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59081, 
+    "pk": 60881, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.775Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.219Z", 
-        "amount": 0.2016, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:24.642Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.560Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.88, 
-        "invoice": 56, 
-        "date": "2013-11-27T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-02T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59082, 
+    "pk": 60882, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.817Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.227Z", 
-        "amount": 0.112
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:24.750Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.568Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.6, 
-        "invoice": 56, 
-        "date": "2013-11-27T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-02T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59083, 
+    "pk": 60883, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.858Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.235Z", 
-        "amount": 0.196, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:24.858Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.576Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 56, 
-        "date": "2013-11-27T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-02T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59084, 
+    "pk": 60884, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.900Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.243Z", 
-        "amount": 0.308
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:24.965Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.584Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 56, 
-        "date": "2013-11-28T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-03T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59085, 
+    "pk": 60885, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.941Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.252Z", 
-        "amount": 0.1848
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:25.073Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.593Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.64, 
-        "invoice": 56, 
-        "date": "2013-11-28T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-03T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59086, 
+    "pk": 60886, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.983Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.260Z", 
-        "amount": 0.2016, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:25.181Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.601Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.88, 
-        "invoice": 56, 
-        "date": "2013-11-28T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-03T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59087, 
+    "pk": 60887, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.024Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.268Z", 
-        "amount": 0.2128
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:25.289Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.609Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.04, 
-        "invoice": 56, 
-        "date": "2013-11-29T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-04T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59088, 
+    "pk": 60888, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.065Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.277Z", 
-        "amount": 0.2072
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:25.396Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.618Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.96, 
-        "invoice": 56, 
-        "date": "2013-11-29T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-04T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59089, 
+    "pk": 60889, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.107Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.285Z", 
-        "amount": 0.2408
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:25.504Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.626Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.44, 
-        "invoice": 56, 
-        "date": "2013-11-29T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-04T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59090, 
+    "pk": 60890, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.140Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.293Z", 
-        "amount": 0.2072
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:25.612Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.634Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.96, 
-        "invoice": 56, 
-        "date": "2013-11-30T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-05T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59091, 
+    "pk": 60891, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.181Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.302Z", 
-        "amount": 0.2632
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:25.719Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.643Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.76, 
-        "invoice": 56, 
-        "date": "2013-11-30T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-05T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59092, 
+    "pk": 60892, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.223Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.310Z", 
-        "amount": 0.2352
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:25.827Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.651Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 56, 
-        "date": "2013-11-30T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-05T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59093, 
+    "pk": 60893, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.264Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.318Z", 
-        "amount": 0.3024
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:25.935Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.659Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.32, 
-        "invoice": 56, 
-        "date": "2013-12-01T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-06T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59094, 
+    "pk": 60894, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.306Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.326Z", 
-        "amount": 0.2688
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:26.042Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.668Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.84, 
-        "invoice": 56, 
-        "date": "2013-12-01T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-06T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59095, 
+    "pk": 60895, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.347Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.335Z", 
-        "amount": 0.2744
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:26.150Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.676Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.92, 
-        "invoice": 56, 
-        "date": "2013-12-01T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-06T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59096, 
+    "pk": 60896, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.397Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.343Z", 
-        "amount": 0.1904
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:26.258Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.684Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.72, 
-        "invoice": 57, 
-        "date": "2013-12-02T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-07T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59097, 
+    "pk": 60897, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.438Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.351Z", 
-        "amount": 0.112
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:26.365Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.692Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.6, 
-        "invoice": 57, 
-        "date": "2013-12-02T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-07T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59098, 
+    "pk": 60898, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.479Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.360Z", 
-        "amount": 0.2576, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:26.473Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.701Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.68, 
-        "invoice": 57, 
-        "date": "2013-12-02T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-07T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59099, 
+    "pk": 60899, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.521Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.368Z", 
-        "amount": 0.1344
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:26.581Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.709Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.92, 
-        "invoice": 57, 
-        "date": "2013-12-03T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-08T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59100, 
+    "pk": 60900, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.562Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.376Z", 
-        "amount": 0.1568
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:26.689Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.717Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.24, 
-        "invoice": 57, 
-        "date": "2013-12-03T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-08T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59101, 
+    "pk": 60901, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.604Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.384Z", 
-        "amount": 0.196, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:26.796Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.725Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 57, 
-        "date": "2013-12-03T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-08T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59102, 
+    "pk": 60902, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.645Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.393Z", 
-        "amount": 0.28
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:26.912Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.734Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.0, 
-        "invoice": 57, 
-        "date": "2013-12-04T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-09T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59103, 
+    "pk": 60903, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.687Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.401Z", 
-        "amount": 0.2072
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:27.020Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.742Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.96, 
-        "invoice": 57, 
-        "date": "2013-12-04T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-09T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59104, 
+    "pk": 60904, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.728Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.409Z", 
-        "amount": 0.3136, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:27.127Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.750Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.48, 
-        "invoice": 57, 
-        "date": "2013-12-04T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-09T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59105, 
+    "pk": 60905, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.769Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.417Z", 
-        "amount": 0.1456, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:27.235Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.759Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.08, 
-        "invoice": 57, 
-        "date": "2013-12-05T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-10T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59106, 
+    "pk": 60906, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.811Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.426Z", 
-        "amount": 0.1736, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:27.343Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.767Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.48, 
-        "invoice": 57, 
-        "date": "2013-12-05T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-10T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59107, 
+    "pk": 60907, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.852Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.434Z", 
-        "amount": 0.1176, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:27.451Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.775Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 57, 
-        "date": "2013-12-05T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-10T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59108, 
+    "pk": 60908, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.894Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.442Z", 
-        "amount": 0.28
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:27.558Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.783Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.0, 
-        "invoice": 57, 
-        "date": "2013-12-06T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-11T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59109, 
+    "pk": 60909, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.935Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.451Z", 
-        "amount": 0.3192
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:27.724Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.792Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.56, 
-        "invoice": 57, 
-        "date": "2013-12-06T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-11T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59110, 
+    "pk": 60910, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.977Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.459Z", 
-        "amount": 0.3248
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:27.832Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.800Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.64, 
-        "invoice": 57, 
-        "date": "2013-12-06T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-11T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59111, 
+    "pk": 60911, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.018Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.467Z", 
-        "amount": 0.1288
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:27.939Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.808Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.84, 
-        "invoice": 57, 
-        "date": "2013-12-07T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-12T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59112, 
+    "pk": 60912, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.059Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.475Z", 
-        "amount": 0.308
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:28.047Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.816Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 57, 
-        "date": "2013-12-07T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-12T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59113, 
+    "pk": 60913, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.101Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.484Z", 
-        "amount": 0.1736, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:28.155Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.825Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.48, 
-        "invoice": 57, 
-        "date": "2013-12-07T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-12T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59114, 
+    "pk": 60914, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.142Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.492Z", 
-        "amount": 0.112
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:28.262Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.833Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.6, 
-        "invoice": 57, 
-        "date": "2013-12-08T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-13T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59115, 
+    "pk": 60915, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.184Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.500Z", 
-        "amount": 0.3304
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:28.370Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.841Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.72, 
-        "invoice": 57, 
-        "date": "2013-12-08T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-13T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59116, 
+    "pk": 60916, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.225Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.509Z", 
-        "amount": 0.2072
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:28.478Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.850Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.96, 
-        "invoice": 57, 
-        "date": "2013-12-08T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-13T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59117, 
+    "pk": 60917, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:49.517Z", 
-        "slice": 14, 
-        "created": "2013-12-13T22:19:49.517Z", 
-        "amount": 0.196, 
-        "object": 96, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 2.8, 
-        "invoice": null, 
-        "date": "2013-12-09T06:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.585Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:29:10.858Z", 
+        "amount": 0.56, 
+        "object": 114, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-14T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59118, 
+    "pk": 60918, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:49.525Z", 
-        "slice": 14, 
-        "created": "2013-12-13T22:19:49.525Z", 
-        "amount": 0.2408, 
-        "object": 96, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 3.44, 
-        "invoice": null, 
-        "date": "2013-12-09T14:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.693Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:29:10.866Z", 
+        "amount": 0.56, 
+        "object": 114, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-14T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59119, 
+    "pk": 60919, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:49.534Z", 
-        "slice": 14, 
-        "created": "2013-12-13T22:19:49.533Z", 
-        "amount": 0.1512, 
-        "object": 96, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 2.16, 
-        "invoice": null, 
-        "date": "2013-12-09T22:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.801Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:29:10.874Z", 
+        "amount": 0.56, 
+        "object": 114, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-14T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59120, 
+    "pk": 60920, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:49.542Z", 
-        "slice": 14, 
-        "created": "2013-12-13T22:19:49.542Z", 
-        "amount": 0.2576, 
-        "object": 96, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 3.68, 
-        "invoice": null, 
-        "date": "2013-12-10T06:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.909Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:29:10.883Z", 
+        "amount": 0.56, 
+        "object": 114, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-15T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59121, 
+    "pk": 60921, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:49.550Z", 
-        "slice": 14, 
-        "created": "2013-12-13T22:19:49.550Z", 
-        "amount": 0.2912, 
-        "object": 96, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 4.16, 
-        "invoice": null, 
-        "date": "2013-12-10T14:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:29.016Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:29:10.891Z", 
+        "amount": 0.56, 
+        "object": 114, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-15T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59122, 
+    "pk": 60922, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:49.558Z", 
-        "slice": 14, 
-        "created": "2013-12-13T22:19:49.558Z", 
-        "amount": 0.2856, 
-        "object": 96, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 4.08, 
-        "invoice": null, 
-        "date": "2013-12-10T22:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:29.124Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:29:10.899Z", 
+        "amount": 0.56, 
+        "object": 114, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-15T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59123, 
+    "pk": 60923, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:49.567Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.567Z", 
-        "amount": 0.3136, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:10.908Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.908Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "pending", 
-        "coreHours": 4.48
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-11T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59124, 
+    "pk": 60924, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:49.575Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.575Z", 
-        "amount": 0.1288
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:10.916Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.916Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "pending", 
-        "coreHours": 1.84
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-11T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59125, 
+    "pk": 60925, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:49.583Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.583Z", 
-        "amount": 0.2296, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:10.924Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.924Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "pending", 
-        "coreHours": 3.28
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-11T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59126, 
+    "pk": 60926, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:49.592Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.591Z", 
-        "amount": 0.1512
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:10.932Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.932Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "pending", 
-        "coreHours": 2.16
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-12T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59127, 
+    "pk": 60927, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:49.600Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.600Z", 
-        "amount": 0.2296, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:10.941Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.941Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "pending", 
-        "coreHours": 3.28
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-12T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59128, 
+    "pk": 60928, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:49.608Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.608Z", 
-        "amount": 0.252
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:10.949Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.949Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "pending", 
-        "coreHours": 3.6
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-12T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59129, 
+    "pk": 60929, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:49.616Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.616Z", 
-        "amount": 0.2016, 
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:10.957Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.957Z", 
+        "amount": 0.56, 
+        "object": 114
+        "account": 15
         "state": "pending", 
-        "coreHours": 2.88
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-13T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-18T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59130, 
+    "pk": 60930, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:49.625Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.624Z", 
-        "amount": 0.252
-        "object": 96
-        "account": 12
+        "updated": "2013-12-18T21:29:10.966Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.966Z", 
+        "amount": 0.56
+        "object": 114
+        "account": 15
         "state": "pending", 
-        "coreHours": 3.6
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-13T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-18T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59131, 
+    "pk": 60931, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.067Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.640Z", 
-        "amount": 0.3192
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:20.285Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.981Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.56, 
-        "invoice": 54, 
-        "date": "2013-11-13T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-18T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59132, 
+    "pk": 60932, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.109Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.649Z", 
-        "amount": 0.112
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:20.393Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.990Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.6, 
-        "invoice": 54, 
-        "date": "2013-11-14T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-19T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59133, 
+    "pk": 60933, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.150Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.658Z", 
-        "amount": 0.3136, 
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:20.500Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:10.999Z", 
+        "amount": 0.56, 
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.48, 
-        "invoice": 54, 
-        "date": "2013-11-14T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-19T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59134, 
+    "pk": 60934, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.192Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.666Z", 
-        "amount": 0.2576, 
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:20.608Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.007Z", 
+        "amount": 0.56, 
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.68, 
-        "invoice": 54, 
-        "date": "2013-11-14T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-19T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59135, 
+    "pk": 60935, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.233Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.674Z", 
-        "amount": 0.112
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:20.716Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.015Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.6, 
-        "invoice": 54, 
-        "date": "2013-11-15T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-20T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59136, 
+    "pk": 60936, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.274Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.683Z", 
-        "amount": 0.1848
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:20.823Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.024Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.64, 
-        "invoice": 54, 
-        "date": "2013-11-15T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-20T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59137, 
+    "pk": 60937, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.316Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.691Z", 
-        "amount": 0.2912
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:20.931Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.032Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 54, 
-        "date": "2013-11-15T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-20T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59138, 
+    "pk": 60938, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.357Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.699Z", 
-        "amount": 0.2464
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:21.039Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.040Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 54, 
-        "date": "2013-11-16T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-21T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59139, 
+    "pk": 60939, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.399Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.707Z", 
-        "amount": 0.2968
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:21.147Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.048Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.24, 
-        "invoice": 54, 
-        "date": "2013-11-16T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-21T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59140, 
+    "pk": 60940, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.440Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.716Z", 
-        "amount": 0.1288
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:21.254Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.057Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.84, 
-        "invoice": 54, 
-        "date": "2013-11-16T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-21T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59141, 
+    "pk": 60941, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.481Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.724Z", 
-        "amount": 0.2128
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:21.362Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.065Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.04, 
-        "invoice": 54, 
-        "date": "2013-11-17T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-22T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59142, 
+    "pk": 60942, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.523Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.732Z", 
-        "amount": 0.2464
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:21.470Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.073Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 54, 
-        "date": "2013-11-17T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-22T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59143, 
+    "pk": 60943, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.564Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.740Z", 
-        "amount": 0.1792
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:21.577Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.081Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.56, 
-        "invoice": 54, 
-        "date": "2013-11-17T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-22T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59144, 
+    "pk": 60944, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.639Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.749Z", 
-        "amount": 0.1904
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:21.685Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.090Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.72, 
-        "invoice": 55, 
-        "date": "2013-11-18T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-23T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59145, 
+    "pk": 60945, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.680Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.757Z", 
-        "amount": 0.2408
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:21.793Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.098Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.44, 
-        "invoice": 55, 
-        "date": "2013-11-18T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-23T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59146, 
+    "pk": 60946, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.722Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.765Z", 
-        "amount": 0.2408
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:21.900Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.106Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.44, 
-        "invoice": 55, 
-        "date": "2013-11-18T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-23T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59147, 
+    "pk": 60947, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.763Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.774Z", 
-        "amount": 0.196, 
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:22.008Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.115Z", 
+        "amount": 0.56, 
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 55, 
-        "date": "2013-11-19T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-24T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59148, 
+    "pk": 60948, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.805Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.782Z", 
-        "amount": 0.14
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:22.116Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.123Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.0, 
-        "invoice": 55, 
-        "date": "2013-11-19T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-24T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59149, 
+    "pk": 60949, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.846Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.790Z", 
-        "amount": 0.308
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:22.223Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.131Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 55, 
-        "date": "2013-11-19T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-24T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59150, 
+    "pk": 60950, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.887Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.799Z", 
-        "amount": 0.2352
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:22.339Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.140Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 55, 
-        "date": "2013-11-20T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-25T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59151, 
+    "pk": 60951, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.929Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.807Z", 
-        "amount": 0.1456, 
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:22.447Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.148Z", 
+        "amount": 0.56, 
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.08, 
-        "invoice": 55, 
-        "date": "2013-11-20T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-25T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59152, 
+    "pk": 60952, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.970Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.815Z", 
-        "amount": 0.1568
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:22.596Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.156Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.24, 
-        "invoice": 55, 
-        "date": "2013-11-20T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-25T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59153, 
+    "pk": 60953, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.012Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.823Z", 
-        "amount": 0.2968
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:22.704Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.164Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.24, 
-        "invoice": 55, 
-        "date": "2013-11-21T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-26T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59154, 
+    "pk": 60954, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.053Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.832Z", 
-        "amount": 0.2856, 
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:22.812Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.173Z", 
+        "amount": 0.56, 
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.08, 
-        "invoice": 55, 
-        "date": "2013-11-21T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-26T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59155, 
+    "pk": 60955, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.095Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.840Z", 
-        "amount": 0.2408
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:22.919Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.181Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.44, 
-        "invoice": 55, 
-        "date": "2013-11-21T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-26T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59156, 
+    "pk": 60956, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.136Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.848Z", 
-        "amount": 0.1344
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:23.027Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.189Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.92, 
-        "invoice": 55, 
-        "date": "2013-11-22T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-27T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59157, 
+    "pk": 60957, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.177Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.857Z", 
-        "amount": 0.1736, 
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:23.135Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.197Z", 
+        "amount": 0.56, 
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.48, 
-        "invoice": 55, 
-        "date": "2013-11-22T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-27T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59158, 
+    "pk": 60958, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.219Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.865Z", 
-        "amount": 0.3304
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:23.242Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.206Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.72, 
-        "invoice": 55, 
-        "date": "2013-11-22T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-27T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59159, 
+    "pk": 60959, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.260Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.873Z", 
-        "amount": 0.308
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:23.350Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.214Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 55, 
-        "date": "2013-11-23T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-28T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59160, 
+    "pk": 60960, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.302Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.881Z", 
-        "amount": 0.2856, 
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:23.458Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.222Z", 
+        "amount": 0.56, 
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.08, 
-        "invoice": 55, 
-        "date": "2013-11-23T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-28T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59161, 
+    "pk": 60961, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.343Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.890Z", 
-        "amount": 0.3248
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:23.565Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.231Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.64, 
-        "invoice": 55, 
-        "date": "2013-11-23T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-28T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59162, 
+    "pk": 60962, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.385Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.898Z", 
-        "amount": 0.2464
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:23.673Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.239Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 55, 
-        "date": "2013-11-24T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-29T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59163, 
+    "pk": 60963, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.426Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.906Z", 
-        "amount": 0.2968
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:23.781Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.247Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.24, 
-        "invoice": 55, 
-        "date": "2013-11-24T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-29T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59164, 
+    "pk": 60964, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.467Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.915Z", 
-        "amount": 0.224
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:23.889Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.255Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 55, 
-        "date": "2013-11-24T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-29T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59165, 
+    "pk": 60965, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.517Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.923Z", 
-        "amount": 0.14
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:23.996Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.264Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.0, 
-        "invoice": 56, 
-        "date": "2013-11-25T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-30T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59166, 
+    "pk": 60966, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.558Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.931Z", 
-        "amount": 0.2744
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:24.104Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.272Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.92, 
-        "invoice": 56, 
-        "date": "2013-11-25T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-30T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59167, 
+    "pk": 60967, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.600Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.939Z", 
-        "amount": 0.2352
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:24.212Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.280Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 56, 
-        "date": "2013-11-25T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-30T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59168, 
+    "pk": 60968, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.641Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.948Z", 
-        "amount": 0.28
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:24.319Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.289Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.0, 
-        "invoice": 56, 
-        "date": "2013-11-26T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-12-01T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59169, 
+    "pk": 60969, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.684Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.956Z", 
-        "amount": 0.28
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:24.427Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.297Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.0, 
-        "invoice": 56, 
-        "date": "2013-11-26T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-12-01T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59170, 
+    "pk": 60970, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.726Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.964Z", 
-        "amount": 0.336, 
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:24.535Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.305Z", 
+        "amount": 0.56, 
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.8, 
-        "invoice": 56, 
-        "date": "2013-11-26T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-12-01T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59171, 
+    "pk": 60971, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.767Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.973Z", 
-        "amount": 0.224
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:24.651Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.313Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 56, 
-        "date": "2013-11-27T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-02T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59172, 
+    "pk": 60972, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.809Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.981Z", 
-        "amount": 0.252
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:24.758Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.322Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.6, 
-        "invoice": 56, 
-        "date": "2013-11-27T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-02T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59173, 
+    "pk": 60973, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.850Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.989Z", 
-        "amount": 0.2688
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:24.866Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.330Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.84, 
-        "invoice": 56, 
-        "date": "2013-11-27T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-02T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59174, 
+    "pk": 60974, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.891Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:49.997Z", 
-        "amount": 0.2632
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:24.974Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.338Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.76, 
-        "invoice": 56, 
-        "date": "2013-11-28T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-03T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59175, 
+    "pk": 60975, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.933Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.006Z", 
-        "amount": 0.2912
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:25.081Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.346Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 56, 
-        "date": "2013-11-28T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-03T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59176, 
+    "pk": 60976, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.974Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.014Z", 
-        "amount": 0.1176, 
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:25.189Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.355Z", 
+        "amount": 0.56, 
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 56, 
-        "date": "2013-11-28T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-03T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59177, 
+    "pk": 60977, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.016Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.022Z", 
-        "amount": 0.168
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:25.297Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.363Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.4, 
-        "invoice": 56, 
-        "date": "2013-11-29T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-04T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59178, 
+    "pk": 60978, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.057Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.030Z", 
-        "amount": 0.112
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:25.404Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.371Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.6, 
-        "invoice": 56, 
-        "date": "2013-11-29T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-04T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59179, 
+    "pk": 60979, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.098Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.039Z", 
-        "amount": 0.1848
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:25.512Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.380Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.64, 
-        "invoice": 56, 
-        "date": "2013-11-29T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-04T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59180, 
+    "pk": 60980, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.132Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.047Z", 
-        "amount": 0.2128
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:25.620Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.388Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.04, 
-        "invoice": 56, 
-        "date": "2013-11-30T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-05T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59181, 
+    "pk": 60981, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.173Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.055Z", 
-        "amount": 0.1624
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:25.728Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.396Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.32, 
-        "invoice": 56, 
-        "date": "2013-11-30T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-05T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59182, 
+    "pk": 60982, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.214Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.064Z", 
-        "amount": 0.3248
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:25.835Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.404Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.64, 
-        "invoice": 56, 
-        "date": "2013-11-30T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-05T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59183, 
+    "pk": 60983, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.256Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.072Z", 
-        "amount": 0.1512
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:25.943Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.413Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.16, 
-        "invoice": 56, 
-        "date": "2013-12-01T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-06T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59184, 
+    "pk": 60984, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.297Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.080Z", 
-        "amount": 0.1176, 
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:26.051Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.421Z", 
+        "amount": 0.56, 
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 56, 
-        "date": "2013-12-01T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-06T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59185, 
+    "pk": 60985, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.339Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.088Z", 
-        "amount": 0.224
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:26.158Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.429Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 56, 
-        "date": "2013-12-01T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-06T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59186, 
+    "pk": 60986, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.388Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.097Z", 
-        "amount": 0.2464
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:26.266Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.438Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 57, 
-        "date": "2013-12-02T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-07T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59187, 
+    "pk": 60987, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.430Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.105Z", 
-        "amount": 0.1288
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:26.374Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.446Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.84, 
-        "invoice": 57, 
-        "date": "2013-12-02T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-07T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59188, 
+    "pk": 60988, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.471Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.113Z", 
-        "amount": 0.168
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:26.481Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.454Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.4, 
-        "invoice": 57, 
-        "date": "2013-12-02T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-07T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59189, 
+    "pk": 60989, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.513Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.122Z", 
-        "amount": 0.2856, 
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:26.589Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.463Z", 
+        "amount": 0.56, 
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.08, 
-        "invoice": 57, 
-        "date": "2013-12-03T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-08T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59190, 
+    "pk": 60990, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.554Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.130Z", 
-        "amount": 0.2744
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:26.697Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.471Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.92, 
-        "invoice": 57, 
-        "date": "2013-12-03T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-08T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59191, 
+    "pk": 60991, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.596Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.138Z", 
-        "amount": 0.224
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:26.804Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.479Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 57, 
-        "date": "2013-12-03T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-08T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59192, 
+    "pk": 60992, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.637Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.146Z", 
-        "amount": 0.2072
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:26.920Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.487Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.96, 
-        "invoice": 57, 
-        "date": "2013-12-04T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-09T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59193, 
+    "pk": 60993, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.678Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.155Z", 
-        "amount": 0.2464
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:27.028Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.496Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 57, 
-        "date": "2013-12-04T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-09T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59194, 
+    "pk": 60994, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.720Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.163Z", 
-        "amount": 0.2464
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:27.136Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.504Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 57, 
-        "date": "2013-12-04T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-09T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59195, 
+    "pk": 60995, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.761Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.171Z", 
-        "amount": 0.224
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:27.244Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.512Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 57, 
-        "date": "2013-12-05T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-10T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59196, 
+    "pk": 60996, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.803Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.180Z", 
-        "amount": 0.2576, 
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:27.351Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.521Z", 
+        "amount": 0.56, 
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.68, 
-        "invoice": 57, 
-        "date": "2013-12-05T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-10T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59197, 
+    "pk": 60997, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.844Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.188Z", 
-        "amount": 0.2296, 
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:27.459Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.529Z", 
+        "amount": 0.56, 
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.28, 
-        "invoice": 57, 
-        "date": "2013-12-05T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-10T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59198, 
+    "pk": 60998, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.885Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.196Z", 
-        "amount": 0.1344
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:27.584Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.537Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.92, 
-        "invoice": 57, 
-        "date": "2013-12-06T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-11T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59199, 
+    "pk": 60999, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.927Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.204Z", 
-        "amount": 0.3304
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:27.732Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.545Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.72, 
-        "invoice": 57, 
-        "date": "2013-12-06T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-11T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59200, 
+    "pk": 61000, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.968Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.213Z", 
-        "amount": 0.1232
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:27.840Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.554Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.76, 
-        "invoice": 57, 
-        "date": "2013-12-06T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-11T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59201, 
+    "pk": 61001, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.010Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.221Z", 
-        "amount": 0.224
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:27.948Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.562Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 57, 
-        "date": "2013-12-07T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-12T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59202, 
+    "pk": 61002, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.051Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.229Z", 
-        "amount": 0.2352
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:28.055Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.570Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 57, 
-        "date": "2013-12-07T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-12T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59203, 
+    "pk": 61003, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.093Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.238Z", 
-        "amount": 0.2464
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:28.163Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.579Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 57, 
-        "date": "2013-12-07T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-12T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59204, 
+    "pk": 61004, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.134Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.246Z", 
-        "amount": 0.2912
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:28.271Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.587Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 57, 
-        "date": "2013-12-08T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-13T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59205, 
+    "pk": 61005, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.175Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.254Z", 
-        "amount": 0.2408
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:28.378Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.595Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.44, 
-        "invoice": 57, 
-        "date": "2013-12-08T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-13T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59206, 
+    "pk": 61006, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.217Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.262Z", 
-        "amount": 0.1288
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:28.486Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.603Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.84, 
-        "invoice": 57, 
-        "date": "2013-12-08T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-13T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59207, 
+    "pk": 61007, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:50.271Z", 
-        "slice": 14, 
-        "created": "2013-12-13T22:19:50.271Z", 
-        "amount": 0.2408, 
-        "object": 97, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 3.44, 
-        "invoice": null, 
-        "date": "2013-12-09T06:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.594Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:29:11.612Z", 
+        "amount": 0.56, 
+        "object": 115, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-14T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59208, 
+    "pk": 61008, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:50.279Z", 
-        "slice": 14, 
-        "created": "2013-12-13T22:19:50.279Z", 
-        "amount": 0.1568, 
-        "object": 97, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 2.24, 
-        "invoice": null, 
-        "date": "2013-12-09T14:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.702Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:29:11.620Z", 
+        "amount": 0.56, 
+        "object": 115, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-14T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59209, 
+    "pk": 61009, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:50.287Z", 
-        "slice": 14, 
-        "created": "2013-12-13T22:19:50.287Z", 
-        "amount": 0.1512, 
-        "object": 97, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 2.16, 
-        "invoice": null, 
-        "date": "2013-12-09T22:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.809Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:29:11.628Z", 
+        "amount": 0.56, 
+        "object": 115, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-14T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59210, 
-    "model": "core.charge", 
-    "fields": {
-        "updated": "2013-12-13T22:19:50.296Z", 
-        "slice": 14, 
-        "created": "2013-12-13T22:19:50.296Z", 
-        "amount": 0.3304, 
-        "object": 97, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 4.72, 
-        "invoice": null, 
-        "date": "2013-12-10T06:00:00Z", 
-        "kind": "besteffort"
+    "pk": 61010, 
+    "model": "core.charge", 
+    "fields": {
+        "updated": "2013-12-18T21:29:28.917Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:29:11.637Z", 
+        "amount": 0.56, 
+        "object": 115, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-15T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59211, 
+    "pk": 61011, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:50.304Z", 
-        "slice": 14, 
-        "created": "2013-12-13T22:19:50.304Z", 
-        "amount": 0.1848, 
-        "object": 97, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 2.64, 
-        "invoice": null, 
-        "date": "2013-12-10T14:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:29.024Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:29:11.645Z", 
+        "amount": 0.56, 
+        "object": 115, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-15T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59212, 
+    "pk": 61012, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:50.312Z", 
-        "slice": 14, 
-        "created": "2013-12-13T22:19:50.312Z", 
-        "amount": 0.1232, 
-        "object": 97, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 1.76, 
-        "invoice": null, 
-        "date": "2013-12-10T22:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:29.132Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:29:11.653Z", 
+        "amount": 0.56, 
+        "object": 115, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-15T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59213, 
+    "pk": 61013, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:50.321Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.321Z", 
-        "amount": 0.2744
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:11.662Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.662Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "pending", 
-        "coreHours": 3.92
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-11T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59214, 
+    "pk": 61014, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:50.329Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.329Z", 
-        "amount": 0.1624
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:11.670Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.670Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "pending", 
-        "coreHours": 2.32
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-11T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59215, 
+    "pk": 61015, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:50.337Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.337Z", 
-        "amount": 0.196, 
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:11.678Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.678Z", 
+        "amount": 0.56, 
+        "object": 115
+        "account": 15
         "state": "pending", 
-        "coreHours": 2.8
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-11T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59216, 
+    "pk": 61016, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:50.345Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.345Z", 
-        "amount": 0.2688
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:11.686Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.686Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "pending", 
-        "coreHours": 3.84
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-12T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59217, 
+    "pk": 61017, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:50.354Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.354Z", 
-        "amount": 0.14
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:11.695Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.695Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "pending", 
-        "coreHours": 2.0, 
+        "coreHours": 8.0, 
         "invoice": null, 
-        "date": "2013-12-12T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59218, 
+    "pk": 61018, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:50.362Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.362Z", 
-        "amount": 0.1848
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:11.703Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.703Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "pending", 
-        "coreHours": 2.64
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-12T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59219, 
+    "pk": 61019, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:50.370Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.370Z", 
-        "amount": 0.2408
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:11.711Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.711Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "pending", 
-        "coreHours": 3.44
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-13T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-18T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59220, 
+    "pk": 61020, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:50.379Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.379Z", 
-        "amount": 0.2632
-        "object": 97
-        "account": 12
+        "updated": "2013-12-18T21:29:11.719Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.719Z", 
+        "amount": 0.56
+        "object": 115
+        "account": 15
         "state": "pending", 
-        "coreHours": 3.76
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-13T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-18T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59221, 
+    "pk": 61021, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.059Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.393Z", 
-        "amount": 0.1344
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:20.293Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.734Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.92, 
-        "invoice": 54, 
-        "date": "2013-11-13T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-18T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59222, 
+    "pk": 61022, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.100Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.403Z", 
-        "amount": 0.2408
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:20.401Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.744Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.44, 
-        "invoice": 54, 
-        "date": "2013-11-14T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-19T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59223, 
+    "pk": 61023, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.142Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.412Z", 
-        "amount": 0.28
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:20.509Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.753Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.0, 
-        "invoice": 54, 
-        "date": "2013-11-14T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-19T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59224, 
+    "pk": 61024, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.183Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.420Z", 
-        "amount": 0.3248
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:20.616Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.761Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.64, 
-        "invoice": 54, 
-        "date": "2013-11-14T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-19T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59225, 
+    "pk": 61025, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.225Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.428Z", 
-        "amount": 0.2464
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:20.724Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.769Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 54, 
-        "date": "2013-11-15T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-20T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59226, 
+    "pk": 61026, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.266Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.436Z", 
-        "amount": 0.224
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:20.832Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.777Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 54, 
-        "date": "2013-11-15T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-20T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59227, 
+    "pk": 61027, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.307Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.445Z", 
-        "amount": 0.2912
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:20.939Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.786Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 54, 
-        "date": "2013-11-15T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-20T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59228, 
+    "pk": 61028, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.349Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.453Z", 
-        "amount": 0.2912
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:21.047Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.794Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 54, 
-        "date": "2013-11-16T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-21T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59229, 
+    "pk": 61029, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.390Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.464Z", 
-        "amount": 0.2016, 
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:21.155Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.802Z", 
+        "amount": 0.56, 
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.88, 
-        "invoice": 54, 
-        "date": "2013-11-16T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-21T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59230, 
+    "pk": 61030, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.432Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.470Z", 
-        "amount": 0.196, 
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:21.262Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.810Z", 
+        "amount": 0.56, 
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 54, 
-        "date": "2013-11-16T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-21T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59231, 
+    "pk": 61031, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.473Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.478Z", 
-        "amount": 0.2128
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:21.370Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.819Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.04, 
-        "invoice": 54, 
-        "date": "2013-11-17T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-22T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59232, 
+    "pk": 61032, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.515Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.486Z", 
-        "amount": 0.3304
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:21.478Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.827Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.72, 
-        "invoice": 54, 
-        "date": "2013-11-17T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-22T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59233, 
+    "pk": 61033, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.556Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.494Z", 
-        "amount": 0.3304
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:21.586Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.835Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.72, 
-        "invoice": 54, 
-        "date": "2013-11-17T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-22T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59234, 
+    "pk": 61034, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.631Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.503Z", 
-        "amount": 0.252
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:21.693Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.844Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.6, 
-        "invoice": 55, 
-        "date": "2013-11-18T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-23T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59235, 
+    "pk": 61035, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.672Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.511Z", 
-        "amount": 0.308
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:21.801Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.852Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 55, 
-        "date": "2013-11-18T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-23T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59236, 
+    "pk": 61036, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.713Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.519Z", 
-        "amount": 0.3136, 
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:21.909Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.860Z", 
+        "amount": 0.56, 
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.48, 
-        "invoice": 55, 
-        "date": "2013-11-18T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-23T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59237, 
+    "pk": 61037, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.755Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.528Z", 
-        "amount": 0.2464
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:22.016Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.868Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 55, 
-        "date": "2013-11-19T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-24T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59238, 
+    "pk": 61038, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.796Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.536Z", 
-        "amount": 0.2352
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:22.124Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.877Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 55, 
-        "date": "2013-11-19T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-24T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59239, 
+    "pk": 61039, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.838Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.559Z", 
-        "amount": 0.2072
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:22.232Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.885Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.96, 
-        "invoice": 55, 
-        "date": "2013-11-19T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 69, 
+        "date": "2013-11-24T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59240, 
+    "pk": 61040, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.879Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.577Z", 
-        "amount": 0.252
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:22.348Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.893Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.6, 
-        "invoice": 55, 
-        "date": "2013-11-20T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-25T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59241, 
+    "pk": 61041, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.921Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.586Z", 
-        "amount": 0.1904
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:22.455Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.902Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.72, 
-        "invoice": 55, 
-        "date": "2013-11-20T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-25T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59242, 
+    "pk": 61042, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.962Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.594Z", 
-        "amount": 0.3024
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:22.604Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.910Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.32, 
-        "invoice": 55, 
-        "date": "2013-11-20T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-25T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59243, 
+    "pk": 61043, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.003Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.602Z", 
-        "amount": 0.1176, 
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:22.712Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.918Z", 
+        "amount": 0.56, 
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 55, 
-        "date": "2013-11-21T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-26T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59244, 
+    "pk": 61044, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.045Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.610Z", 
-        "amount": 0.2296, 
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:22.820Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.927Z", 
+        "amount": 0.56, 
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.28, 
-        "invoice": 55, 
-        "date": "2013-11-21T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-26T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59245, 
+    "pk": 61045, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.086Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.619Z", 
-        "amount": 0.2688
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:22.928Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.935Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.84, 
-        "invoice": 55, 
-        "date": "2013-11-21T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-26T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59246, 
+    "pk": 61046, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.128Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.627Z", 
-        "amount": 0.308
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:23.035Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.943Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 55, 
-        "date": "2013-11-22T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-27T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59247, 
+    "pk": 61047, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.169Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.635Z", 
-        "amount": 0.196, 
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:23.143Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.951Z", 
+        "amount": 0.56, 
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 55, 
-        "date": "2013-11-22T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-27T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59248, 
+    "pk": 61048, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.210Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.643Z", 
-        "amount": 0.2296, 
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:23.251Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.960Z", 
+        "amount": 0.56, 
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.28, 
-        "invoice": 55, 
-        "date": "2013-11-22T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-27T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59249, 
+    "pk": 61049, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.252Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.652Z", 
-        "amount": 0.3192
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:23.358Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.968Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.56, 
-        "invoice": 55, 
-        "date": "2013-11-23T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-28T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59250, 
+    "pk": 61050, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.293Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.660Z", 
-        "amount": 0.2352
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:23.466Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.976Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 55, 
-        "date": "2013-11-23T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-28T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59251, 
+    "pk": 61051, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.335Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.668Z", 
-        "amount": 0.168
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:23.574Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.984Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.4, 
-        "invoice": 55, 
-        "date": "2013-11-23T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-28T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59252, 
+    "pk": 61052, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.376Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.677Z", 
-        "amount": 0.3024
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:23.681Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:11.993Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.32, 
-        "invoice": 55, 
-        "date": "2013-11-24T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-29T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59253, 
+    "pk": 61053, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.418Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.685Z", 
-        "amount": 0.2352
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:23.789Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.001Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 55, 
-        "date": "2013-11-24T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-29T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59254, 
+    "pk": 61054, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.459Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.693Z", 
-        "amount": 0.1568
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:23.897Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.009Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.24, 
-        "invoice": 55, 
-        "date": "2013-11-24T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-29T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59255, 
+    "pk": 61055, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.509Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.702Z", 
-        "amount": 0.3304
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:24.004Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.018Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.72, 
-        "invoice": 56, 
-        "date": "2013-11-25T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-30T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59256, 
+    "pk": 61056, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.550Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.710Z", 
-        "amount": 0.1736, 
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:24.112Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.026Z", 
+        "amount": 0.56, 
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.48, 
-        "invoice": 56, 
-        "date": "2013-11-25T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-30T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59257, 
+    "pk": 61057, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.592Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.718Z", 
-        "amount": 0.168
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:24.220Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.034Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.4, 
-        "invoice": 56, 
-        "date": "2013-11-25T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-11-30T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59258, 
+    "pk": 61058, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.633Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.726Z", 
-        "amount": 0.14
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:24.328Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.042Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.0, 
-        "invoice": 56, 
-        "date": "2013-11-26T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-12-01T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59259, 
+    "pk": 61059, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.676Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.735Z", 
-        "amount": 0.1176, 
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:24.435Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.051Z", 
+        "amount": 0.56, 
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 56, 
-        "date": "2013-11-26T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-12-01T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59260, 
+    "pk": 61060, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.717Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.743Z", 
-        "amount": 0.2688
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:24.543Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.059Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.84, 
-        "invoice": 56, 
-        "date": "2013-11-26T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 70, 
+        "date": "2013-12-01T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59261, 
+    "pk": 61061, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.759Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.751Z", 
-        "amount": 0.308
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:24.659Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.067Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 56, 
-        "date": "2013-11-27T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-02T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59262, 
+    "pk": 61062, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.800Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.759Z", 
-        "amount": 0.196, 
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:24.767Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.076Z", 
+        "amount": 0.56, 
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 56, 
-        "date": "2013-11-27T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-02T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59263, 
+    "pk": 61063, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.842Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.768Z", 
-        "amount": 0.196, 
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:24.874Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.084Z", 
+        "amount": 0.56, 
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 56, 
-        "date": "2013-11-27T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-02T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59264, 
+    "pk": 61064, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.883Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.776Z", 
-        "amount": 0.2464
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:24.982Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.092Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 56, 
-        "date": "2013-11-28T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-03T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59265, 
+    "pk": 61065, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.925Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.784Z", 
-        "amount": 0.2968
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:25.090Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.100Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.24, 
-        "invoice": 56, 
-        "date": "2013-11-28T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-03T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59266, 
+    "pk": 61066, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.966Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.793Z", 
-        "amount": 0.1792
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:25.197Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.109Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.56, 
-        "invoice": 56, 
-        "date": "2013-11-28T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-03T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59267, 
+    "pk": 61067, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.007Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.801Z", 
-        "amount": 0.3248
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:25.305Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.117Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.64, 
-        "invoice": 56, 
-        "date": "2013-11-29T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-04T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59268, 
+    "pk": 61068, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.049Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.809Z", 
-        "amount": 0.3192
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:25.413Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.125Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.56, 
-        "invoice": 56, 
-        "date": "2013-11-29T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-04T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59269, 
+    "pk": 61069, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.090Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.818Z", 
-        "amount": 0.1568
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:25.520Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.134Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.24, 
-        "invoice": 56, 
-        "date": "2013-11-29T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-04T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59270, 
+    "pk": 61070, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.123Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.826Z", 
-        "amount": 0.2856, 
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:25.628Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.142Z", 
+        "amount": 0.56, 
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.08, 
-        "invoice": 56, 
-        "date": "2013-11-30T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-05T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59271, 
+    "pk": 61071, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.165Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.834Z", 
-        "amount": 0.3136, 
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:25.736Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.150Z", 
+        "amount": 0.56, 
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.48, 
-        "invoice": 56, 
-        "date": "2013-11-30T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-05T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59272, 
+    "pk": 61072, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.206Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.843Z", 
-        "amount": 0.1904
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:25.844Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.159Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.72, 
-        "invoice": 56, 
-        "date": "2013-11-30T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-05T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59273, 
+    "pk": 61073, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.248Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.851Z", 
-        "amount": 0.1624
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:25.951Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.167Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.32, 
-        "invoice": 56, 
-        "date": "2013-12-01T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-06T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59274, 
+    "pk": 61074, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.289Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.859Z", 
-        "amount": 0.224
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:26.059Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.175Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 56, 
-        "date": "2013-12-01T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-06T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59275, 
+    "pk": 61075, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.331Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.867Z", 
-        "amount": 0.14
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:26.167Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.183Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.0, 
-        "invoice": 56, 
-        "date": "2013-12-01T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-06T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59276, 
+    "pk": 61076, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.380Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.876Z", 
-        "amount": 0.1456, 
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:26.274Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.192Z", 
+        "amount": 0.56, 
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.08, 
-        "invoice": 57, 
-        "date": "2013-12-02T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-07T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59277, 
+    "pk": 61077, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.422Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.884Z", 
-        "amount": 0.1736, 
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:26.382Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.200Z", 
+        "amount": 0.56, 
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.48, 
-        "invoice": 57, 
-        "date": "2013-12-02T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-07T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59278, 
+    "pk": 61078, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.463Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.892Z", 
-        "amount": 0.2912
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:26.490Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.208Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 57, 
-        "date": "2013-12-02T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-07T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59279, 
+    "pk": 61079, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.504Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.901Z", 
-        "amount": 0.3192
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:26.597Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.217Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.56, 
-        "invoice": 57, 
-        "date": "2013-12-03T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-08T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59280, 
+    "pk": 61080, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.546Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.909Z", 
-        "amount": 0.1792
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:26.705Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.225Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.56, 
-        "invoice": 57, 
-        "date": "2013-12-03T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-08T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59281, 
+    "pk": 61081, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.587Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.917Z", 
-        "amount": 0.1792
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:26.813Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.233Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.56, 
-        "invoice": 57, 
-        "date": "2013-12-03T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 71, 
+        "date": "2013-12-08T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59282, 
+    "pk": 61082, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.629Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.925Z", 
-        "amount": 0.2184
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:26.929Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.242Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.12, 
-        "invoice": 57, 
-        "date": "2013-12-04T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-09T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59283, 
+    "pk": 61083, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.670Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.934Z", 
-        "amount": 0.3024
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:27.036Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.250Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.32, 
-        "invoice": 57, 
-        "date": "2013-12-04T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-09T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59284, 
+    "pk": 61084, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.711Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.942Z", 
-        "amount": 0.112
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:27.144Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.258Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.6, 
-        "invoice": 57, 
-        "date": "2013-12-04T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-09T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59285, 
+    "pk": 61085, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.753Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.950Z", 
-        "amount": 0.14
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:27.252Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.266Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 2.0, 
-        "invoice": 57, 
-        "date": "2013-12-05T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-10T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59286, 
+    "pk": 61086, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.794Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.958Z", 
-        "amount": 0.2464
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:27.359Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.275Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 57, 
-        "date": "2013-12-05T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-10T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59287, 
+    "pk": 61087, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.836Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.967Z", 
-        "amount": 0.1344
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:27.467Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.283Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.92, 
-        "invoice": 57, 
-        "date": "2013-12-05T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-10T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59288, 
+    "pk": 61088, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.877Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.975Z", 
-        "amount": 0.112
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:27.628Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.291Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.6, 
-        "invoice": 57, 
-        "date": "2013-12-06T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-11T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59289, 
+    "pk": 61089, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.919Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.983Z", 
-        "amount": 0.2128
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:27.741Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.299Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.04, 
-        "invoice": 57, 
-        "date": "2013-12-06T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-11T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59290, 
+    "pk": 61090, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.960Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:50.991Z", 
-        "amount": 0.2744
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:27.848Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.308Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.92, 
-        "invoice": 57, 
-        "date": "2013-12-06T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-11T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59291, 
+    "pk": 61091, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.001Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:51.000Z", 
-        "amount": 0.2632
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:27.956Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.316Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.76, 
-        "invoice": 57, 
-        "date": "2013-12-07T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-12T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59292, 
+    "pk": 61092, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.043Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:51.008Z", 
-        "amount": 0.3136, 
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:28.064Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.324Z", 
+        "amount": 0.56, 
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.48, 
-        "invoice": 57, 
-        "date": "2013-12-07T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-12T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59293, 
+    "pk": 61093, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.084Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:51.016Z", 
-        "amount": 0.1232
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:28.171Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.333Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 1.76, 
-        "invoice": 57, 
-        "date": "2013-12-07T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-12T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59294, 
+    "pk": 61094, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.126Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:51.025Z", 
-        "amount": 0.2744
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:28.279Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.341Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.92, 
-        "invoice": 57, 
-        "date": "2013-12-08T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-13T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59295, 
+    "pk": 61095, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.167Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:51.033Z", 
-        "amount": 0.2744
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:28.387Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.349Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 3.92, 
-        "invoice": 57, 
-        "date": "2013-12-08T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-13T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59296, 
+    "pk": 61096, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.209Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:51.041Z", 
-        "amount": 0.3192
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:28.494Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.357Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "invoiced", 
-        "coreHours": 4.56, 
-        "invoice": 57, 
-        "date": "2013-12-08T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-13T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59297, 
+    "pk": 61097, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.049Z", 
-        "slice": 14, 
-        "created": "2013-12-13T22:19:51.049Z", 
-        "amount": 0.28, 
-        "object": 98, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 4.0, 
-        "invoice": null, 
-        "date": "2013-12-09T06:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.602Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:29:12.366Z", 
+        "amount": 0.56, 
+        "object": 116, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-14T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59298, 
+    "pk": 61098, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.058Z", 
-        "slice": 14, 
-        "created": "2013-12-13T22:19:51.058Z", 
-        "amount": 0.1232, 
-        "object": 98, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 1.76, 
-        "invoice": null, 
-        "date": "2013-12-09T14:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.710Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:29:12.374Z", 
+        "amount": 0.56, 
+        "object": 116, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-14T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59299, 
+    "pk": 61099, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.066Z", 
-        "slice": 14, 
-        "created": "2013-12-13T22:19:51.066Z", 
-        "amount": 0.1904, 
-        "object": 98, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 2.72, 
-        "invoice": null, 
-        "date": "2013-12-09T22:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.817Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:29:12.382Z", 
+        "amount": 0.56, 
+        "object": 116, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-14T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59300, 
+    "pk": 61100, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.074Z", 
-        "slice": 14, 
-        "created": "2013-12-13T22:19:51.074Z", 
-        "amount": 0.2408, 
-        "object": 98, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 3.44, 
-        "invoice": null, 
-        "date": "2013-12-10T06:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:28.925Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:29:12.391Z", 
+        "amount": 0.56, 
+        "object": 116, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-15T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59301, 
+    "pk": 61101, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.083Z", 
-        "slice": 14, 
-        "created": "2013-12-13T22:19:51.083Z", 
-        "amount": 0.2352, 
-        "object": 98, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 3.36, 
-        "invoice": null, 
-        "date": "2013-12-10T14:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:29.033Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:29:12.399Z", 
+        "amount": 0.56, 
+        "object": 116, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-15T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59302, 
+    "pk": 61102, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.091Z", 
-        "slice": 14, 
-        "created": "2013-12-13T22:19:51.091Z", 
-        "amount": 0.2968, 
-        "object": 98, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 4.24, 
-        "invoice": null, 
-        "date": "2013-12-10T22:00:00Z", 
-        "kind": "besteffort"
+        "updated": "2013-12-18T21:29:29.141Z", 
+        "slice": 13, 
+        "created": "2013-12-18T21:29:12.407Z", 
+        "amount": 0.56, 
+        "object": 116, 
+        "account": 15, 
+        "state": "invoiced", 
+        "coreHours": 8.0, 
+        "invoice": 72, 
+        "date": "2013-12-15T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59303, 
+    "pk": 61103, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.099Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:51.099Z", 
-        "amount": 0.2576, 
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:12.415Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.415Z", 
+        "amount": 0.56, 
+        "object": 116
+        "account": 15
         "state": "pending", 
-        "coreHours": 3.68
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-11T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59304, 
+    "pk": 61104, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.107Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:51.107Z", 
-        "amount": 0.2184
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:12.424Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.424Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "pending", 
-        "coreHours": 3.12
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-11T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59305, 
+    "pk": 61105, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.116Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:51.116Z", 
-        "amount": 0.1848
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:12.432Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.432Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "pending", 
-        "coreHours": 2.64
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-11T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59306, 
+    "pk": 61106, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.124Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:51.124Z", 
-        "amount": 0.2464
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:12.440Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.440Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "pending", 
-        "coreHours": 3.52
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-12T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59307, 
+    "pk": 61107, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.132Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:51.132Z", 
-        "amount": 0.112
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:12.449Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.448Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "pending", 
-        "coreHours": 1.6
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-12T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59308, 
+    "pk": 61108, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.141Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:51.141Z", 
-        "amount": 0.2632
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:12.457Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.457Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "pending", 
-        "coreHours": 3.76
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-12T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T21:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59309, 
+    "pk": 61109, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.149Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:51.149Z", 
-        "amount": 0.3248
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:12.465Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.465Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "pending", 
-        "coreHours": 4.64
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-13T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-18T05:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59310, 
+    "pk": 61110, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.157Z", 
-        "slice": 14
-        "created": "2013-12-13T22:19:51.157Z", 
-        "amount": 0.1288
-        "object": 98
-        "account": 12
+        "updated": "2013-12-18T21:29:12.473Z", 
+        "slice": 13
+        "created": "2013-12-18T21:29:12.473Z", 
+        "amount": 0.56
+        "object": 116
+        "account": 15
         "state": "pending", 
-        "coreHours": 1.84
+        "coreHours": 8.0
         "invoice": null, 
-        "date": "2013-12-13T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-18T13:00:00Z", 
+        "kind": "reservation", 
+        "enacted": null
     }
 },
 {
-    "pk": 59311, 
+    "pk": 61111, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.432Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.189Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:16.468Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.505Z", 
+        "amount": 0.2856, 
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-13T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.08, 
+        "invoice": 64, 
+        "date": "2013-11-18T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59312, 
+    "pk": 61112, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.523Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.199Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:16.510Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.565Z", 
+        "amount": 0.3136, 
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-14T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.48, 
+        "invoice": 64, 
+        "date": "2013-11-19T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59313, 
+    "pk": 61113, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.614Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.207Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:16.551Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.573Z", 
+        "amount": 0.308
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-14T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.4, 
+        "invoice": 64, 
+        "date": "2013-11-19T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59314, 
+    "pk": 61114, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.706Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.215Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:16.593Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.581Z", 
+        "amount": 0.2072
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-14T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.96, 
+        "invoice": 64, 
+        "date": "2013-11-19T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59315, 
+    "pk": 61115, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.797Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.223Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:16.634Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.589Z", 
+        "amount": 0.2072
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-15T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.96, 
+        "invoice": 64, 
+        "date": "2013-11-20T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59316, 
+    "pk": 61116, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.888Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.232Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:16.675Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.598Z", 
+        "amount": 0.252
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-15T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.6, 
+        "invoice": 64, 
+        "date": "2013-11-20T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59317, 
+    "pk": 61117, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.996Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.240Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:16.717Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.606Z", 
+        "amount": 0.2688
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-15T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.84, 
+        "invoice": 64, 
+        "date": "2013-11-20T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59318, 
+    "pk": 61118, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.087Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.248Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:16.758Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.614Z", 
+        "amount": 0.3136, 
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-16T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.48, 
+        "invoice": 64, 
+        "date": "2013-11-21T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59319, 
+    "pk": 61119, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.178Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.257Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:16.800Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.622Z", 
+        "amount": 0.3248
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-16T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.64, 
+        "invoice": 64, 
+        "date": "2013-11-21T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59320, 
+    "pk": 61120, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.270Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.265Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:16.841Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.631Z", 
+        "amount": 0.2072
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-16T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.96, 
+        "invoice": 64, 
+        "date": "2013-11-21T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59321, 
+    "pk": 61121, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.352Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.273Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:16.883Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.639Z", 
+        "amount": 0.2576, 
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-17T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.68, 
+        "invoice": 64, 
+        "date": "2013-11-22T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59322, 
+    "pk": 61122, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.444Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.281Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:16.924Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.647Z", 
+        "amount": 0.14
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-17T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.0, 
+        "invoice": 64, 
+        "date": "2013-11-22T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59323, 
+    "pk": 61123, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.535Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.290Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:16.966Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.656Z", 
+        "amount": 0.1512
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-17T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.16, 
+        "invoice": 64, 
+        "date": "2013-11-22T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59324, 
+    "pk": 61124, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.634Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.298Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:17.007Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.664Z", 
+        "amount": 0.28
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-18T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.0, 
+        "invoice": 64, 
+        "date": "2013-11-23T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59325, 
+    "pk": 61125, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.737Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.306Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:17.048Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.672Z", 
+        "amount": 0.2408
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-18T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.44, 
+        "invoice": 64, 
+        "date": "2013-11-23T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59326, 
+    "pk": 61126, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.828Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.315Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:17.090Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.680Z", 
+        "amount": 0.308
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-18T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.4, 
+        "invoice": 64, 
+        "date": "2013-11-23T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59327, 
+    "pk": 61127, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.919Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.323Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:17.131Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.689Z", 
+        "amount": 0.2856, 
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-19T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.08, 
+        "invoice": 64, 
+        "date": "2013-11-24T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59328, 
+    "pk": 61128, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.010Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.331Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:17.173Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.697Z", 
+        "amount": 0.1232
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-19T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.76, 
+        "invoice": 64, 
+        "date": "2013-11-24T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59329, 
+    "pk": 61129, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.101Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.340Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:17.220Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.705Z", 
+        "amount": 0.1848
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-19T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.64, 
+        "invoice": 64, 
+        "date": "2013-11-24T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59330, 
+    "pk": 61130, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.192Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.348Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:17.289Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.714Z", 
+        "amount": 0.2016, 
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-20T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.88, 
+        "invoice": 65, 
+        "date": "2013-11-25T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59331, 
+    "pk": 61131, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.284Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.356Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:17.344Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.722Z", 
+        "amount": 0.2296, 
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-20T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.28, 
+        "invoice": 65, 
+        "date": "2013-11-25T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59332, 
+    "pk": 61132, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.377Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.364Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:17.385Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.730Z", 
+        "amount": 0.2968
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-20T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.24, 
+        "invoice": 65, 
+        "date": "2013-11-25T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59333, 
+    "pk": 61133, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.468Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.373Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:17.427Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.739Z", 
+        "amount": 0.1736, 
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-21T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.48, 
+        "invoice": 65, 
+        "date": "2013-11-26T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59334, 
+    "pk": 61134, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.560Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.381Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:17.468Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.747Z", 
+        "amount": 0.336, 
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-21T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.8, 
+        "invoice": 65, 
+        "date": "2013-11-26T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59335, 
+    "pk": 61135, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.667Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.389Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:17.510Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.755Z", 
+        "amount": 0.308
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-21T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.4, 
+        "invoice": 65, 
+        "date": "2013-11-26T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59336, 
+    "pk": 61136, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.758Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.398Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:17.626Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.763Z", 
+        "amount": 0.2744
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-22T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.92, 
+        "invoice": 65, 
+        "date": "2013-11-27T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59337, 
+    "pk": 61137, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.850Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.406Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:17.667Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.772Z", 
+        "amount": 0.2016, 
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-22T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.88, 
+        "invoice": 65, 
+        "date": "2013-11-27T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59338, 
+    "pk": 61138, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.965Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.414Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:17.709Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.780Z", 
+        "amount": 0.1512
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-22T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.16, 
+        "invoice": 65, 
+        "date": "2013-11-27T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59339, 
+    "pk": 61139, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.057Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.422Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:17.750Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.788Z", 
+        "amount": 0.2912
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-23T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.16, 
+        "invoice": 65, 
+        "date": "2013-11-28T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59340, 
+    "pk": 61140, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.148Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.431Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:17.791Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.797Z", 
+        "amount": 0.3248
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-23T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.64, 
+        "invoice": 65, 
+        "date": "2013-11-28T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59341, 
+    "pk": 61141, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.273Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.439Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:17.833Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.805Z", 
+        "amount": 0.3192
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-23T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.56, 
+        "invoice": 65, 
+        "date": "2013-11-28T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59342, 
+    "pk": 61142, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.537Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.447Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:17.874Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.813Z", 
+        "amount": 0.1736, 
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-24T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.48, 
+        "invoice": 65, 
+        "date": "2013-11-29T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59343, 
+    "pk": 61143, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.777Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.455Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:17.916Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.821Z", 
+        "amount": 0.2632
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-24T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.76, 
+        "invoice": 65, 
+        "date": "2013-11-29T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59344, 
+    "pk": 61144, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.868Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.464Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:17.957Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.830Z", 
+        "amount": 0.2464
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-24T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.52, 
+        "invoice": 65, 
+        "date": "2013-11-29T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59345, 
+    "pk": 61145, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.968Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.472Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:17.999Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.838Z", 
+        "amount": 0.3192
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-25T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.56, 
+        "invoice": 65, 
+        "date": "2013-11-30T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59346, 
+    "pk": 61146, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.059Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.480Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.040Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.846Z", 
+        "amount": 0.28
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-25T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.0, 
+        "invoice": 65, 
+        "date": "2013-11-30T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59347, 
+    "pk": 61147, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.150Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.489Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.081Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.854Z", 
+        "amount": 0.1288
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-25T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.84, 
+        "invoice": 65, 
+        "date": "2013-11-30T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59348, 
+    "pk": 61148, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.246Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.497Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.123Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.863Z", 
+        "amount": 0.1568
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-26T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.24, 
+        "invoice": 65, 
+        "date": "2013-12-01T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59349, 
+    "pk": 61149, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.337Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.505Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.164Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.871Z", 
+        "amount": 0.1904
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-26T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.72, 
+        "invoice": 65, 
+        "date": "2013-12-01T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59350, 
+    "pk": 61150, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.428Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.513Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.206Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.879Z", 
+        "amount": 0.3136, 
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-26T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.48, 
+        "invoice": 65, 
+        "date": "2013-12-01T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59351, 
+    "pk": 61151, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.519Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.522Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.255Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.888Z", 
+        "amount": 0.1456, 
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-27T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.08, 
+        "invoice": 66, 
+        "date": "2013-12-02T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59352, 
+    "pk": 61152, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.610Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.530Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.297Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.896Z", 
+        "amount": 0.2464
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-27T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.52, 
+        "invoice": 66, 
+        "date": "2013-12-02T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59353, 
+    "pk": 61153, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.701Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.538Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.338Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.904Z", 
+        "amount": 0.2464
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-27T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.52, 
+        "invoice": 66, 
+        "date": "2013-12-02T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59354, 
+    "pk": 61154, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.793Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.546Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.379Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.913Z", 
+        "amount": 0.2016, 
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-28T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.88, 
+        "invoice": 66, 
+        "date": "2013-12-03T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59355, 
+    "pk": 61155, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.884Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.555Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.421Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.921Z", 
+        "amount": 0.1736, 
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-28T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.48, 
+        "invoice": 66, 
+        "date": "2013-12-03T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59356, 
+    "pk": 61156, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.975Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.563Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.462Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.929Z", 
+        "amount": 0.2408
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-28T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.44, 
+        "invoice": 66, 
+        "date": "2013-12-03T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59357, 
+    "pk": 61157, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.066Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.571Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.504Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.937Z", 
+        "amount": 0.2912
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-29T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.16, 
+        "invoice": 66, 
+        "date": "2013-12-04T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59358, 
+    "pk": 61158, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.157Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.580Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.545Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.946Z", 
+        "amount": 0.1288
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-29T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.84, 
+        "invoice": 66, 
+        "date": "2013-12-04T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59359, 
+    "pk": 61159, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.248Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.588Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.587Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.954Z", 
+        "amount": 0.2632
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-29T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.76, 
+        "invoice": 66, 
+        "date": "2013-12-04T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59360, 
+    "pk": 61160, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.339Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.596Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.628Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.962Z", 
+        "amount": 0.3024
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-30T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.32, 
+        "invoice": 66, 
+        "date": "2013-12-05T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59361, 
+    "pk": 61161, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.432Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.604Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.670Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.970Z", 
+        "amount": 0.2296, 
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-30T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.28, 
+        "invoice": 66, 
+        "date": "2013-12-05T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59362, 
+    "pk": 61162, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.523Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.613Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.711Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.979Z", 
+        "amount": 0.3304
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-30T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.72, 
+        "invoice": 66, 
+        "date": "2013-12-05T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59363, 
+    "pk": 61163, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.614Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.621Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.752Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.987Z", 
+        "amount": 0.1176, 
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-12-01T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.68, 
+        "invoice": 66, 
+        "date": "2013-12-06T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59364, 
+    "pk": 61164, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.705Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.629Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.794Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:12.995Z", 
+        "amount": 0.28
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-12-01T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.0, 
+        "invoice": 66, 
+        "date": "2013-12-06T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59365, 
+    "pk": 61165, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.797Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.638Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.835Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.004Z", 
+        "amount": 0.224
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-12-01T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.2, 
+        "invoice": 66, 
+        "date": "2013-12-06T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59366, 
+    "pk": 61166, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.896Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.646Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.877Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.012Z", 
+        "amount": 0.2688
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-02T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.84, 
+        "invoice": 66, 
+        "date": "2013-12-07T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59367, 
+    "pk": 61167, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.987Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.654Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.918Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.020Z", 
+        "amount": 0.1568
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-02T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.24, 
+        "invoice": 66, 
+        "date": "2013-12-07T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59368, 
+    "pk": 61168, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.078Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.662Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:18.959Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.028Z", 
+        "amount": 0.1624
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-02T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.32, 
+        "invoice": 66, 
+        "date": "2013-12-07T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59369, 
+    "pk": 61169, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.169Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.671Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:19.001Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.037Z", 
+        "amount": 0.2688
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-03T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.84, 
+        "invoice": 66, 
+        "date": "2013-12-08T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59370, 
+    "pk": 61170, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.260Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.679Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:19.042Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.045Z", 
+        "amount": 0.2912
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-03T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.16, 
+        "invoice": 66, 
+        "date": "2013-12-08T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59371, 
+    "pk": 61171, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.352Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.687Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:19.084Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.053Z", 
+        "amount": 0.1344
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-03T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.92, 
+        "invoice": 66, 
+        "date": "2013-12-08T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59372, 
+    "pk": 61172, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.443Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.696Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:19.133Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.062Z", 
+        "amount": 0.196, 
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-04T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.8, 
+        "invoice": 67, 
+        "date": "2013-12-09T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59373, 
+    "pk": 61173, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.534Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.704Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:19.175Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.070Z", 
+        "amount": 0.2184
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-04T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.12, 
+        "invoice": 67, 
+        "date": "2013-12-09T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59374, 
+    "pk": 61174, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.625Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.712Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:19.216Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.078Z", 
+        "amount": 0.3304
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-04T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.72, 
+        "invoice": 67, 
+        "date": "2013-12-09T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59375, 
+    "pk": 61175, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.716Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.720Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:19.258Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.086Z", 
+        "amount": 0.2184
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-05T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.12, 
+        "invoice": 67, 
+        "date": "2013-12-10T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59376, 
+    "pk": 61176, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.807Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.729Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:19.299Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.095Z", 
+        "amount": 0.1176, 
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-05T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.68, 
+        "invoice": 67, 
+        "date": "2013-12-10T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59377, 
+    "pk": 61177, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.898Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.737Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:19.341Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.103Z", 
+        "amount": 0.1624
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-05T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.32, 
+        "invoice": 67, 
+        "date": "2013-12-10T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59378, 
+    "pk": 61178, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.989Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.745Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:19.382Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.111Z", 
+        "amount": 0.2968
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-06T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.24, 
+        "invoice": 67, 
+        "date": "2013-12-11T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59379, 
+    "pk": 61179, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.081Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.754Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:19.423Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.120Z", 
+        "amount": 0.1344
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-06T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.92, 
+        "invoice": 67, 
+        "date": "2013-12-11T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59380, 
+    "pk": 61180, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.178Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.762Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:19.465Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.128Z", 
+        "amount": 0.3136, 
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-06T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.48, 
+        "invoice": 67, 
+        "date": "2013-12-11T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59381, 
+    "pk": 61181, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.269Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.770Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:19.506Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.136Z", 
+        "amount": 0.1344
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-07T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.92, 
+        "invoice": 67, 
+        "date": "2013-12-12T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59382, 
+    "pk": 61182, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.361Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.778Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:19.548Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.153Z", 
+        "amount": 0.112
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-07T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.6, 
+        "invoice": 67, 
+        "date": "2013-12-12T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59383, 
+    "pk": 61183, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.452Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.787Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:19.589Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.161Z", 
+        "amount": 0.1176, 
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-07T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.68, 
+        "invoice": 67, 
+        "date": "2013-12-12T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59384, 
+    "pk": 61184, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.543Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.795Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:19.630Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.170Z", 
+        "amount": 0.1456, 
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-08T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.08, 
+        "invoice": 67, 
+        "date": "2013-12-13T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59385, 
+    "pk": 61185, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.634Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.803Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:19.672Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.178Z", 
+        "amount": 0.308
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-08T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.4, 
+        "invoice": 67, 
+        "date": "2013-12-13T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59386, 
+    "pk": 61186, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.725Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.812Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:19.713Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.186Z", 
+        "amount": 0.28
+        "object": 117
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-08T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.0, 
+        "invoice": 67, 
+        "date": "2013-12-13T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59387, 
+    "pk": 61187, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.820Z", 
-        "slice": 13, 
-        "created": "2013-12-13T22:19:51.820Z", 
-        "amount": 0.56, 
-        "object": 99, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-09T06:00:00Z", 
-        "kind": "reservation"
+        "updated": "2013-12-18T21:29:19.755Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:29:13.195Z", 
+        "amount": 0.336, 
+        "object": 117, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 4.8, 
+        "invoice": 67, 
+        "date": "2013-12-14T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59388, 
+    "pk": 61188, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.828Z", 
-        "slice": 13, 
-        "created": "2013-12-13T22:19:51.828Z", 
-        "amount": 0.56, 
-        "object": 99, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-09T14:00:00Z", 
-        "kind": "reservation"
+        "updated": "2013-12-18T21:29:19.796Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:29:13.203Z", 
+        "amount": 0.1344, 
+        "object": 117, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 1.92, 
+        "invoice": 67, 
+        "date": "2013-12-14T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59389, 
+    "pk": 61189, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.837Z", 
-        "slice": 13, 
-        "created": "2013-12-13T22:19:51.837Z", 
-        "amount": 0.56, 
-        "object": 99, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-09T22:00:00Z", 
-        "kind": "reservation"
+        "updated": "2013-12-18T21:29:19.804Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:29:13.220Z", 
+        "amount": 0.3136, 
+        "object": 117, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 4.48, 
+        "invoice": 67, 
+        "date": "2013-12-14T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59390, 
+    "pk": 61190, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.845Z", 
-        "slice": 13, 
-        "created": "2013-12-13T22:19:51.845Z", 
-        "amount": 0.56, 
-        "object": 99, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-10T06:00:00Z", 
-        "kind": "reservation"
+        "updated": "2013-12-18T21:29:19.846Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:29:13.228Z", 
+        "amount": 0.3024, 
+        "object": 117, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 4.32, 
+        "invoice": 67, 
+        "date": "2013-12-15T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59391, 
+    "pk": 61191, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.853Z", 
-        "slice": 13, 
-        "created": "2013-12-13T22:19:51.853Z", 
-        "amount": 0.56, 
-        "object": 99, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-10T14:00:00Z", 
-        "kind": "reservation"
+        "updated": "2013-12-18T21:29:19.887Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:29:13.236Z", 
+        "amount": 0.112, 
+        "object": 117, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 1.6, 
+        "invoice": 67, 
+        "date": "2013-12-15T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59392, 
+    "pk": 61192, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.861Z", 
-        "slice": 13, 
-        "created": "2013-12-13T22:19:51.861Z", 
-        "amount": 0.56, 
-        "object": 99, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-10T22:00:00Z", 
-        "kind": "reservation"
+        "updated": "2013-12-18T21:29:19.929Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:29:13.245Z", 
+        "amount": 0.2856, 
+        "object": 117, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 4.08, 
+        "invoice": 67, 
+        "date": "2013-12-15T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59393, 
+    "pk": 61193, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.870Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.870Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:13.253Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.253Z", 
+        "amount": 0.1288
+        "object": 117
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0
+        "coreHours": 1.84
         "invoice": null, 
-        "date": "2013-12-11T06:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-16T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59394, 
+    "pk": 61194, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.878Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.878Z", 
-        "amount": 0.56, 
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:13.261Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.261Z", 
+        "amount": 0.336, 
+        "object": 117
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0
+        "coreHours": 4.8
         "invoice": null, 
-        "date": "2013-12-11T14:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-16T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59395, 
+    "pk": 61195, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.886Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.886Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:13.278Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.278Z", 
+        "amount": 0.1624
+        "object": 117
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0
+        "coreHours": 2.32
         "invoice": null, 
-        "date": "2013-12-11T22:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-16T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59396, 
+    "pk": 61196, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.895Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.895Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:13.286Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.286Z", 
+        "amount": 0.1904
+        "object": 117
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0
+        "coreHours": 2.72
         "invoice": null, 
-        "date": "2013-12-12T06:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-17T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59397, 
+    "pk": 61197, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.903Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.903Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:13.294Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.294Z", 
+        "amount": 0.3192
+        "object": 117
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0
+        "coreHours": 4.56
         "invoice": null, 
-        "date": "2013-12-12T14:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-17T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59398, 
+    "pk": 61198, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.911Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.911Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:13.303Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.303Z", 
+        "amount": 0.14
+        "object": 117
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0, 
+        "coreHours": 2.0, 
         "invoice": null, 
-        "date": "2013-12-12T22:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-17T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59399, 
+    "pk": 61199, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.919Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.919Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:13.311Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.311Z", 
+        "amount": 0.1288
+        "object": 117
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0
+        "coreHours": 1.84
         "invoice": null, 
-        "date": "2013-12-13T06:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-18T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59400, 
+    "pk": 61200, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:51.928Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.928Z", 
-        "amount": 0.56
-        "object": 99
-        "account": 13
+        "updated": "2013-12-18T21:29:13.319Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.319Z", 
+        "amount": 0.2632
+        "object": 117
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0
+        "coreHours": 3.76
         "invoice": null, 
-        "date": "2013-12-13T14:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-18T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59401, 
+    "pk": 61201, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.424Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.943Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:16.427Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.334Z", 
+        "amount": 0.2968
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-13T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.24, 
+        "invoice": 63, 
+        "date": "2013-11-18T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59402, 
+    "pk": 61202, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.515Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.952Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:16.477Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.344Z", 
+        "amount": 0.2072
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-14T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.96, 
+        "invoice": 64, 
+        "date": "2013-11-19T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59403, 
+    "pk": 61203, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.606Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.961Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:16.518Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.352Z", 
+        "amount": 0.2968
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-14T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.24, 
+        "invoice": 64, 
+        "date": "2013-11-19T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59404, 
+    "pk": 61204, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.697Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.969Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:16.560Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.361Z", 
+        "amount": 0.2296, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-14T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.28, 
+        "invoice": 64, 
+        "date": "2013-11-19T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59405, 
+    "pk": 61205, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.788Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.977Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:16.601Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.369Z", 
+        "amount": 0.14
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-15T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.0, 
+        "invoice": 64, 
+        "date": "2013-11-20T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59406, 
+    "pk": 61206, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.880Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.986Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:16.642Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.377Z", 
+        "amount": 0.2968
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-15T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.24, 
+        "invoice": 64, 
+        "date": "2013-11-20T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59407, 
+    "pk": 61207, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.988Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:51.994Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:16.684Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.385Z", 
+        "amount": 0.1512
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-15T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.16, 
+        "invoice": 64, 
+        "date": "2013-11-20T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59408, 
+    "pk": 61208, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.079Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.002Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:16.725Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.394Z", 
+        "amount": 0.336, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-16T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.8, 
+        "invoice": 64, 
+        "date": "2013-11-21T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59409, 
+    "pk": 61209, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.170Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.010Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:16.767Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.402Z", 
+        "amount": 0.2688
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-16T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.84, 
+        "invoice": 64, 
+        "date": "2013-11-21T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59410, 
+    "pk": 61210, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.261Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.019Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:16.808Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.410Z", 
+        "amount": 0.308
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-16T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.4, 
+        "invoice": 64, 
+        "date": "2013-11-21T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59411, 
+    "pk": 61211, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.344Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.027Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:16.850Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.418Z", 
+        "amount": 0.1792
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-17T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.56, 
+        "invoice": 64, 
+        "date": "2013-11-22T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59412, 
+    "pk": 61212, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.435Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.035Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:16.891Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.427Z", 
+        "amount": 0.3304
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-17T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.72, 
+        "invoice": 64, 
+        "date": "2013-11-22T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59413, 
+    "pk": 61213, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.526Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.044Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:16.932Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.435Z", 
+        "amount": 0.1288
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-17T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.84, 
+        "invoice": 64, 
+        "date": "2013-11-22T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59414, 
+    "pk": 61214, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.626Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.052Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:16.974Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.443Z", 
+        "amount": 0.2352
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-18T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.36, 
+        "invoice": 64, 
+        "date": "2013-11-23T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59415, 
+    "pk": 61215, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.729Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.060Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:17.015Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.452Z", 
+        "amount": 0.3304
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-18T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.72, 
+        "invoice": 64, 
+        "date": "2013-11-23T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59416, 
+    "pk": 61216, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.820Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.068Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:17.057Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.460Z", 
+        "amount": 0.2912
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-18T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.16, 
+        "invoice": 64, 
+        "date": "2013-11-23T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59417, 
+    "pk": 61217, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.911Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.077Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:17.098Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.468Z", 
+        "amount": 0.1512
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-19T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.16, 
+        "invoice": 64, 
+        "date": "2013-11-24T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59418, 
+    "pk": 61218, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.002Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.085Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:17.140Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.476Z", 
+        "amount": 0.112
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-19T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.6, 
+        "invoice": 64, 
+        "date": "2013-11-24T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59419, 
+    "pk": 61219, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.093Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.093Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:17.181Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.485Z", 
+        "amount": 0.3136, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-19T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.48, 
+        "invoice": 64, 
+        "date": "2013-11-24T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59420, 
+    "pk": 61220, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.184Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.102Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:17.239Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.493Z", 
+        "amount": 0.1512
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-20T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.16, 
+        "invoice": 65, 
+        "date": "2013-11-25T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59421, 
+    "pk": 61221, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.275Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.110Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:17.303Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.501Z", 
+        "amount": 0.2016, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-20T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.88, 
+        "invoice": 65, 
+        "date": "2013-11-25T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59422, 
+    "pk": 61222, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.367Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.118Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:17.352Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.510Z", 
+        "amount": 0.2968
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-20T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.24, 
+        "invoice": 65, 
+        "date": "2013-11-25T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59423, 
+    "pk": 61223, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.460Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.126Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:17.394Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.518Z", 
+        "amount": 0.1736, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-21T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.48, 
+        "invoice": 65, 
+        "date": "2013-11-26T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59424, 
+    "pk": 61224, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.551Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.135Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:17.435Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.526Z", 
+        "amount": 0.3304
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-21T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.72, 
+        "invoice": 65, 
+        "date": "2013-11-26T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59425, 
+    "pk": 61225, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.659Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.143Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:17.477Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.534Z", 
+        "amount": 0.3248
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-21T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.64, 
+        "invoice": 65, 
+        "date": "2013-11-26T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59426, 
+    "pk": 61226, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.750Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.151Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:17.531Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.543Z", 
+        "amount": 0.1344
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-22T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.92, 
+        "invoice": 65, 
+        "date": "2013-11-27T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59427, 
+    "pk": 61227, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.841Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.159Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:17.634Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.551Z", 
+        "amount": 0.1904
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-22T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.72, 
+        "invoice": 65, 
+        "date": "2013-11-27T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59428, 
+    "pk": 61228, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.957Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.168Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:17.676Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.559Z", 
+        "amount": 0.2576, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-22T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.68, 
+        "invoice": 65, 
+        "date": "2013-11-27T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59429, 
+    "pk": 61229, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.048Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.176Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:17.717Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.567Z", 
+        "amount": 0.3024
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-23T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.32, 
+        "invoice": 65, 
+        "date": "2013-11-28T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59430, 
+    "pk": 61230, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.139Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.184Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:17.758Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.576Z", 
+        "amount": 0.336, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-23T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.8, 
+        "invoice": 65, 
+        "date": "2013-11-28T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59431, 
+    "pk": 61231, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.230Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.193Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:17.800Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.584Z", 
+        "amount": 0.2016, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-23T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.88, 
+        "invoice": 65, 
+        "date": "2013-11-28T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59432, 
+    "pk": 61232, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.512Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.201Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:17.841Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.592Z", 
+        "amount": 0.14
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-24T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.0, 
+        "invoice": 65, 
+        "date": "2013-11-29T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59433, 
+    "pk": 61233, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.769Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.209Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:17.882Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.601Z", 
+        "amount": 0.14
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-24T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.0, 
+        "invoice": 65, 
+        "date": "2013-11-29T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59434, 
+    "pk": 61234, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.860Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.217Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:17.924Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.609Z", 
+        "amount": 0.1232
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-24T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.76, 
+        "invoice": 65, 
+        "date": "2013-11-29T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59435, 
+    "pk": 61235, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.959Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.226Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:17.965Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.617Z", 
+        "amount": 0.3136, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-25T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.48, 
+        "invoice": 65, 
+        "date": "2013-11-30T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59436, 
+    "pk": 61236, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.050Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.234Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.007Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.626Z", 
+        "amount": 0.3024
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-25T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.32, 
+        "invoice": 65, 
+        "date": "2013-11-30T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59437, 
+    "pk": 61237, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.141Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.242Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.048Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.634Z", 
+        "amount": 0.2968
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-25T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.24, 
+        "invoice": 65, 
+        "date": "2013-11-30T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59438, 
+    "pk": 61238, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.238Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.251Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.090Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.642Z", 
+        "amount": 0.3192
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-26T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.56, 
+        "invoice": 65, 
+        "date": "2013-12-01T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59439, 
+    "pk": 61239, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.329Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.259Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.131Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.651Z", 
+        "amount": 0.196, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-26T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.8, 
+        "invoice": 65, 
+        "date": "2013-12-01T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59440, 
+    "pk": 61240, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.420Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.267Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.172Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.659Z", 
+        "amount": 0.1344
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-26T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.92, 
+        "invoice": 65, 
+        "date": "2013-12-01T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59441, 
+    "pk": 61241, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.511Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.276Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.222Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.667Z", 
+        "amount": 0.1512
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-27T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.16, 
+        "invoice": 66, 
+        "date": "2013-12-02T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59442, 
+    "pk": 61242, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.602Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.284Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.264Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.675Z", 
+        "amount": 0.3304
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-27T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.72, 
+        "invoice": 66, 
+        "date": "2013-12-02T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59443, 
+    "pk": 61243, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.693Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.292Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.305Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.684Z", 
+        "amount": 0.1904
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-27T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.72, 
+        "invoice": 66, 
+        "date": "2013-12-02T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59444, 
+    "pk": 61244, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.784Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.300Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.346Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.692Z", 
+        "amount": 0.2912
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-28T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.16, 
+        "invoice": 66, 
+        "date": "2013-12-03T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59445, 
+    "pk": 61245, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.875Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.309Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.388Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.700Z", 
+        "amount": 0.3136, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-28T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.48, 
+        "invoice": 66, 
+        "date": "2013-12-03T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59446, 
+    "pk": 61246, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.966Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.317Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.429Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.709Z", 
+        "amount": 0.28
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-28T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.0, 
+        "invoice": 66, 
+        "date": "2013-12-03T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59447, 
+    "pk": 61247, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.058Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.325Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.471Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.717Z", 
+        "amount": 0.2856, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-29T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.08, 
+        "invoice": 66, 
+        "date": "2013-12-04T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59448, 
+    "pk": 61248, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.149Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.334Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.512Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.725Z", 
+        "amount": 0.1176, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-29T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.68, 
+        "invoice": 66, 
+        "date": "2013-12-04T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59449, 
+    "pk": 61249, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.240Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.342Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.553Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.733Z", 
+        "amount": 0.1736, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-29T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.48, 
+        "invoice": 66, 
+        "date": "2013-12-04T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59450, 
+    "pk": 61250, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.331Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.350Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.595Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.742Z", 
+        "amount": 0.2184
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-30T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.12, 
+        "invoice": 66, 
+        "date": "2013-12-05T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59451, 
+    "pk": 61251, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.424Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.358Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.637Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.750Z", 
+        "amount": 0.1624
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-30T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.32, 
+        "invoice": 66, 
+        "date": "2013-12-05T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59452, 
+    "pk": 61252, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.515Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.367Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.678Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.758Z", 
+        "amount": 0.3192
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-30T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.56, 
+        "invoice": 66, 
+        "date": "2013-12-05T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59453, 
+    "pk": 61253, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.606Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.375Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.719Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.767Z", 
+        "amount": 0.2856, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-12-01T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.08, 
+        "invoice": 66, 
+        "date": "2013-12-06T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59454, 
+    "pk": 61254, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.697Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.383Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.761Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.775Z", 
+        "amount": 0.112
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-12-01T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.6, 
+        "invoice": 66, 
+        "date": "2013-12-06T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59455, 
+    "pk": 61255, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.788Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.392Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.802Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.783Z", 
+        "amount": 0.2688
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-12-01T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.84, 
+        "invoice": 66, 
+        "date": "2013-12-06T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59456, 
+    "pk": 61256, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.888Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.400Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.843Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.791Z", 
+        "amount": 0.1176, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-02T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.68, 
+        "invoice": 66, 
+        "date": "2013-12-07T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59457, 
+    "pk": 61257, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.979Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.408Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.885Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.800Z", 
+        "amount": 0.2688
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-02T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.84, 
+        "invoice": 66, 
+        "date": "2013-12-07T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59458, 
+    "pk": 61258, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.070Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.416Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.926Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.808Z", 
+        "amount": 0.2296, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-02T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.28, 
+        "invoice": 66, 
+        "date": "2013-12-07T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59459, 
+    "pk": 61259, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.161Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.425Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:18.968Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.816Z", 
+        "amount": 0.224
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-03T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.2, 
+        "invoice": 66, 
+        "date": "2013-12-08T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59460, 
+    "pk": 61260, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.252Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.433Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:19.009Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.824Z", 
+        "amount": 0.2856, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-03T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.08, 
+        "invoice": 66, 
+        "date": "2013-12-08T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59461, 
+    "pk": 61261, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.343Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.441Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:19.051Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.833Z", 
+        "amount": 0.224
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-03T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.2, 
+        "invoice": 66, 
+        "date": "2013-12-08T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59462, 
+    "pk": 61262, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.434Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.450Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:19.100Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.841Z", 
+        "amount": 0.2576, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-04T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.68, 
+        "invoice": 67, 
+        "date": "2013-12-09T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59463, 
+    "pk": 61263, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.526Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.458Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:19.142Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.849Z", 
+        "amount": 0.2296, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-04T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.28, 
+        "invoice": 67, 
+        "date": "2013-12-09T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59464, 
+    "pk": 61264, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.617Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.466Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:19.183Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.858Z", 
+        "amount": 0.2632
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-04T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.76, 
+        "invoice": 67, 
+        "date": "2013-12-09T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59465, 
+    "pk": 61265, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.708Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.474Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:19.224Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.866Z", 
+        "amount": 0.2856, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-05T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.08, 
+        "invoice": 67, 
+        "date": "2013-12-10T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59466, 
+    "pk": 61266, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.799Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.483Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:19.266Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.874Z", 
+        "amount": 0.336, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-05T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.8, 
+        "invoice": 67, 
+        "date": "2013-12-10T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59467, 
+    "pk": 61267, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.890Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.491Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:19.307Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.882Z", 
+        "amount": 0.3136, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-05T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.48, 
+        "invoice": 67, 
+        "date": "2013-12-10T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59468, 
+    "pk": 61268, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.981Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.499Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:19.349Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.891Z", 
+        "amount": 0.2968
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-06T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.24, 
+        "invoice": 67, 
+        "date": "2013-12-11T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59469, 
+    "pk": 61269, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.072Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.507Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:19.390Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.899Z", 
+        "amount": 0.1904
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-06T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.72, 
+        "invoice": 67, 
+        "date": "2013-12-11T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59470, 
+    "pk": 61270, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.170Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.516Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:19.432Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.907Z", 
+        "amount": 0.2184
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-06T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.12, 
+        "invoice": 67, 
+        "date": "2013-12-11T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59471, 
+    "pk": 61271, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.261Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.524Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:19.473Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.916Z", 
+        "amount": 0.2352
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-07T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.36, 
+        "invoice": 67, 
+        "date": "2013-12-12T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59472, 
+    "pk": 61272, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.352Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.532Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:19.514Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.924Z", 
+        "amount": 0.1176, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-07T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.68, 
+        "invoice": 67, 
+        "date": "2013-12-12T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59473, 
+    "pk": 61273, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.443Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.541Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:19.556Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.932Z", 
+        "amount": 0.2464
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-07T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.52, 
+        "invoice": 67, 
+        "date": "2013-12-12T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59474, 
+    "pk": 61274, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.535Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.549Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:19.597Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.940Z", 
+        "amount": 0.3136, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-08T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.48, 
+        "invoice": 67, 
+        "date": "2013-12-13T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59475, 
+    "pk": 61275, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.626Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.557Z", 
-        "amount": 0.56, 
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:19.639Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.949Z", 
+        "amount": 0.196, 
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-08T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.8, 
+        "invoice": 67, 
+        "date": "2013-12-13T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59476, 
+    "pk": 61276, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.717Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.565Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:19.680Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:13.957Z", 
+        "amount": 0.1624
+        "object": 118
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-08T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.32, 
+        "invoice": 67, 
+        "date": "2013-12-13T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59477, 
+    "pk": 61277, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:52.574Z", 
-        "slice": 13, 
-        "created": "2013-12-13T22:19:52.574Z", 
-        "amount": 0.56, 
-        "object": 100, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-09T06:00:00Z", 
-        "kind": "reservation"
+        "updated": "2013-12-18T21:29:19.722Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:29:13.965Z", 
+        "amount": 0.1232, 
+        "object": 118, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 1.76, 
+        "invoice": 67, 
+        "date": "2013-12-14T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59478, 
+    "pk": 61278, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:52.582Z", 
-        "slice": 13, 
-        "created": "2013-12-13T22:19:52.582Z", 
-        "amount": 0.56, 
-        "object": 100, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-09T14:00:00Z", 
-        "kind": "reservation"
+        "updated": "2013-12-18T21:29:19.763Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:29:13.974Z", 
+        "amount": 0.2296, 
+        "object": 118, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 3.28, 
+        "invoice": 67, 
+        "date": "2013-12-14T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59479, 
+    "pk": 61279, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:52.590Z", 
-        "slice": 13, 
-        "created": "2013-12-13T22:19:52.590Z", 
-        "amount": 0.56, 
-        "object": 100, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-09T22:00:00Z", 
-        "kind": "reservation"
+        "updated": "2013-12-18T21:29:19.813Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:29:13.982Z", 
+        "amount": 0.28, 
+        "object": 118, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 4.0, 
+        "invoice": 67, 
+        "date": "2013-12-14T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59480, 
+    "pk": 61280, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:52.599Z", 
-        "slice": 13, 
-        "created": "2013-12-13T22:19:52.599Z", 
-        "amount": 0.56, 
-        "object": 100, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-10T06:00:00Z", 
-        "kind": "reservation"
+        "updated": "2013-12-18T21:29:19.854Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:29:13.990Z", 
+        "amount": 0.2016, 
+        "object": 118, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 2.88, 
+        "invoice": 67, 
+        "date": "2013-12-15T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59481, 
+    "pk": 61281, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:52.607Z", 
-        "slice": 13, 
-        "created": "2013-12-13T22:19:52.607Z", 
-        "amount": 0.56, 
-        "object": 100, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-10T14:00:00Z", 
-        "kind": "reservation"
+        "updated": "2013-12-18T21:29:19.895Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:29:13.998Z", 
+        "amount": 0.1624, 
+        "object": 118, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 2.32, 
+        "invoice": 67, 
+        "date": "2013-12-15T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59482, 
+    "pk": 61282, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:52.615Z", 
-        "slice": 13, 
-        "created": "2013-12-13T22:19:52.615Z", 
-        "amount": 0.56, 
-        "object": 100, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-10T22:00:00Z", 
-        "kind": "reservation"
+        "updated": "2013-12-18T21:29:19.937Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:29:14.007Z", 
+        "amount": 0.2912, 
+        "object": 118, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 4.16, 
+        "invoice": 67, 
+        "date": "2013-12-15T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59483, 
+    "pk": 61283, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:52.623Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.623Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:14.015Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.015Z", 
+        "amount": 0.1344
+        "object": 118
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0
+        "coreHours": 1.92
         "invoice": null, 
-        "date": "2013-12-11T06:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-16T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59484, 
+    "pk": 61284, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:52.632Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.632Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:14.023Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.023Z", 
+        "amount": 0.1848
+        "object": 118
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0
+        "coreHours": 2.64
         "invoice": null, 
-        "date": "2013-12-11T14:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-16T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59485, 
+    "pk": 61285, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:52.640Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.640Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:14.032Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.031Z", 
+        "amount": 0.2128
+        "object": 118
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0
+        "coreHours": 3.04
         "invoice": null, 
-        "date": "2013-12-11T22:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-16T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59486, 
+    "pk": 61286, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:52.648Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.648Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:14.040Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.040Z", 
+        "amount": 0.2464
+        "object": 118
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0
+        "coreHours": 3.52
         "invoice": null, 
-        "date": "2013-12-12T06:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-17T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59487, 
+    "pk": 61287, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:52.657Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.657Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:14.048Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.048Z", 
+        "amount": 0.2352
+        "object": 118
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0
+        "coreHours": 3.36
         "invoice": null, 
-        "date": "2013-12-12T14:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-17T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59488, 
+    "pk": 61288, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:52.665Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.665Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:14.056Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.056Z", 
+        "amount": 0.2128
+        "object": 118
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0
+        "coreHours": 3.04
         "invoice": null, 
-        "date": "2013-12-12T22:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-17T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59489, 
+    "pk": 61289, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:52.673Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.673Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:14.065Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.065Z", 
+        "amount": 0.14
+        "object": 118
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0, 
+        "coreHours": 2.0, 
         "invoice": null, 
-        "date": "2013-12-13T06:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-18T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59490, 
+    "pk": 61290, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:52.682Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.681Z", 
-        "amount": 0.56
-        "object": 100
-        "account": 13
+        "updated": "2013-12-18T21:29:14.073Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.073Z", 
+        "amount": 0.1792
+        "object": 118
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0
+        "coreHours": 2.56
         "invoice": null, 
-        "date": "2013-12-13T14:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-18T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59491, 
+    "pk": 61291, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.407Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.696Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:16.444Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.088Z", 
+        "amount": 0.1232
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 58, 
-        "date": "2013-11-13T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.76, 
+        "invoice": 64, 
+        "date": "2013-11-18T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59492, 
+    "pk": 61292, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.507Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.706Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:16.485Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.098Z", 
+        "amount": 0.1288
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-14T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.84, 
+        "invoice": 64, 
+        "date": "2013-11-19T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59493, 
+    "pk": 61293, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.598Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.715Z", 
-        "amount": 0.56, 
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:16.527Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.106Z", 
+        "amount": 0.2856, 
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-14T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.08, 
+        "invoice": 64, 
+        "date": "2013-11-19T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59494, 
+    "pk": 61294, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.689Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.723Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:16.568Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.114Z", 
+        "amount": 0.14
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-14T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.0, 
+        "invoice": 64, 
+        "date": "2013-11-19T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59495, 
+    "pk": 61295, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.780Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.731Z", 
-        "amount": 0.56, 
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:16.609Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.123Z", 
+        "amount": 0.3136, 
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-15T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.48, 
+        "invoice": 64, 
+        "date": "2013-11-20T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59496, 
+    "pk": 61296, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.871Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.739Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:16.651Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.131Z", 
+        "amount": 0.1792
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-15T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.56, 
+        "invoice": 64, 
+        "date": "2013-11-20T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59497, 
+    "pk": 61297, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.980Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.748Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:16.692Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.139Z", 
+        "amount": 0.252
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-15T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.6, 
+        "invoice": 64, 
+        "date": "2013-11-20T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59498, 
+    "pk": 61298, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.071Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.756Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:16.734Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.148Z", 
+        "amount": 0.2464
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-16T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.52, 
+        "invoice": 64, 
+        "date": "2013-11-21T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59499, 
+    "pk": 61299, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.162Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.764Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:16.775Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.156Z", 
+        "amount": 0.2184
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-16T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.12, 
+        "invoice": 64, 
+        "date": "2013-11-21T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59500, 
+    "pk": 61300, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.253Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.773Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:16.816Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.164Z", 
+        "amount": 0.252
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-16T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.6, 
+        "invoice": 64, 
+        "date": "2013-11-21T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59501, 
+    "pk": 61301, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.377Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.781Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:16.858Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.172Z", 
+        "amount": 0.1624
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-17T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.32, 
+        "invoice": 64, 
+        "date": "2013-11-22T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59502, 
+    "pk": 61302, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.468Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.789Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:16.899Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.181Z", 
+        "amount": 0.2072
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-17T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.96, 
+        "invoice": 64, 
+        "date": "2013-11-22T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59503, 
+    "pk": 61303, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.559Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.798Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:16.941Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.189Z", 
+        "amount": 0.1904
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 59, 
-        "date": "2013-11-17T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.72, 
+        "invoice": 64, 
+        "date": "2013-11-22T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59504, 
+    "pk": 61304, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.659Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.806Z", 
-        "amount": 0.56, 
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:16.982Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.197Z", 
+        "amount": 0.2856, 
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-18T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.08, 
+        "invoice": 64, 
+        "date": "2013-11-23T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59505, 
+    "pk": 61305, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.762Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.814Z", 
-        "amount": 0.56, 
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:17.024Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.206Z", 
+        "amount": 0.2016, 
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-18T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.88, 
+        "invoice": 64, 
+        "date": "2013-11-23T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59506, 
+    "pk": 61306, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.853Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.822Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:17.065Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.214Z", 
+        "amount": 0.2184
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-18T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.12, 
+        "invoice": 64, 
+        "date": "2013-11-23T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59507, 
+    "pk": 61307, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:59.944Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.831Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:17.106Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.222Z", 
+        "amount": 0.14
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-19T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.0, 
+        "invoice": 64, 
+        "date": "2013-11-24T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59508, 
+    "pk": 61308, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.035Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.839Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:17.148Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.230Z", 
+        "amount": 0.1288
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-19T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.84, 
+        "invoice": 64, 
+        "date": "2013-11-24T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59509, 
+    "pk": 61309, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.126Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.847Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:17.189Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.239Z", 
+        "amount": 0.2632
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-19T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.76, 
+        "invoice": 64, 
+        "date": "2013-11-24T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59510, 
+    "pk": 61310, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.217Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.856Z", 
-        "amount": 0.56, 
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:17.253Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.247Z", 
+        "amount": 0.2856, 
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-20T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.08, 
+        "invoice": 65, 
+        "date": "2013-11-25T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59511, 
+    "pk": 61311, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.309Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.864Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:17.314Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.255Z", 
+        "amount": 0.1568
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-20T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.24, 
+        "invoice": 65, 
+        "date": "2013-11-25T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59512, 
+    "pk": 61312, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.402Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.872Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:17.361Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.264Z", 
+        "amount": 0.2352
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-20T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.36, 
+        "invoice": 65, 
+        "date": "2013-11-25T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59513, 
+    "pk": 61313, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.493Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.880Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:17.402Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.272Z", 
+        "amount": 0.2352
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-21T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.36, 
+        "invoice": 65, 
+        "date": "2013-11-26T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59514, 
+    "pk": 61314, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.584Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.889Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:17.443Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.280Z", 
+        "amount": 0.3304
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-21T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.72, 
+        "invoice": 65, 
+        "date": "2013-11-26T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59515, 
+    "pk": 61315, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.692Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.897Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:17.485Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.288Z", 
+        "amount": 0.2408
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-21T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.44, 
+        "invoice": 65, 
+        "date": "2013-11-26T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59516, 
+    "pk": 61316, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.783Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.905Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:17.601Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.297Z", 
+        "amount": 0.2912
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-22T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.16, 
+        "invoice": 65, 
+        "date": "2013-11-27T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59517, 
+    "pk": 61317, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.874Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.913Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:17.642Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.305Z", 
+        "amount": 0.2688
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-22T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.84, 
+        "invoice": 65, 
+        "date": "2013-11-27T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59518, 
+    "pk": 61318, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:00.990Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.922Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:17.684Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.313Z", 
+        "amount": 0.168
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-22T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.4, 
+        "invoice": 65, 
+        "date": "2013-11-27T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59519, 
+    "pk": 61319, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.081Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.930Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:17.725Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.322Z", 
+        "amount": 0.1792
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-23T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.56, 
+        "invoice": 65, 
+        "date": "2013-11-28T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59520, 
+    "pk": 61320, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.172Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.938Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:17.767Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.330Z", 
+        "amount": 0.2184
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-23T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.12, 
+        "invoice": 65, 
+        "date": "2013-11-28T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59521, 
+    "pk": 61321, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.338Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.947Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:17.808Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.338Z", 
+        "amount": 0.1848
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-23T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.64, 
+        "invoice": 65, 
+        "date": "2013-11-28T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59522, 
+    "pk": 61322, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.678Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.955Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:17.849Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.346Z", 
+        "amount": 0.1792
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-24T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.56, 
+        "invoice": 65, 
+        "date": "2013-11-29T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59523, 
+    "pk": 61323, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.802Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.963Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:17.891Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.355Z", 
+        "amount": 0.112
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-24T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.6, 
+        "invoice": 65, 
+        "date": "2013-11-29T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59524, 
+    "pk": 61324, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.893Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.971Z", 
-        "amount": 0.56, 
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:17.932Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.363Z", 
+        "amount": 0.3136, 
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 60, 
-        "date": "2013-11-24T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.48, 
+        "invoice": 65, 
+        "date": "2013-11-29T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59525, 
+    "pk": 61325, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:01.992Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.980Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:17.974Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.371Z", 
+        "amount": 0.1568
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-25T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.24, 
+        "invoice": 65, 
+        "date": "2013-11-30T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59526, 
+    "pk": 61326, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.084Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.988Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.015Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.380Z", 
+        "amount": 0.3024
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-25T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.32, 
+        "invoice": 65, 
+        "date": "2013-11-30T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59527, 
+    "pk": 61327, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.175Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:52.996Z", 
-        "amount": 0.56, 
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.057Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.388Z", 
+        "amount": 0.336, 
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-25T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.8, 
+        "invoice": 65, 
+        "date": "2013-11-30T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59528, 
+    "pk": 61328, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.271Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.005Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.098Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.396Z", 
+        "amount": 0.28
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-26T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.0, 
+        "invoice": 65, 
+        "date": "2013-12-01T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59529, 
+    "pk": 61329, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.362Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.013Z", 
-        "amount": 0.56, 
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.139Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.404Z", 
+        "amount": 0.3136, 
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-26T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.48, 
+        "invoice": 65, 
+        "date": "2013-12-01T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59530, 
+    "pk": 61330, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.453Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.021Z", 
-        "amount": 0.56, 
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.181Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.413Z", 
+        "amount": 0.1176, 
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-26T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.68, 
+        "invoice": 65, 
+        "date": "2013-12-01T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59531, 
+    "pk": 61331, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.544Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.029Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.231Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.421Z", 
+        "amount": 0.3248
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-27T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.64, 
+        "invoice": 66, 
+        "date": "2013-12-02T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59532, 
+    "pk": 61332, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.635Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.038Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.272Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.429Z", 
+        "amount": 0.1288
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-27T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.84, 
+        "invoice": 66, 
+        "date": "2013-12-02T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59533, 
+    "pk": 61333, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.726Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.046Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.313Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.437Z", 
+        "amount": 0.1848
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-27T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.64, 
+        "invoice": 66, 
+        "date": "2013-12-02T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59534, 
+    "pk": 61334, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.817Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.054Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.355Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.446Z", 
+        "amount": 0.168
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-28T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.4, 
+        "invoice": 66, 
+        "date": "2013-12-03T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59535, 
+    "pk": 61335, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:02.909Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.063Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.396Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.454Z", 
+        "amount": 0.1624
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-28T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.32, 
+        "invoice": 66, 
+        "date": "2013-12-03T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59536, 
+    "pk": 61336, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.000Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.071Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.438Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.462Z", 
+        "amount": 0.112
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-28T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.6, 
+        "invoice": 66, 
+        "date": "2013-12-03T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59537, 
+    "pk": 61337, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.099Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.079Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.479Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.471Z", 
+        "amount": 0.2184
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-29T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.12, 
+        "invoice": 66, 
+        "date": "2013-12-04T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59538, 
+    "pk": 61338, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.190Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.087Z", 
-        "amount": 0.56, 
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.520Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.479Z", 
+        "amount": 0.2576, 
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-29T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.68, 
+        "invoice": 66, 
+        "date": "2013-12-04T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59539, 
+    "pk": 61339, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.281Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.096Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.562Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.487Z", 
+        "amount": 0.2072
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-29T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.96, 
+        "invoice": 66, 
+        "date": "2013-12-04T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59540, 
+    "pk": 61340, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.373Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.104Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.603Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.495Z", 
+        "amount": 0.1232
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-30T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.76, 
+        "invoice": 66, 
+        "date": "2013-12-05T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59541, 
+    "pk": 61341, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.465Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.112Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.645Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.504Z", 
+        "amount": 0.2632
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-30T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.76, 
+        "invoice": 66, 
+        "date": "2013-12-05T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59542, 
+    "pk": 61342, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.556Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.120Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.686Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.512Z", 
+        "amount": 0.14
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-11-30T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.0, 
+        "invoice": 66, 
+        "date": "2013-12-05T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59543, 
+    "pk": 61343, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.647Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.129Z", 
-        "amount": 0.56, 
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.728Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.520Z", 
+        "amount": 0.196, 
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-12-01T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.8, 
+        "invoice": 66, 
+        "date": "2013-12-06T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59544, 
+    "pk": 61344, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.739Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.137Z", 
-        "amount": 0.56, 
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.769Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.529Z", 
+        "amount": 0.2576, 
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-12-01T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.68, 
+        "invoice": 66, 
+        "date": "2013-12-06T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59545, 
+    "pk": 61345, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.821Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.145Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.810Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.537Z", 
+        "amount": 0.168
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 61, 
-        "date": "2013-12-01T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.4, 
+        "invoice": 66, 
+        "date": "2013-12-06T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59546, 
+    "pk": 61346, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:03.921Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.154Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.852Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.545Z", 
+        "amount": 0.2464
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-02T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.52, 
+        "invoice": 66, 
+        "date": "2013-12-07T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59547, 
+    "pk": 61347, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.012Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.162Z", 
-        "amount": 0.56, 
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.893Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.553Z", 
+        "amount": 0.336, 
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-02T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.8, 
+        "invoice": 66, 
+        "date": "2013-12-07T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59548, 
+    "pk": 61348, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.103Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.170Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.935Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.562Z", 
+        "amount": 0.2464
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-02T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.52, 
+        "invoice": 66, 
+        "date": "2013-12-07T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59549, 
+    "pk": 61349, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.194Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.178Z", 
-        "amount": 0.56, 
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:18.976Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.570Z", 
+        "amount": 0.2576, 
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-03T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.68, 
+        "invoice": 66, 
+        "date": "2013-12-08T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59550, 
+    "pk": 61350, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.285Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.187Z", 
-        "amount": 0.56, 
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:19.017Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.578Z", 
+        "amount": 0.1736, 
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-03T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.48, 
+        "invoice": 66, 
+        "date": "2013-12-08T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59551, 
+    "pk": 61351, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.376Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.195Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:19.059Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.587Z", 
+        "amount": 0.3024
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-03T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.32, 
+        "invoice": 66, 
+        "date": "2013-12-08T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59552, 
+    "pk": 61352, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.467Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.203Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:19.109Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.595Z", 
+        "amount": 0.1848
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-04T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.64, 
+        "invoice": 67, 
+        "date": "2013-12-09T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59553, 
+    "pk": 61353, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.559Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.212Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:19.150Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.603Z", 
+        "amount": 0.3024
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-04T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.32, 
+        "invoice": 67, 
+        "date": "2013-12-09T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59554, 
+    "pk": 61354, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.650Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.220Z", 
-        "amount": 0.56, 
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:19.191Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.611Z", 
+        "amount": 0.2856, 
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-04T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.08, 
+        "invoice": 67, 
+        "date": "2013-12-09T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59555, 
+    "pk": 61355, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.741Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.228Z", 
-        "amount": 0.56, 
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:19.233Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.620Z", 
+        "amount": 0.3136, 
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-05T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.48, 
+        "invoice": 67, 
+        "date": "2013-12-10T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59556, 
+    "pk": 61356, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.832Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.237Z", 
-        "amount": 0.56, 
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:19.274Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.628Z", 
+        "amount": 0.1176, 
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-05T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 1.68, 
+        "invoice": 67, 
+        "date": "2013-12-10T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59557, 
+    "pk": 61357, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:04.923Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.245Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:19.316Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.636Z", 
+        "amount": 0.2072
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-05T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.96, 
+        "invoice": 67, 
+        "date": "2013-12-10T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59558, 
+    "pk": 61358, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.023Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.253Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:19.357Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.645Z", 
+        "amount": 0.2632
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-06T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.76, 
+        "invoice": 67, 
+        "date": "2013-12-11T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59559, 
+    "pk": 61359, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.120Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.261Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:19.398Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.653Z", 
+        "amount": 0.2408
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-06T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.44, 
+        "invoice": 67, 
+        "date": "2013-12-11T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59560, 
+    "pk": 61360, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.212Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.270Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:19.440Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.661Z", 
+        "amount": 0.2744
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-06T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.92, 
+        "invoice": 67, 
+        "date": "2013-12-11T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59561, 
+    "pk": 61361, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.303Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.278Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:19.481Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.669Z", 
+        "amount": 0.3024
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-07T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.32, 
+        "invoice": 67, 
+        "date": "2013-12-12T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59562, 
+    "pk": 61362, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.394Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.286Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:19.523Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.678Z", 
+        "amount": 0.1848
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-07T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.64, 
+        "invoice": 67, 
+        "date": "2013-12-12T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59563, 
+    "pk": 61363, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.485Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.295Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:19.564Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.686Z", 
+        "amount": 0.168
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-07T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 2.4, 
+        "invoice": 67, 
+        "date": "2013-12-12T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59564, 
+    "pk": 61364, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.576Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.303Z", 
-        "amount": 0.56, 
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:19.606Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.694Z", 
+        "amount": 0.2576, 
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-08T06:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 3.68, 
+        "invoice": 67, 
+        "date": "2013-12-13T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59565, 
+    "pk": 61365, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.667Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.311Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:19.647Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.702Z", 
+        "amount": 0.3024
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-08T14:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.32, 
+        "invoice": 67, 
+        "date": "2013-12-13T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59566, 
+    "pk": 61366, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:20:05.758Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.319Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:19.688Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.711Z", 
+        "amount": 0.28
+        "object": 119
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 8.0, 
-        "invoice": 62, 
-        "date": "2013-12-08T22:00:00Z", 
-        "kind": "reservation"
+        "coreHours": 4.0, 
+        "invoice": 67, 
+        "date": "2013-12-13T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59567, 
+    "pk": 61367, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:53.328Z", 
-        "slice": 13, 
-        "created": "2013-12-13T22:19:53.328Z", 
-        "amount": 0.56, 
-        "object": 101, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-09T06:00:00Z", 
-        "kind": "reservation"
+        "updated": "2013-12-18T21:29:19.730Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:29:14.719Z", 
+        "amount": 0.224, 
+        "object": 119, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 3.2, 
+        "invoice": 67, 
+        "date": "2013-12-14T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59568, 
+    "pk": 61368, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:53.336Z", 
-        "slice": 13, 
-        "created": "2013-12-13T22:19:53.336Z", 
-        "amount": 0.56, 
-        "object": 101, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-09T14:00:00Z", 
-        "kind": "reservation"
+        "updated": "2013-12-18T21:29:19.771Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:29:14.727Z", 
+        "amount": 0.1736, 
+        "object": 119, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 2.48, 
+        "invoice": 67, 
+        "date": "2013-12-14T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59569, 
+    "pk": 61369, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:53.344Z", 
-        "slice": 13, 
-        "created": "2013-12-13T22:19:53.344Z", 
-        "amount": 0.56, 
-        "object": 101, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-09T22:00:00Z", 
-        "kind": "reservation"
+        "updated": "2013-12-18T21:29:19.821Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:29:14.736Z", 
+        "amount": 0.3136, 
+        "object": 119, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 4.48, 
+        "invoice": 67, 
+        "date": "2013-12-14T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59570, 
+    "pk": 61370, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:53.353Z", 
-        "slice": 13, 
-        "created": "2013-12-13T22:19:53.352Z", 
-        "amount": 0.56, 
-        "object": 101, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-10T06:00:00Z", 
-        "kind": "reservation"
+        "updated": "2013-12-18T21:29:19.862Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:29:14.744Z", 
+        "amount": 0.2352, 
+        "object": 119, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 3.36, 
+        "invoice": 67, 
+        "date": "2013-12-15T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59571, 
+    "pk": 61371, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:53.361Z", 
-        "slice": 13, 
-        "created": "2013-12-13T22:19:53.361Z", 
-        "amount": 0.56, 
-        "object": 101, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-10T14:00:00Z", 
-        "kind": "reservation"
+        "updated": "2013-12-18T21:29:19.904Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:29:14.752Z", 
+        "amount": 0.28, 
+        "object": 119, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 4.0, 
+        "invoice": 67, 
+        "date": "2013-12-15T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59572, 
+    "pk": 61372, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:53.369Z", 
-        "slice": 13, 
-        "created": "2013-12-13T22:19:53.369Z", 
-        "amount": 0.56, 
-        "object": 101, 
-        "account": 13, 
-        "state": "pending", 
-        "coreHours": 8.0, 
-        "invoice": null, 
-        "date": "2013-12-10T22:00:00Z", 
-        "kind": "reservation"
+        "updated": "2013-12-18T21:29:19.945Z", 
+        "slice": 14, 
+        "created": "2013-12-18T21:29:14.761Z", 
+        "amount": 0.2184, 
+        "object": 119, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 3.12, 
+        "invoice": 67, 
+        "date": "2013-12-15T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59573, 
+    "pk": 61373, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:53.377Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.377Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:14.769Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.769Z", 
+        "amount": 0.1288
+        "object": 119
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0
+        "coreHours": 1.84
         "invoice": null, 
-        "date": "2013-12-11T06:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-16T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59574, 
+    "pk": 61374, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:53.386Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.386Z", 
-        "amount": 0.56, 
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:14.777Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.777Z", 
+        "amount": 0.3136, 
+        "object": 119
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0
+        "coreHours": 4.48
         "invoice": null, 
-        "date": "2013-12-11T14:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-16T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59575, 
+    "pk": 61375, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:53.394Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.394Z", 
-        "amount": 0.56, 
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:14.785Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.785Z", 
+        "amount": 0.1456, 
+        "object": 119
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0
+        "coreHours": 2.08
         "invoice": null, 
-        "date": "2013-12-11T22:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-16T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59576, 
+    "pk": 61376, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:53.402Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.402Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:14.794Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.794Z", 
+        "amount": 0.3192
+        "object": 119
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0
+        "coreHours": 4.56
         "invoice": null, 
-        "date": "2013-12-12T06:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-17T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59577, 
+    "pk": 61377, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:53.411Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.410Z", 
-        "amount": 0.56, 
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:14.802Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.802Z", 
+        "amount": 0.1456, 
+        "object": 119
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0
+        "coreHours": 2.08
         "invoice": null, 
-        "date": "2013-12-12T14:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-17T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59578, 
+    "pk": 61378, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:53.419Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.419Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:14.810Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.810Z", 
+        "amount": 0.3304
+        "object": 119
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0
+        "coreHours": 4.72
         "invoice": null, 
-        "date": "2013-12-12T22:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-17T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59579, 
+    "pk": 61379, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:53.427Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.427Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:14.818Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.818Z", 
+        "amount": 0.28
+        "object": 119
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0, 
+        "coreHours": 4.0, 
         "invoice": null, 
-        "date": "2013-12-13T06:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-18T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59580, 
+    "pk": 61380, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:53.435Z", 
-        "slice": 13
-        "created": "2013-12-13T22:19:53.435Z", 
-        "amount": 0.56
-        "object": 101
-        "account": 13
+        "updated": "2013-12-18T21:29:14.827Z", 
+        "slice": 14
+        "created": "2013-12-18T21:29:14.827Z", 
+        "amount": 0.2352
+        "object": 119
+        "account": 14
         "state": "pending", 
-        "coreHours": 8.0
+        "coreHours": 3.36
         "invoice": null, 
-        "date": "2013-12-13T14:00:00Z", 
-        "kind": "reservation"
+        "date": "2013-12-18T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59581, 
+    "pk": 61381, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.051Z", 
+        "updated": "2013-12-18T21:29:16.452Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.467Z", 
-        "amount": 0.14
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:14.858Z", 
+        "amount": 0.252
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.0, 
-        "invoice": 54, 
-        "date": "2013-11-13T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.6, 
+        "invoice": 64, 
+        "date": "2013-11-18T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59582, 
+    "pk": 61382, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.092Z", 
+        "updated": "2013-12-18T21:29:16.494Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.477Z", 
-        "amount": 0.3024
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:14.868Z", 
+        "amount": 0.2688
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.32, 
-        "invoice": 54, 
-        "date": "2013-11-14T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.84, 
+        "invoice": 64, 
+        "date": "2013-11-19T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59583, 
+    "pk": 61383, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.134Z", 
+        "updated": "2013-12-18T21:29:16.535Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.485Z", 
-        "amount": 0.1512
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:14.876Z", 
+        "amount": 0.1736
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.16, 
-        "invoice": 54, 
-        "date": "2013-11-14T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.48, 
+        "invoice": 64, 
+        "date": "2013-11-19T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59584, 
+    "pk": 61384, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.175Z", 
+        "updated": "2013-12-18T21:29:16.576Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.493Z", 
+        "created": "2013-12-18T21:29:14.885Z", 
         "amount": 0.2464, 
-        "object": 102
-        "account": 12
+        "object": 120
+        "account": 14
         "state": "invoiced", 
         "coreHours": 3.52, 
-        "invoice": 54, 
-        "date": "2013-11-14T22:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 64, 
+        "date": "2013-11-19T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59585, 
+    "pk": 61385, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.216Z", 
+        "updated": "2013-12-18T21:29:16.618Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.502Z", 
-        "amount": 0.224
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:14.893Z", 
+        "amount": 0.196
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 54, 
-        "date": "2013-11-15T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 64, 
+        "date": "2013-11-20T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59586, 
+    "pk": 61386, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.258Z", 
+        "updated": "2013-12-18T21:29:16.659Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.510Z", 
-        "amount": 0.2464
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:14.901Z", 
+        "amount": 0.1232
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 54, 
-        "date": "2013-11-15T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.76, 
+        "invoice": 64, 
+        "date": "2013-11-20T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59587, 
+    "pk": 61387, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.299Z", 
+        "updated": "2013-12-18T21:29:16.700Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.518Z", 
-        "amount": 0.336
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:14.910Z", 
+        "amount": 0.14
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.8, 
-        "invoice": 54, 
-        "date": "2013-11-15T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.0, 
+        "invoice": 64, 
+        "date": "2013-11-20T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59588, 
+    "pk": 61388, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.341Z", 
+        "updated": "2013-12-18T21:29:16.742Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.527Z", 
-        "amount": 0.308
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:14.918Z", 
+        "amount": 0.1624
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 54, 
-        "date": "2013-11-16T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.32, 
+        "invoice": 64, 
+        "date": "2013-11-21T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59589, 
+    "pk": 61389, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.382Z", 
+        "updated": "2013-12-18T21:29:16.783Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.535Z", 
-        "amount": 0.2184
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:14.926Z", 
+        "amount": 0.196
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.12, 
-        "invoice": 54, 
-        "date": "2013-11-16T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 64, 
+        "date": "2013-11-21T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59590, 
+    "pk": 61390, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.423Z", 
+        "updated": "2013-12-18T21:29:16.825Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.543Z", 
-        "amount": 0.2352
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:14.934Z", 
+        "amount": 0.196
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 54, 
-        "date": "2013-11-16T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 64, 
+        "date": "2013-11-21T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59591, 
+    "pk": 61391, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.465Z", 
+        "updated": "2013-12-18T21:29:16.866Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.551Z", 
-        "amount": 0.2072, 
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:14.943Z", 
+        "amount": 0.1792, 
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.96, 
-        "invoice": 54, 
-        "date": "2013-11-17T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.56, 
+        "invoice": 64, 
+        "date": "2013-11-22T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59592, 
+    "pk": 61392, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.506Z", 
+        "updated": "2013-12-18T21:29:16.908Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.560Z", 
-        "amount": 0.2128, 
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:14.951Z", 
+        "amount": 0.168, 
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.04, 
-        "invoice": 54, 
-        "date": "2013-11-17T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.4, 
+        "invoice": 64, 
+        "date": "2013-11-22T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59593, 
+    "pk": 61393, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.548Z", 
+        "updated": "2013-12-18T21:29:16.949Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.568Z", 
-        "amount": 0.252
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:14.959Z", 
+        "amount": 0.1624
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.6, 
-        "invoice": 54, 
-        "date": "2013-11-17T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.32, 
+        "invoice": 64, 
+        "date": "2013-11-22T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59594, 
+    "pk": 61394, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.622Z", 
+        "updated": "2013-12-18T21:29:16.990Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.576Z", 
-        "amount": 0.1792
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:14.968Z", 
+        "amount": 0.2968
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.56, 
-        "invoice": 55, 
-        "date": "2013-11-18T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.24, 
+        "invoice": 64, 
+        "date": "2013-11-23T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59595, 
+    "pk": 61395, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.664Z", 
+        "updated": "2013-12-18T21:29:17.032Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.584Z", 
-        "amount": 0.196, 
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:14.976Z", 
+        "amount": 0.3136, 
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 55, 
-        "date": "2013-11-18T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.48, 
+        "invoice": 64, 
+        "date": "2013-11-23T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59596, 
+    "pk": 61396, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.705Z", 
+        "updated": "2013-12-18T21:29:17.073Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.593Z", 
-        "amount": 0.2632
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:14.984Z", 
+        "amount": 0.2576
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.76, 
-        "invoice": 55, 
-        "date": "2013-11-18T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.68, 
+        "invoice": 64, 
+        "date": "2013-11-23T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59597, 
+    "pk": 61397, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.747Z", 
+        "updated": "2013-12-18T21:29:17.115Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.601Z", 
-        "amount": 0.1344
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:14.992Z", 
+        "amount": 0.196
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 1.92, 
-        "invoice": 55, 
-        "date": "2013-11-19T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 64, 
+        "date": "2013-11-24T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59598, 
+    "pk": 61398, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.788Z", 
+        "updated": "2013-12-18T21:29:17.156Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.609Z", 
-        "amount": 0.3192, 
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.001Z", 
+        "amount": 0.2912, 
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.56, 
-        "invoice": 55, 
-        "date": "2013-11-19T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.16, 
+        "invoice": 64, 
+        "date": "2013-11-24T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59599, 
+    "pk": 61399, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.830Z", 
+        "updated": "2013-12-18T21:29:17.198Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.618Z", 
-        "amount": 0.1176
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.009Z", 
+        "amount": 0.2352
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 55, 
-        "date": "2013-11-19T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.36, 
+        "invoice": 64, 
+        "date": "2013-11-24T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59600, 
+    "pk": 61400, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.871Z", 
+        "updated": "2013-12-18T21:29:17.264Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.626Z", 
-        "amount": 0.2464
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.017Z", 
+        "amount": 0.1176
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 55, 
-        "date": "2013-11-20T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.68, 
+        "invoice": 65, 
+        "date": "2013-11-25T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59601, 
+    "pk": 61401, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.912Z", 
+        "updated": "2013-12-18T21:29:17.328Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.634Z", 
-        "amount": 0.336
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.025Z", 
+        "amount": 0.3024
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.8, 
-        "invoice": 55, 
-        "date": "2013-11-20T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.32, 
+        "invoice": 65, 
+        "date": "2013-11-25T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59602, 
+    "pk": 61402, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.954Z", 
+        "updated": "2013-12-18T21:29:17.369Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.642Z", 
-        "amount": 0.3248
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.034Z", 
+        "amount": 0.3136
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.64, 
-        "invoice": 55, 
-        "date": "2013-11-20T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.48, 
+        "invoice": 65, 
+        "date": "2013-11-25T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59603, 
+    "pk": 61403, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.995Z", 
+        "updated": "2013-12-18T21:29:17.410Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.651Z", 
-        "amount": 0.2856
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.042Z", 
+        "amount": 0.2744
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.08, 
-        "invoice": 55, 
-        "date": "2013-11-21T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.92, 
+        "invoice": 65, 
+        "date": "2013-11-26T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59604, 
+    "pk": 61404, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.036Z", 
+        "updated": "2013-12-18T21:29:17.452Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.659Z", 
-        "amount": 0.2296, 
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.050Z", 
+        "amount": 0.336, 
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.28, 
-        "invoice": 55, 
-        "date": "2013-11-21T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.8, 
+        "invoice": 65, 
+        "date": "2013-11-26T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59605, 
+    "pk": 61405, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.078Z", 
+        "updated": "2013-12-18T21:29:17.493Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.667Z", 
-        "amount": 0.2128
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.059Z", 
+        "amount": 0.2184
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.04, 
-        "invoice": 55, 
-        "date": "2013-11-21T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.12, 
+        "invoice": 65, 
+        "date": "2013-11-26T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59606, 
+    "pk": 61406, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.119Z", 
+        "updated": "2013-12-18T21:29:17.609Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.676Z", 
-        "amount": 0.252
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.067Z", 
+        "amount": 0.1176
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.6, 
-        "invoice": 55, 
-        "date": "2013-11-22T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.68, 
+        "invoice": 65, 
+        "date": "2013-11-27T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59607, 
+    "pk": 61407, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.161Z", 
+        "updated": "2013-12-18T21:29:17.651Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.684Z", 
-        "amount": 0.1904
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.075Z", 
+        "amount": 0.196
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.72, 
-        "invoice": 55, 
-        "date": "2013-11-22T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 65, 
+        "date": "2013-11-27T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59608, 
+    "pk": 61408, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.202Z", 
+        "updated": "2013-12-18T21:29:17.692Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.692Z", 
-        "amount": 0.1736
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.084Z", 
+        "amount": 0.1512
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.48, 
-        "invoice": 55, 
-        "date": "2013-11-22T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.16, 
+        "invoice": 65, 
+        "date": "2013-11-27T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59609, 
+    "pk": 61409, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.244Z", 
+        "updated": "2013-12-18T21:29:17.733Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.700Z", 
-        "amount": 0.2912
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.092Z", 
+        "amount": 0.196
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 55, 
-        "date": "2013-11-23T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 65, 
+        "date": "2013-11-28T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59610, 
+    "pk": 61410, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.285Z", 
+        "updated": "2013-12-18T21:29:17.775Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.709Z", 
-        "amount": 0.14
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.100Z", 
+        "amount": 0.2128
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.0, 
-        "invoice": 55, 
-        "date": "2013-11-23T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.04, 
+        "invoice": 65, 
+        "date": "2013-11-28T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59611, 
+    "pk": 61411, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.327Z", 
+        "updated": "2013-12-18T21:29:17.816Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.717Z", 
-        "amount": 0.3304
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.108Z", 
+        "amount": 0.3192
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.72, 
-        "invoice": 55, 
-        "date": "2013-11-23T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.56, 
+        "invoice": 65, 
+        "date": "2013-11-28T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59612, 
+    "pk": 61412, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.368Z", 
+        "updated": "2013-12-18T21:29:17.858Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.725Z", 
-        "amount": 0.1344, 
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.117Z", 
+        "amount": 0.224, 
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 1.92, 
-        "invoice": 55, 
-        "date": "2013-11-24T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.2, 
+        "invoice": 65, 
+        "date": "2013-11-29T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59613, 
+    "pk": 61413, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.409Z", 
+        "updated": "2013-12-18T21:29:17.899Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.734Z", 
-        "amount": 0.2352
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.125Z", 
+        "amount": 0.1624
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 55, 
-        "date": "2013-11-24T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.32, 
+        "invoice": 65, 
+        "date": "2013-11-29T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59614, 
+    "pk": 61414, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.451Z", 
+        "updated": "2013-12-18T21:29:17.940Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.742Z", 
-        "amount": 0.2352
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.133Z", 
+        "amount": 0.336
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 55, 
-        "date": "2013-11-24T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.8, 
+        "invoice": 65, 
+        "date": "2013-11-29T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59615, 
+    "pk": 61415, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.500Z", 
+        "updated": "2013-12-18T21:29:17.982Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.750Z", 
-        "amount": 0.2856
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.142Z", 
+        "amount": 0.1288
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.08, 
-        "invoice": 56, 
-        "date": "2013-11-25T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.84, 
+        "invoice": 65, 
+        "date": "2013-11-30T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59616, 
+    "pk": 61416, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.542Z", 
+        "updated": "2013-12-18T21:29:18.023Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.758Z", 
-        "amount": 0.1176, 
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.150Z", 
+        "amount": 0.2016, 
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 56, 
-        "date": "2013-11-25T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.88, 
+        "invoice": 65, 
+        "date": "2013-11-30T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59617, 
+    "pk": 61417, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.583Z", 
+        "updated": "2013-12-18T21:29:18.065Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.767Z", 
-        "amount": 0.3304
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.158Z", 
+        "amount": 0.2296
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.72, 
-        "invoice": 56, 
-        "date": "2013-11-25T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.28, 
+        "invoice": 65, 
+        "date": "2013-11-30T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59618, 
+    "pk": 61418, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.625Z", 
+        "updated": "2013-12-18T21:29:18.106Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.775Z", 
-        "amount": 0.1288, 
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.166Z", 
+        "amount": 0.1568, 
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 1.84, 
-        "invoice": 56, 
-        "date": "2013-11-26T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.24, 
+        "invoice": 65, 
+        "date": "2013-12-01T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59619, 
+    "pk": 61419, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.668Z", 
+        "updated": "2013-12-18T21:29:18.148Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.783Z", 
-        "amount": 0.1904
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.175Z", 
+        "amount": 0.2912
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.72, 
-        "invoice": 56, 
-        "date": "2013-11-26T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.16, 
+        "invoice": 65, 
+        "date": "2013-12-01T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59620, 
+    "pk": 61420, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.709Z", 
+        "updated": "2013-12-18T21:29:18.189Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.792Z", 
-        "amount": 0.2184
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.183Z", 
+        "amount": 0.1176
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.12, 
-        "invoice": 56, 
-        "date": "2013-11-26T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.68, 
+        "invoice": 65, 
+        "date": "2013-12-01T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59621, 
+    "pk": 61421, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.751Z", 
+        "updated": "2013-12-18T21:29:18.239Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.800Z", 
-        "amount": 0.2016
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.191Z", 
+        "amount": 0.14
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.88, 
-        "invoice": 56, 
-        "date": "2013-11-27T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.0, 
+        "invoice": 66, 
+        "date": "2013-12-02T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59622, 
+    "pk": 61422, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.792Z", 
+        "updated": "2013-12-18T21:29:18.280Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.808Z", 
-        "amount": 0.2856, 
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.200Z", 
+        "amount": 0.1456, 
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.08, 
-        "invoice": 56, 
-        "date": "2013-11-27T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 66, 
+        "date": "2013-12-02T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59623, 
+    "pk": 61423, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.833Z", 
+        "updated": "2013-12-18T21:29:18.321Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.816Z", 
-        "amount": 0.3024
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.208Z", 
+        "amount": 0.1848
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.32, 
-        "invoice": 56, 
-        "date": "2013-11-27T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.64, 
+        "invoice": 66, 
+        "date": "2013-12-02T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59624, 
+    "pk": 61424, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.875Z", 
+        "updated": "2013-12-18T21:29:18.363Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.825Z", 
-        "amount": 0.1232
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.216Z", 
+        "amount": 0.2688
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 1.76, 
-        "invoice": 56, 
-        "date": "2013-11-28T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.84, 
+        "invoice": 66, 
+        "date": "2013-12-03T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59625, 
+    "pk": 61425, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.916Z", 
+        "updated": "2013-12-18T21:29:18.404Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.833Z", 
+        "created": "2013-12-18T21:29:15.224Z", 
         "amount": 0.252, 
-        "object": 102
-        "account": 12
+        "object": 120
+        "account": 14
         "state": "invoiced", 
         "coreHours": 3.6, 
-        "invoice": 56, 
-        "date": "2013-11-28T14:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 66, 
+        "date": "2013-12-03T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59626, 
+    "pk": 61426, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.958Z", 
+        "updated": "2013-12-18T21:29:18.446Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.841Z", 
-        "amount": 0.224, 
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.233Z", 
+        "amount": 0.3304, 
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 56, 
-        "date": "2013-11-28T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.72, 
+        "invoice": 66, 
+        "date": "2013-12-03T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59627, 
+    "pk": 61427, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.999Z", 
+        "updated": "2013-12-18T21:29:18.487Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.850Z", 
-        "amount": 0.336
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.241Z", 
+        "amount": 0.2968
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.8, 
-        "invoice": 56, 
-        "date": "2013-11-29T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.24, 
+        "invoice": 66, 
+        "date": "2013-12-04T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59628, 
+    "pk": 61428, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.041Z", 
+        "updated": "2013-12-18T21:29:18.529Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.858Z", 
-        "amount": 0.336
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.249Z", 
+        "amount": 0.2072
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.8, 
-        "invoice": 56, 
-        "date": "2013-11-29T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.96, 
+        "invoice": 66, 
+        "date": "2013-12-04T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59629, 
+    "pk": 61429, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.082Z", 
+        "updated": "2013-12-18T21:29:18.570Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.866Z", 
-        "amount": 0.1512
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.258Z", 
+        "amount": 0.2408
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.16, 
-        "invoice": 56, 
-        "date": "2013-11-29T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.44, 
+        "invoice": 66, 
+        "date": "2013-12-04T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59630, 
+    "pk": 61430, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.115Z", 
+        "updated": "2013-12-18T21:29:18.611Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.874Z", 
-        "amount": 0.112
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.266Z", 
+        "amount": 0.196
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 1.6, 
-        "invoice": 56, 
-        "date": "2013-11-30T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 66, 
+        "date": "2013-12-05T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59631, 
+    "pk": 61431, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.156Z", 
+        "updated": "2013-12-18T21:29:18.653Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.883Z", 
-        "amount": 0.3304
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.274Z", 
+        "amount": 0.1568
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.72, 
-        "invoice": 56, 
-        "date": "2013-11-30T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.24, 
+        "invoice": 66, 
+        "date": "2013-12-05T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59632, 
+    "pk": 61432, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.198Z", 
+        "updated": "2013-12-18T21:29:18.694Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.891Z", 
-        "amount": 0.112, 
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.282Z", 
+        "amount": 0.1792, 
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 1.6, 
-        "invoice": 56, 
-        "date": "2013-11-30T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.56, 
+        "invoice": 66, 
+        "date": "2013-12-05T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59633, 
+    "pk": 61433, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.239Z", 
+        "updated": "2013-12-18T21:29:18.736Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.899Z", 
+        "created": "2013-12-18T21:29:15.291Z", 
         "amount": 0.14, 
-        "object": 102
-        "account": 12
+        "object": 120
+        "account": 14
         "state": "invoiced", 
         "coreHours": 2.0, 
-        "invoice": 56, 
-        "date": "2013-12-01T06:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 66, 
+        "date": "2013-12-06T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59634, 
+    "pk": 61434, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.281Z", 
+        "updated": "2013-12-18T21:29:18.777Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.908Z", 
-        "amount": 0.2912
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.299Z", 
+        "amount": 0.1904
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 56, 
-        "date": "2013-12-01T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.72, 
+        "invoice": 66, 
+        "date": "2013-12-06T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59635, 
+    "pk": 61435, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.322Z", 
+        "updated": "2013-12-18T21:29:18.819Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.916Z", 
-        "amount": 0.2072
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.307Z", 
+        "amount": 0.1568
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.96, 
-        "invoice": 56, 
-        "date": "2013-12-01T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.24, 
+        "invoice": 66, 
+        "date": "2013-12-06T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59636, 
+    "pk": 61436, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.372Z", 
+        "updated": "2013-12-18T21:29:18.860Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.924Z", 
-        "amount": 0.2688
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.315Z", 
+        "amount": 0.196
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.84, 
-        "invoice": 57, 
-        "date": "2013-12-02T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 66, 
+        "date": "2013-12-07T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59637, 
+    "pk": 61437, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.413Z", 
+        "updated": "2013-12-18T21:29:18.901Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.932Z", 
-        "amount": 0.196
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.324Z", 
+        "amount": 0.1624
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 57, 
-        "date": "2013-12-02T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.32, 
+        "invoice": 66, 
+        "date": "2013-12-07T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59638, 
+    "pk": 61438, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.455Z", 
+        "updated": "2013-12-18T21:29:18.943Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.941Z", 
-        "amount": 0.1232, 
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.332Z", 
+        "amount": 0.2912, 
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 1.76, 
-        "invoice": 57, 
-        "date": "2013-12-02T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.16, 
+        "invoice": 66, 
+        "date": "2013-12-07T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59639, 
+    "pk": 61439, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.496Z", 
+        "updated": "2013-12-18T21:29:18.984Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.949Z", 
-        "amount": 0.308
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.340Z", 
+        "amount": 0.2352
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 57, 
-        "date": "2013-12-03T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.36, 
+        "invoice": 66, 
+        "date": "2013-12-08T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59640, 
+    "pk": 61440, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.538Z", 
+        "updated": "2013-12-18T21:29:19.026Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.957Z", 
-        "amount": 0.2688
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.348Z", 
+        "amount": 0.1736
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.84, 
-        "invoice": 57, 
-        "date": "2013-12-03T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.48, 
+        "invoice": 66, 
+        "date": "2013-12-08T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59641, 
+    "pk": 61441, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.579Z", 
+        "updated": "2013-12-18T21:29:19.067Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.966Z", 
-        "amount": 0.112
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.357Z", 
+        "amount": 0.336
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 1.6, 
-        "invoice": 57, 
-        "date": "2013-12-03T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.8, 
+        "invoice": 66, 
+        "date": "2013-12-08T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59642, 
+    "pk": 61442, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.620Z", 
+        "updated": "2013-12-18T21:29:19.117Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.974Z", 
-        "amount": 0.28
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.365Z", 
+        "amount": 0.3136
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.0, 
-        "invoice": 57, 
-        "date": "2013-12-04T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.48, 
+        "invoice": 67, 
+        "date": "2013-12-09T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59643, 
+    "pk": 61443, 
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.662Z", 
+        "updated": "2013-12-18T21:29:19.158Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.982Z", 
-        "amount": 0.3024, 
-        "object": 102, 
-        "account": 12, 
+        "created": "2013-12-18T21:29:15.373Z", 
+        "amount": 0.2744, 
+        "object": 120, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 3.92, 
+        "invoice": 67, 
+        "date": "2013-12-09T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
+    }
+},
+{
+    "pk": 61444, 
+    "model": "core.charge", 
+    "fields": {
+        "updated": "2013-12-18T21:29:19.200Z", 
+        "slice": 15, 
+        "created": "2013-12-18T21:29:15.382Z", 
+        "amount": 0.1176, 
+        "object": 120, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 1.68, 
+        "invoice": 67, 
+        "date": "2013-12-09T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
+    }
+},
+{
+    "pk": 61445, 
+    "model": "core.charge", 
+    "fields": {
+        "updated": "2013-12-18T21:29:19.241Z", 
+        "slice": 15, 
+        "created": "2013-12-18T21:29:15.390Z", 
+        "amount": 0.1456, 
+        "object": 120, 
+        "account": 14, 
         "state": "invoiced", 
-        "coreHours": 4.32, 
-        "invoice": 57, 
-        "date": "2013-12-04T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 67, 
+        "date": "2013-12-10T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59644
+    "pk": 61446
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.703Z", 
+        "updated": "2013-12-18T21:29:19.283Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.990Z", 
-        "amount": 0.1512
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.398Z", 
+        "amount": 0.1344
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.16, 
-        "invoice": 57, 
-        "date": "2013-12-04T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.92, 
+        "invoice": 67, 
+        "date": "2013-12-10T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59645
+    "pk": 61447
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.745Z", 
+        "updated": "2013-12-18T21:29:19.324Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:53.999Z", 
-        "amount": 0.14, 
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.407Z", 
+        "amount": 0.1456
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.0, 
-        "invoice": 57, 
-        "date": "2013-12-05T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 67, 
+        "date": "2013-12-10T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59646
+    "pk": 61448
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.786Z", 
+        "updated": "2013-12-18T21:29:19.365Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.007Z", 
-        "amount": 0.14
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.415Z", 
+        "amount": 0.112
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.0, 
-        "invoice": 57, 
-        "date": "2013-12-05T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.6, 
+        "invoice": 67, 
+        "date": "2013-12-11T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59647
+    "pk": 61449
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.828Z", 
+        "updated": "2013-12-18T21:29:19.407Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.015Z", 
+        "created": "2013-12-18T21:29:15.423Z", 
         "amount": 0.14, 
-        "object": 102
-        "account": 12
+        "object": 120
+        "account": 14
         "state": "invoiced", 
         "coreHours": 2.0, 
-        "invoice": 57, 
-        "date": "2013-12-05T22:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 67, 
+        "date": "2013-12-11T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59648
+    "pk": 61450
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.869Z", 
+        "updated": "2013-12-18T21:29:19.448Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.024Z", 
-        "amount": 0.2632
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.431Z", 
+        "amount": 0.2744
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.76, 
-        "invoice": 57, 
-        "date": "2013-12-06T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.92, 
+        "invoice": 67, 
+        "date": "2013-12-11T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59649
+    "pk": 61451
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.910Z", 
+        "updated": "2013-12-18T21:29:19.490Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.032Z", 
-        "amount": 0.2632
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.440Z", 
+        "amount": 0.2408
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.76, 
-        "invoice": 57, 
-        "date": "2013-12-06T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.44, 
+        "invoice": 67, 
+        "date": "2013-12-12T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59650
+    "pk": 61452
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.952Z", 
+        "updated": "2013-12-18T21:29:19.531Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.040Z", 
-        "amount": 0.2856
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.448Z", 
+        "amount": 0.1848
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.08, 
-        "invoice": 57, 
-        "date": "2013-12-06T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.64, 
+        "invoice": 67, 
+        "date": "2013-12-12T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59651
+    "pk": 61453
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.993Z", 
+        "updated": "2013-12-18T21:29:19.572Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.048Z", 
-        "amount": 0.2744
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.456Z", 
+        "amount": 0.308
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.92, 
-        "invoice": 57, 
-        "date": "2013-12-07T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.4, 
+        "invoice": 67, 
+        "date": "2013-12-12T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59652
+    "pk": 61454
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.035Z", 
+        "updated": "2013-12-18T21:29:19.614Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.057Z", 
-        "amount": 0.2632
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.464Z", 
+        "amount": 0.1568
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.76, 
-        "invoice": 57, 
-        "date": "2013-12-07T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.24, 
+        "invoice": 67, 
+        "date": "2013-12-13T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59653
+    "pk": 61455
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.076Z", 
+        "updated": "2013-12-18T21:29:19.655Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.065Z", 
-        "amount": 0.1176
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.473Z", 
+        "amount": 0.14
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 57, 
-        "date": "2013-12-07T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.0, 
+        "invoice": 67, 
+        "date": "2013-12-13T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59654
+    "pk": 61456
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.117Z", 
+        "updated": "2013-12-18T21:29:19.697Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.073Z", 
-        "amount": 0.1792
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.481Z", 
+        "amount": 0.1568
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.56, 
-        "invoice": 57, 
-        "date": "2013-12-08T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.24, 
+        "invoice": 67, 
+        "date": "2013-12-13T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59655
+    "pk": 61457
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.159Z", 
+        "updated": "2013-12-18T21:29:19.738Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.081Z", 
-        "amount": 0.1456, 
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.489Z", 
+        "amount": 0.336, 
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.08, 
-        "invoice": 57, 
-        "date": "2013-12-08T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.8, 
+        "invoice": 67, 
+        "date": "2013-12-14T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59656
+    "pk": 61458
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.200Z", 
+        "updated": "2013-12-18T21:29:19.779Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.090Z", 
-        "amount": 0.1176
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.498Z", 
+        "amount": 0.2072
+        "object": 120
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 57, 
-        "date": "2013-12-08T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.96, 
+        "invoice": 67, 
+        "date": "2013-12-14T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59657
+    "pk": 61459
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.098Z", 
+        "updated": "2013-12-18T21:29:19.829Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.098Z", 
-        "amount": 0.2464, 
-        "object": 102, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 3.52, 
-        "invoice": null, 
-        "date": "2013-12-09T06:00:00Z", 
-        "kind": "besteffort"
+        "created": "2013-12-18T21:29:15.506Z", 
+        "amount": 0.2688, 
+        "object": 120, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 3.84, 
+        "invoice": 67, 
+        "date": "2013-12-14T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59658
+    "pk": 61460
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.106Z", 
+        "updated": "2013-12-18T21:29:19.871Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.106Z", 
-        "amount": 0.252, 
-        "object": 102, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 3.6, 
-        "invoice": null, 
-        "date": "2013-12-09T14:00:00Z", 
-        "kind": "besteffort"
+        "created": "2013-12-18T21:29:15.516Z", 
+        "amount": 0.3248, 
+        "object": 120, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 4.64, 
+        "invoice": 67, 
+        "date": "2013-12-15T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59659
+    "pk": 61461
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.115Z", 
+        "updated": "2013-12-18T21:29:19.912Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.115Z", 
-        "amount": 0.2016, 
-        "object": 102, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 2.88, 
-        "invoice": null, 
-        "date": "2013-12-09T22:00:00Z", 
-        "kind": "besteffort"
+        "created": "2013-12-18T21:29:15.524Z", 
+        "amount": 0.1624, 
+        "object": 120, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 2.32, 
+        "invoice": 67, 
+        "date": "2013-12-15T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59660
+    "pk": 61462
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.123Z", 
+        "updated": "2013-12-18T21:29:19.953Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.123Z", 
-        "amount": 0.3024, 
-        "object": 102, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 4.32, 
-        "invoice": null, 
-        "date": "2013-12-10T06:00:00Z", 
-        "kind": "besteffort"
+        "created": "2013-12-18T21:29:15.533Z", 
+        "amount": 0.1176, 
+        "object": 120, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 1.68, 
+        "invoice": 67, 
+        "date": "2013-12-15T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59661
+    "pk": 61463
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.131Z", 
+        "updated": "2013-12-18T21:29:15.541Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.131Z", 
+        "created": "2013-12-18T21:29:15.541Z", 
         "amount": 0.3192, 
-        "object": 102
-        "account": 12
+        "object": 120
+        "account": 14
         "state": "pending", 
         "coreHours": 4.56, 
         "invoice": null, 
-        "date": "2013-12-10T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59662
+    "pk": 61464
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.140Z", 
+        "updated": "2013-12-18T21:29:15.549Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.139Z", 
-        "amount": 0.336, 
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.549Z", 
+        "amount": 0.3136, 
+        "object": 120
+        "account": 14
         "state": "pending", 
-        "coreHours": 4.8, 
+        "coreHours": 4.48, 
         "invoice": null, 
-        "date": "2013-12-10T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59663
+    "pk": 61465
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.148Z", 
+        "updated": "2013-12-18T21:29:15.557Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.148Z", 
-        "amount": 0.3024
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.557Z", 
+        "amount": 0.1456
+        "object": 120
+        "account": 14
         "state": "pending", 
-        "coreHours": 4.32
+        "coreHours": 2.08
         "invoice": null, 
-        "date": "2013-12-11T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59664
+    "pk": 61466
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.156Z", 
+        "updated": "2013-12-18T21:29:15.566Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.156Z", 
-        "amount": 0.2128, 
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.566Z", 
+        "amount": 0.28, 
+        "object": 120
+        "account": 14
         "state": "pending", 
-        "coreHours": 3.04
+        "coreHours": 4.0
         "invoice": null, 
-        "date": "2013-12-11T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59665
+    "pk": 61467
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.164Z", 
+        "updated": "2013-12-18T21:29:15.574Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.164Z", 
-        "amount": 0.2296
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.574Z", 
+        "amount": 0.2072
+        "object": 120
+        "account": 14
         "state": "pending", 
-        "coreHours": 3.28
+        "coreHours": 2.96
         "invoice": null, 
-        "date": "2013-12-11T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59666
+    "pk": 61468
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.173Z", 
+        "updated": "2013-12-18T21:29:15.582Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.173Z", 
-        "amount": 0.1288
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.582Z", 
+        "amount": 0.2352
+        "object": 120
+        "account": 14
         "state": "pending", 
-        "coreHours": 1.84
+        "coreHours": 3.36
         "invoice": null, 
-        "date": "2013-12-12T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59667
+    "pk": 61469
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.181Z", 
+        "updated": "2013-12-18T21:29:15.591Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.181Z", 
-        "amount": 0.2912
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.590Z", 
+        "amount": 0.336
+        "object": 120
+        "account": 14
         "state": "pending", 
-        "coreHours": 4.16
+        "coreHours": 4.8
         "invoice": null, 
-        "date": "2013-12-12T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-18T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59668
+    "pk": 61470
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.189Z", 
+        "updated": "2013-12-18T21:29:15.599Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.189Z", 
-        "amount": 0.224
-        "object": 102
-        "account": 12
+        "created": "2013-12-18T21:29:15.599Z", 
+        "amount": 0.1232
+        "object": 120
+        "account": 14
         "state": "pending", 
-        "coreHours": 3.2
+        "coreHours": 1.76
         "invoice": null, 
-        "date": "2013-12-12T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-18T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59669
+    "pk": 61471
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.197Z", 
+        "updated": "2013-12-18T21:29:16.460Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.197Z", 
-        "amount": 0.168, 
-        "object": 102, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 2.4, 
-        "invoice": null, 
-        "date": "2013-12-13T06:00:00Z", 
-        "kind": "besteffort"
+        "created": "2013-12-18T21:29:15.614Z", 
+        "amount": 0.1848, 
+        "object": 121, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 2.64, 
+        "invoice": 64, 
+        "date": "2013-11-18T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59670
+    "pk": 61472
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.206Z", 
+        "updated": "2013-12-18T21:29:16.502Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.206Z", 
-        "amount": 0.3136, 
-        "object": 102, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 4.48, 
-        "invoice": null, 
-        "date": "2013-12-13T14:00:00Z", 
-        "kind": "besteffort"
+        "created": "2013-12-18T21:29:15.624Z", 
+        "amount": 0.2464, 
+        "object": 121, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 3.52, 
+        "invoice": 64, 
+        "date": "2013-11-19T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59671
+    "pk": 61473
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.034Z", 
+        "updated": "2013-12-18T21:29:16.543Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.221Z", 
-        "amount": 0.1176, 
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.632Z", 
+        "amount": 0.1456, 
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 1.68, 
-        "invoice": 53, 
-        "date": "2013-11-13T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 64, 
+        "date": "2013-11-19T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59672
+    "pk": 61474
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.084Z", 
+        "updated": "2013-12-18T21:29:16.585Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.231Z", 
-        "amount": 0.2968
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.640Z", 
+        "amount": 0.2184
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.24, 
-        "invoice": 54, 
-        "date": "2013-11-14T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.12, 
+        "invoice": 64, 
+        "date": "2013-11-19T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59673
+    "pk": 61475
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.125Z", 
+        "updated": "2013-12-18T21:29:16.626Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.239Z", 
-        "amount": 0.2016
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.649Z", 
+        "amount": 0.252
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.88, 
-        "invoice": 54, 
-        "date": "2013-11-14T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.6, 
+        "invoice": 64, 
+        "date": "2013-11-20T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59674
+    "pk": 61476
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.167Z", 
+        "updated": "2013-12-18T21:29:16.667Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.247Z", 
-        "amount": 0.224
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.657Z", 
+        "amount": 0.2352
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 54, 
-        "date": "2013-11-14T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.36, 
+        "invoice": 64, 
+        "date": "2013-11-20T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59675
+    "pk": 61477
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.208Z", 
+        "updated": "2013-12-18T21:29:16.709Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.255Z", 
-        "amount": 0.308, 
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.665Z", 
+        "amount": 0.2408, 
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.4, 
-        "invoice": 54, 
-        "date": "2013-11-15T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.44, 
+        "invoice": 64, 
+        "date": "2013-11-20T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59676
+    "pk": 61478
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.250Z", 
+        "updated": "2013-12-18T21:29:16.750Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.264Z", 
-        "amount": 0.1288, 
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.673Z", 
+        "amount": 0.168, 
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 1.84, 
-        "invoice": 54, 
-        "date": "2013-11-15T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.4, 
+        "invoice": 64, 
+        "date": "2013-11-21T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59677
+    "pk": 61479
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.291Z", 
+        "updated": "2013-12-18T21:29:16.792Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.272Z", 
-        "amount": 0.112
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.682Z", 
+        "amount": 0.1904
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 1.6, 
-        "invoice": 54, 
-        "date": "2013-11-15T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.72, 
+        "invoice": 64, 
+        "date": "2013-11-21T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59678
+    "pk": 61480
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.332Z", 
+        "updated": "2013-12-18T21:29:16.833Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.280Z", 
-        "amount": 0.1568
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.690Z", 
+        "amount": 0.14
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.24, 
-        "invoice": 54, 
-        "date": "2013-11-16T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.0, 
+        "invoice": 64, 
+        "date": "2013-11-21T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59679
+    "pk": 61481
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.374Z", 
+        "updated": "2013-12-18T21:29:16.874Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.289Z", 
-        "amount": 0.1848, 
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.698Z", 
+        "amount": 0.3248, 
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.64, 
-        "invoice": 54, 
-        "date": "2013-11-16T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.64, 
+        "invoice": 64, 
+        "date": "2013-11-22T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59680
+    "pk": 61482
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.415Z", 
+        "updated": "2013-12-18T21:29:16.916Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.297Z", 
-        "amount": 0.2912, 
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.707Z", 
+        "amount": 0.2072, 
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 54, 
-        "date": "2013-11-16T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.96, 
+        "invoice": 64, 
+        "date": "2013-11-22T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59681
+    "pk": 61483
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.457Z", 
+        "updated": "2013-12-18T21:29:16.957Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.305Z", 
-        "amount": 0.2128
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.715Z", 
+        "amount": 0.1736
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.04, 
-        "invoice": 54, 
-        "date": "2013-11-17T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.48, 
+        "invoice": 64, 
+        "date": "2013-11-22T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59682
+    "pk": 61484
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.498Z", 
+        "updated": "2013-12-18T21:29:16.999Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.314Z", 
-        "amount": 0.1624, 
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.723Z", 
+        "amount": 0.1904, 
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.32, 
-        "invoice": 54, 
-        "date": "2013-11-17T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.72, 
+        "invoice": 64, 
+        "date": "2013-11-23T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59683
+    "pk": 61485
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.539Z", 
+        "updated": "2013-12-18T21:29:17.040Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.322Z", 
-        "amount": 0.2352
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.731Z", 
+        "amount": 0.2744
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 54, 
-        "date": "2013-11-17T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.92, 
+        "invoice": 64, 
+        "date": "2013-11-23T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59684
+    "pk": 61486
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.614Z", 
+        "updated": "2013-12-18T21:29:17.081Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.330Z", 
-        "amount": 0.1512
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.740Z", 
+        "amount": 0.2184
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.16, 
-        "invoice": 55, 
-        "date": "2013-11-18T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.12, 
+        "invoice": 64, 
+        "date": "2013-11-23T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59685
+    "pk": 61487
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.655Z", 
+        "updated": "2013-12-18T21:29:17.123Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.339Z", 
-        "amount": 0.112, 
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.748Z", 
+        "amount": 0.2912, 
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 1.6, 
-        "invoice": 55, 
-        "date": "2013-11-18T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.16, 
+        "invoice": 64, 
+        "date": "2013-11-24T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59686
+    "pk": 61488
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.697Z", 
+        "updated": "2013-12-18T21:29:17.164Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.347Z", 
-        "amount": 0.3024
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.756Z", 
+        "amount": 0.3136
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.32, 
-        "invoice": 55, 
-        "date": "2013-11-18T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.48, 
+        "invoice": 64, 
+        "date": "2013-11-24T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59687
+    "pk": 61489
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.738Z", 
+        "updated": "2013-12-18T21:29:17.206Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.355Z", 
-        "amount": 0.2744
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.765Z", 
+        "amount": 0.168
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.92, 
-        "invoice": 55, 
-        "date": "2013-11-19T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.4, 
+        "invoice": 64, 
+        "date": "2013-11-24T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59688
+    "pk": 61490
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.780Z", 
+        "updated": "2013-12-18T21:29:17.278Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.363Z", 
-        "amount": 0.196
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.773Z", 
+        "amount": 0.224
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 55, 
-        "date": "2013-11-19T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.2, 
+        "invoice": 65, 
+        "date": "2013-11-25T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59689
+    "pk": 61491
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.821Z", 
+        "updated": "2013-12-18T21:29:17.336Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.371Z", 
+        "created": "2013-12-18T21:29:15.781Z", 
         "amount": 0.2856, 
-        "object": 103
-        "account": 12
+        "object": 121
+        "account": 14
         "state": "invoiced", 
         "coreHours": 4.08, 
-        "invoice": 55, 
-        "date": "2013-11-19T22:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 65, 
+        "date": "2013-11-25T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59690
+    "pk": 61492
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.863Z", 
+        "updated": "2013-12-18T21:29:17.377Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.380Z", 
-        "amount": 0.28
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.789Z", 
+        "amount": 0.336
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.0, 
-        "invoice": 55, 
-        "date": "2013-11-20T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.8, 
+        "invoice": 65, 
+        "date": "2013-11-25T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59691
+    "pk": 61493
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.904Z", 
+        "updated": "2013-12-18T21:29:17.419Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.388Z", 
-        "amount": 0.2576, 
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.798Z", 
+        "amount": 0.1736, 
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.68, 
-        "invoice": 55, 
-        "date": "2013-11-20T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.48, 
+        "invoice": 65, 
+        "date": "2013-11-26T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59692
+    "pk": 61494
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.945Z", 
+        "updated": "2013-12-18T21:29:17.460Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.396Z", 
-        "amount": 0.112, 
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.806Z", 
+        "amount": 0.1792, 
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 1.6, 
-        "invoice": 55, 
-        "date": "2013-11-20T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.56, 
+        "invoice": 65, 
+        "date": "2013-11-26T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59693
+    "pk": 61495
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:55.987Z", 
+        "updated": "2013-12-18T21:29:17.501Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.405Z", 
-        "amount": 0.3248, 
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.814Z", 
+        "amount": 0.1288, 
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.64, 
-        "invoice": 55, 
-        "date": "2013-11-21T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.84, 
+        "invoice": 65, 
+        "date": "2013-11-26T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59694
+    "pk": 61496
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.028Z", 
+        "updated": "2013-12-18T21:29:17.618Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.413Z", 
-        "amount": 0.2352
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.822Z", 
+        "amount": 0.2744
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 55, 
-        "date": "2013-11-21T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.92, 
+        "invoice": 65, 
+        "date": "2013-11-27T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59695
+    "pk": 61497
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.070Z", 
+        "updated": "2013-12-18T21:29:17.659Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.421Z", 
-        "amount": 0.1904
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.831Z", 
+        "amount": 0.196
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.72, 
-        "invoice": 55, 
-        "date": "2013-11-21T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 65, 
+        "date": "2013-11-27T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59696
+    "pk": 61498
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.111Z", 
+        "updated": "2013-12-18T21:29:17.700Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.429Z", 
-        "amount": 0.2408
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.839Z", 
+        "amount": 0.2296
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.44, 
-        "invoice": 55, 
-        "date": "2013-11-22T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.28, 
+        "invoice": 65, 
+        "date": "2013-11-27T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59697
+    "pk": 61499
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.153Z", 
+        "updated": "2013-12-18T21:29:17.742Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.438Z", 
+        "created": "2013-12-18T21:29:15.847Z", 
         "amount": 0.1288, 
-        "object": 103
-        "account": 12
+        "object": 121
+        "account": 14
         "state": "invoiced", 
         "coreHours": 1.84, 
-        "invoice": 55, 
-        "date": "2013-11-22T14:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 65, 
+        "date": "2013-11-28T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59698
+    "pk": 61500
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.194Z", 
+        "updated": "2013-12-18T21:29:17.783Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.446Z", 
-        "amount": 0.2968
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.856Z", 
+        "amount": 0.2912
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.24, 
-        "invoice": 55, 
-        "date": "2013-11-22T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.16, 
+        "invoice": 65, 
+        "date": "2013-11-28T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59699
+    "pk": 61501
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.235Z", 
+        "updated": "2013-12-18T21:29:17.824Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.454Z", 
+        "created": "2013-12-18T21:29:15.864Z", 
         "amount": 0.2464, 
-        "object": 103
-        "account": 12
+        "object": 121
+        "account": 14
         "state": "invoiced", 
         "coreHours": 3.52, 
-        "invoice": 55, 
-        "date": "2013-11-23T06:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 65, 
+        "date": "2013-11-28T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59700
+    "pk": 61502
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.277Z", 
+        "updated": "2013-12-18T21:29:17.866Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.463Z", 
-        "amount": 0.196, 
-        "object": 103, 
-        "account": 12, 
-        "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 55, 
-        "date": "2013-11-23T14:00:00Z", 
-        "kind": "besteffort"
-    }
-},
-{
-    "pk": 59701, 
-    "model": "core.charge", 
-    "fields": {
-        "updated": "2013-12-13T22:19:56.318Z", 
-        "slice": 15, 
-        "created": "2013-12-13T22:19:54.471Z", 
-        "amount": 0.28, 
-        "object": 103, 
-        "account": 12, 
+        "created": "2013-12-18T21:29:15.872Z", 
+        "amount": 0.224, 
+        "object": 121, 
+        "account": 14, 
         "state": "invoiced", 
-        "coreHours": 4.0, 
-        "invoice": 55, 
-        "date": "2013-11-23T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.2, 
+        "invoice": 65, 
+        "date": "2013-11-29T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59702
+    "pk": 61503
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.360Z", 
+        "updated": "2013-12-18T21:29:17.907Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.479Z", 
-        "amount": 0.2016
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.880Z", 
+        "amount": 0.2408
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.88, 
-        "invoice": 55, 
-        "date": "2013-11-24T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.44, 
+        "invoice": 65, 
+        "date": "2013-11-29T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59703
+    "pk": 61504
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.401Z", 
+        "updated": "2013-12-18T21:29:17.949Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.487Z", 
-        "amount": 0.1792
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.889Z", 
+        "amount": 0.1456
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.56, 
-        "invoice": 55, 
-        "date": "2013-11-24T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 65, 
+        "date": "2013-11-29T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59704
+    "pk": 61505
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.442Z", 
+        "updated": "2013-12-18T21:29:17.990Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.496Z", 
-        "amount": 0.2128, 
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.897Z", 
+        "amount": 0.1848, 
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.04, 
-        "invoice": 55, 
-        "date": "2013-11-24T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.64, 
+        "invoice": 65, 
+        "date": "2013-11-30T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59705
+    "pk": 61506
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.492Z", 
+        "updated": "2013-12-18T21:29:18.032Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.504Z", 
-        "amount": 0.2016, 
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.905Z", 
+        "amount": 0.2576, 
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.88, 
-        "invoice": 56, 
-        "date": "2013-11-25T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.68, 
+        "invoice": 65, 
+        "date": "2013-11-30T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59706
+    "pk": 61507
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.534Z", 
+        "updated": "2013-12-18T21:29:18.073Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.512Z", 
-        "amount": 0.1456
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.914Z", 
+        "amount": 0.2128
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.08, 
-        "invoice": 56, 
-        "date": "2013-11-25T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.04, 
+        "invoice": 65, 
+        "date": "2013-11-30T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59707
+    "pk": 61508
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.575Z", 
+        "updated": "2013-12-18T21:29:18.114Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.521Z", 
-        "amount": 0.2688, 
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.922Z", 
+        "amount": 0.3248, 
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.84, 
-        "invoice": 56, 
-        "date": "2013-11-25T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.64, 
+        "invoice": 65, 
+        "date": "2013-12-01T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59708
+    "pk": 61509
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.616Z", 
+        "updated": "2013-12-18T21:29:18.156Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.529Z", 
-        "amount": 0.336
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.930Z", 
+        "amount": 0.224
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.8, 
-        "invoice": 56, 
-        "date": "2013-11-26T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.2, 
+        "invoice": 65, 
+        "date": "2013-12-01T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59709
+    "pk": 61510
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.659Z", 
+        "updated": "2013-12-18T21:29:18.197Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.537Z", 
-        "amount": 0.112
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.938Z", 
+        "amount": 0.3136
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 1.6, 
-        "invoice": 56, 
-        "date": "2013-11-26T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.48, 
+        "invoice": 65, 
+        "date": "2013-12-01T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59710
+    "pk": 61511
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.701Z", 
+        "updated": "2013-12-18T21:29:18.247Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.545Z", 
-        "amount": 0.2968
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.947Z", 
+        "amount": 0.2912
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.24, 
-        "invoice": 56, 
-        "date": "2013-11-26T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.16, 
+        "invoice": 66, 
+        "date": "2013-12-02T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59711
+    "pk": 61512
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.742Z", 
+        "updated": "2013-12-18T21:29:18.288Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.554Z", 
-        "amount": 0.1232, 
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.955Z", 
+        "amount": 0.252, 
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 1.76, 
-        "invoice": 56, 
-        "date": "2013-11-27T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.6, 
+        "invoice": 66, 
+        "date": "2013-12-02T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59712
+    "pk": 61513
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.784Z", 
+        "updated": "2013-12-18T21:29:18.330Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.562Z", 
-        "amount": 0.3192
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.963Z", 
+        "amount": 0.2968
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.56, 
-        "invoice": 56, 
-        "date": "2013-11-27T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.24, 
+        "invoice": 66, 
+        "date": "2013-12-02T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59713
+    "pk": 61514
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.825Z", 
+        "updated": "2013-12-18T21:29:18.371Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.570Z", 
-        "amount": 0.2072
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.972Z", 
+        "amount": 0.1568
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.96, 
-        "invoice": 56, 
-        "date": "2013-11-27T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.24, 
+        "invoice": 66, 
+        "date": "2013-12-03T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59714
+    "pk": 61515
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.867Z", 
+        "updated": "2013-12-18T21:29:18.413Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.579Z", 
-        "amount": 0.1624, 
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.980Z", 
+        "amount": 0.3024, 
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.32, 
-        "invoice": 56, 
-        "date": "2013-11-28T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.32, 
+        "invoice": 66, 
+        "date": "2013-12-03T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59715
+    "pk": 61516
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.908Z", 
+        "updated": "2013-12-18T21:29:18.454Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.587Z", 
-        "amount": 0.1456, 
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.988Z", 
+        "amount": 0.196, 
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.08, 
-        "invoice": 56, 
-        "date": "2013-11-28T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.8, 
+        "invoice": 66, 
+        "date": "2013-12-03T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59716
+    "pk": 61517
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.949Z", 
+        "updated": "2013-12-18T21:29:18.496Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.595Z", 
-        "amount": 0.112
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:15.997Z", 
+        "amount": 0.2968
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 1.6, 
-        "invoice": 56, 
-        "date": "2013-11-28T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.24, 
+        "invoice": 66, 
+        "date": "2013-12-04T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59717
+    "pk": 61518
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:56.991Z", 
+        "updated": "2013-12-18T21:29:18.537Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.603Z", 
-        "amount": 0.2688
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.005Z", 
+        "amount": 0.3304
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.84, 
-        "invoice": 56, 
-        "date": "2013-11-29T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.72, 
+        "invoice": 66, 
+        "date": "2013-12-04T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59718
+    "pk": 61519
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.032Z", 
+        "updated": "2013-12-18T21:29:18.578Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.612Z", 
-        "amount": 0.14
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.013Z", 
+        "amount": 0.1848
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.0, 
-        "invoice": 56, 
-        "date": "2013-11-29T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.64, 
+        "invoice": 66, 
+        "date": "2013-12-04T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59719
+    "pk": 61520
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.074Z", 
+        "updated": "2013-12-18T21:29:18.620Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.620Z", 
-        "amount": 0.1288, 
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.021Z", 
+        "amount": 0.2408, 
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 1.84, 
-        "invoice": 56, 
-        "date": "2013-11-29T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.44, 
+        "invoice": 66, 
+        "date": "2013-12-05T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59720
+    "pk": 61521
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.148Z", 
+        "updated": "2013-12-18T21:29:18.661Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.628Z", 
-        "amount": 0.1736
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.030Z", 
+        "amount": 0.2464
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.48, 
-        "invoice": 56, 
-        "date": "2013-11-30T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.52, 
+        "invoice": 66, 
+        "date": "2013-12-05T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59721
+    "pk": 61522
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.190Z", 
+        "updated": "2013-12-18T21:29:18.703Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.637Z", 
-        "amount": 0.2464
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.038Z", 
+        "amount": 0.28
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 56, 
-        "date": "2013-11-30T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.0, 
+        "invoice": 66, 
+        "date": "2013-12-05T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59722
+    "pk": 61523
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.231Z", 
+        "updated": "2013-12-18T21:29:18.744Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.645Z", 
-        "amount": 0.2184
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.046Z", 
+        "amount": 0.1848
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.12, 
-        "invoice": 56, 
-        "date": "2013-11-30T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.64, 
+        "invoice": 66, 
+        "date": "2013-12-06T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59723
+    "pk": 61524
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.272Z", 
+        "updated": "2013-12-18T21:29:18.785Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.653Z", 
-        "amount": 0.2744
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.054Z", 
+        "amount": 0.308
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.92, 
-        "invoice": 56, 
-        "date": "2013-12-01T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.4, 
+        "invoice": 66, 
+        "date": "2013-12-06T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59724
+    "pk": 61525
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.314Z", 
+        "updated": "2013-12-18T21:29:18.827Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.661Z", 
-        "amount": 0.2744
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.063Z", 
+        "amount": 0.3248
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.92, 
-        "invoice": 56, 
-        "date": "2013-12-01T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.64, 
+        "invoice": 66, 
+        "date": "2013-12-06T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59725
+    "pk": 61526
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.355Z", 
+        "updated": "2013-12-18T21:29:18.868Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.670Z", 
-        "amount": 0.2352, 
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.071Z", 
+        "amount": 0.112, 
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 56, 
-        "date": "2013-12-01T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.6, 
+        "invoice": 66, 
+        "date": "2013-12-07T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59726
+    "pk": 61527
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.405Z", 
+        "updated": "2013-12-18T21:29:18.910Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.678Z", 
-        "amount": 0.2744
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.079Z", 
+        "amount": 0.252
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.92, 
-        "invoice": 57, 
-        "date": "2013-12-02T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.6, 
+        "invoice": 66, 
+        "date": "2013-12-07T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59727
+    "pk": 61528
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.446Z", 
+        "updated": "2013-12-18T21:29:18.951Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.686Z", 
-        "amount": 0.3192
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.088Z", 
+        "amount": 0.308
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.56, 
-        "invoice": 57, 
-        "date": "2013-12-02T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.4, 
+        "invoice": 66, 
+        "date": "2013-12-07T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59728
+    "pk": 61529
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.488Z", 
+        "updated": "2013-12-18T21:29:18.993Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.695Z", 
-        "amount": 0.28
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.096Z", 
+        "amount": 0.3304
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.0, 
-        "invoice": 57, 
-        "date": "2013-12-02T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.72, 
+        "invoice": 66, 
+        "date": "2013-12-08T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59729
+    "pk": 61530
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.529Z", 
+        "updated": "2013-12-18T21:29:19.034Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.703Z", 
-        "amount": 0.2912
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.104Z", 
+        "amount": 0.2296
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.16, 
-        "invoice": 57, 
-        "date": "2013-12-03T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.28, 
+        "invoice": 66, 
+        "date": "2013-12-08T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59730
+    "pk": 61531
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.571Z", 
+        "updated": "2013-12-18T21:29:19.075Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.711Z", 
-        "amount": 0.252
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.112Z", 
+        "amount": 0.3024
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.6, 
-        "invoice": 57, 
-        "date": "2013-12-03T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.32, 
+        "invoice": 66, 
+        "date": "2013-12-08T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59731
+    "pk": 61532
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.612Z", 
+        "updated": "2013-12-18T21:29:19.125Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.719Z", 
-        "amount": 0.1792
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.121Z", 
+        "amount": 0.1456
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.56, 
-        "invoice": 57, 
-        "date": "2013-12-03T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 67, 
+        "date": "2013-12-09T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59732
+    "pk": 61533
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.653Z", 
+        "updated": "2013-12-18T21:29:19.167Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.728Z", 
-        "amount": 0.2408
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.129Z", 
+        "amount": 0.1456
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.44, 
-        "invoice": 57, 
-        "date": "2013-12-04T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.08, 
+        "invoice": 67, 
+        "date": "2013-12-09T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59733
+    "pk": 61534
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.695Z", 
+        "updated": "2013-12-18T21:29:19.208Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.736Z", 
-        "amount": 0.2352
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.137Z", 
+        "amount": 0.2184
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 57, 
-        "date": "2013-12-04T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.12, 
+        "invoice": 67, 
+        "date": "2013-12-09T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59734
+    "pk": 61535
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.736Z", 
+        "updated": "2013-12-18T21:29:19.249Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.744Z", 
-        "amount": 0.3248
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.146Z", 
+        "amount": 0.2184
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.64, 
-        "invoice": 57, 
-        "date": "2013-12-04T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.12, 
+        "invoice": 67, 
+        "date": "2013-12-10T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59735
+    "pk": 61536
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.778Z", 
+        "updated": "2013-12-18T21:29:19.291Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.753Z", 
-        "amount": 0.2408
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.154Z", 
+        "amount": 0.1624
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.44, 
-        "invoice": 57, 
-        "date": "2013-12-05T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.32, 
+        "invoice": 67, 
+        "date": "2013-12-10T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59736
+    "pk": 61537
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.819Z", 
+        "updated": "2013-12-18T21:29:19.332Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.761Z", 
-        "amount": 0.224
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.162Z", 
+        "amount": 0.308
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.2, 
-        "invoice": 57, 
-        "date": "2013-12-05T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.4, 
+        "invoice": 67, 
+        "date": "2013-12-10T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59737
+    "pk": 61538
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.861Z", 
+        "updated": "2013-12-18T21:29:19.374Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.769Z", 
-        "amount": 0.2128, 
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.170Z", 
+        "amount": 0.1568, 
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.04, 
-        "invoice": 57, 
-        "date": "2013-12-05T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.24, 
+        "invoice": 67, 
+        "date": "2013-12-11T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59738
+    "pk": 61539
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.902Z", 
+        "updated": "2013-12-18T21:29:19.415Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.777Z", 
-        "amount": 0.2072
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.179Z", 
+        "amount": 0.2856
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.96, 
-        "invoice": 57, 
-        "date": "2013-12-06T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.08, 
+        "invoice": 67, 
+        "date": "2013-12-11T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59739
+    "pk": 61540
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.943Z", 
+        "updated": "2013-12-18T21:29:19.457Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.786Z", 
-        "amount": 0.252
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.187Z", 
+        "amount": 0.3136
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.6, 
-        "invoice": 57, 
-        "date": "2013-12-06T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.48, 
+        "invoice": 67, 
+        "date": "2013-12-11T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59740
+    "pk": 61541
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:57.985Z", 
+        "updated": "2013-12-18T21:29:19.498Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.794Z", 
+        "created": "2013-12-18T21:29:16.195Z", 
         "amount": 0.224, 
-        "object": 103
-        "account": 12
+        "object": 121
+        "account": 14
         "state": "invoiced", 
         "coreHours": 3.2, 
-        "invoice": 57, 
-        "date": "2013-12-06T22:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 67, 
+        "date": "2013-12-12T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59741
+    "pk": 61542
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.026Z", 
+        "updated": "2013-12-18T21:29:19.539Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.802Z", 
-        "amount": 0.196
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.204Z", 
+        "amount": 0.2688
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 2.8, 
-        "invoice": 57, 
-        "date": "2013-12-07T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.84, 
+        "invoice": 67, 
+        "date": "2013-12-12T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59742
+    "pk": 61543
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.068Z", 
+        "updated": "2013-12-18T21:29:19.581Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.811Z", 
-        "amount": 0.2352
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.212Z", 
+        "amount": 0.224
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.36, 
-        "invoice": 57, 
-        "date": "2013-12-07T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 3.2, 
+        "invoice": 67, 
+        "date": "2013-12-12T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59743
+    "pk": 61544
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.109Z", 
+        "updated": "2013-12-18T21:29:19.622Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.819Z", 
-        "amount": 0.2408, 
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.220Z", 
+        "amount": 0.28, 
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.44, 
-        "invoice": 57, 
-        "date": "2013-12-07T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 4.0, 
+        "invoice": 67, 
+        "date": "2013-12-13T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59744
+    "pk": 61545
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.151Z", 
+        "updated": "2013-12-18T21:29:19.664Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.827Z", 
-        "amount": 0.3304
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.228Z", 
+        "amount": 0.1792
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.72, 
-        "invoice": 57, 
-        "date": "2013-12-08T06:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.56, 
+        "invoice": 67, 
+        "date": "2013-12-13T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59745
+    "pk": 61546
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.192Z", 
+        "updated": "2013-12-18T21:29:19.705Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.835Z", 
-        "amount": 0.336
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.237Z", 
+        "amount": 0.1344
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 4.8, 
-        "invoice": 57, 
-        "date": "2013-12-08T14:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 1.92, 
+        "invoice": 67, 
+        "date": "2013-12-13T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59746
+    "pk": 61547
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:58.233Z", 
+        "updated": "2013-12-18T21:29:19.746Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.844Z", 
-        "amount": 0.2464
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.245Z", 
+        "amount": 0.2072
+        "object": 121
+        "account": 14
         "state": "invoiced", 
-        "coreHours": 3.52, 
-        "invoice": 57, 
-        "date": "2013-12-08T22:00:00Z", 
-        "kind": "besteffort"
+        "coreHours": 2.96, 
+        "invoice": 67, 
+        "date": "2013-12-14T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59747
+    "pk": 61548
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.852Z", 
+        "updated": "2013-12-18T21:29:19.788Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.852Z", 
+        "created": "2013-12-18T21:29:16.253Z", 
         "amount": 0.252, 
-        "object": 103
-        "account": 12
-        "state": "pending", 
+        "object": 121
+        "account": 14
+        "state": "invoiced", 
         "coreHours": 3.6, 
-        "invoice": null, 
-        "date": "2013-12-09T06:00:00Z", 
-        "kind": "besteffort"
+        "invoice": 67, 
+        "date": "2013-12-14T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59748
+    "pk": 61549
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.860Z", 
+        "updated": "2013-12-18T21:29:19.837Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.860Z", 
-        "amount": 0.3304, 
-        "object": 103, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 4.72, 
-        "invoice": null, 
-        "date": "2013-12-09T14:00:00Z", 
-        "kind": "besteffort"
+        "created": "2013-12-18T21:29:16.262Z", 
+        "amount": 0.2296, 
+        "object": 121, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 3.28, 
+        "invoice": 67, 
+        "date": "2013-12-14T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59749
+    "pk": 61550
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.869Z", 
+        "updated": "2013-12-18T21:29:19.879Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.869Z", 
-        "amount": 0.1344, 
-        "object": 103, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 1.92, 
-        "invoice": null, 
-        "date": "2013-12-09T22:00:00Z", 
-        "kind": "besteffort"
+        "created": "2013-12-18T21:29:16.270Z", 
+        "amount": 0.1456, 
+        "object": 121, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 2.08, 
+        "invoice": 67, 
+        "date": "2013-12-15T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59750
+    "pk": 61551
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.877Z", 
+        "updated": "2013-12-18T21:29:19.920Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.877Z", 
-        "amount": 0.224, 
-        "object": 103, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 3.2, 
-        "invoice": null, 
-        "date": "2013-12-10T06:00:00Z", 
-        "kind": "besteffort"
+        "created": "2013-12-18T21:29:16.278Z", 
+        "amount": 0.3304, 
+        "object": 121, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 4.72, 
+        "invoice": 67, 
+        "date": "2013-12-15T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59751
+    "pk": 61552
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.885Z", 
+        "updated": "2013-12-18T21:29:19.962Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.885Z", 
-        "amount": 0.1232, 
-        "object": 103, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 1.76, 
-        "invoice": null, 
-        "date": "2013-12-10T14:00:00Z", 
-        "kind": "besteffort"
+        "created": "2013-12-18T21:29:16.286Z", 
+        "amount": 0.2016, 
+        "object": 121, 
+        "account": 14, 
+        "state": "invoiced", 
+        "coreHours": 2.88, 
+        "invoice": 67, 
+        "date": "2013-12-15T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59752
+    "pk": 61553
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.894Z", 
+        "updated": "2013-12-18T21:29:16.295Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.893Z", 
-        "amount": 0.3304
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.295Z", 
+        "amount": 0.2128
+        "object": 121
+        "account": 14
         "state": "pending", 
-        "coreHours": 4.72
+        "coreHours": 3.04
         "invoice": null, 
-        "date": "2013-12-10T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59753
+    "pk": 61554
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.902Z", 
+        "updated": "2013-12-18T21:29:16.303Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.902Z", 
-        "amount": 0.1736
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.303Z", 
+        "amount": 0.3192
+        "object": 121
+        "account": 14
         "state": "pending", 
-        "coreHours": 2.48
+        "coreHours": 4.56
         "invoice": null, 
-        "date": "2013-12-11T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59754
+    "pk": 61555
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.910Z", 
+        "updated": "2013-12-18T21:29:16.311Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.910Z", 
-        "amount": 0.28
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.311Z", 
+        "amount": 0.1232
+        "object": 121
+        "account": 14
         "state": "pending", 
-        "coreHours": 4.0
+        "coreHours": 1.76
         "invoice": null, 
-        "date": "2013-12-11T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-16T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59755
+    "pk": 61556
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.918Z", 
+        "updated": "2013-12-18T21:29:16.320Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.918Z", 
-        "amount": 0.2464
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.320Z", 
+        "amount": 0.1736
+        "object": 121
+        "account": 14
         "state": "pending", 
-        "coreHours": 3.52
+        "coreHours": 2.48
         "invoice": null, 
-        "date": "2013-12-11T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59756
+    "pk": 61557
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.927Z", 
+        "updated": "2013-12-18T21:29:16.328Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.927Z", 
-        "amount": 0.1288
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.328Z", 
+        "amount": 0.1792
+        "object": 121
+        "account": 14
         "state": "pending", 
-        "coreHours": 1.84
+        "coreHours": 2.56
         "invoice": null, 
-        "date": "2013-12-12T06:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59757
+    "pk": 61558
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.935Z", 
+        "updated": "2013-12-18T21:29:16.336Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.935Z", 
-        "amount": 0.168
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.336Z", 
+        "amount": 0.112
+        "object": 121
+        "account": 14
         "state": "pending", 
-        "coreHours": 2.4
+        "coreHours": 1.6
         "invoice": null, 
-        "date": "2013-12-12T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-17T21:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59758
+    "pk": 61559
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.943Z", 
+        "updated": "2013-12-18T21:29:16.344Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.943Z", 
-        "amount": 0.1512
-        "object": 103
-        "account": 12
+        "created": "2013-12-18T21:29:16.344Z", 
+        "amount": 0.196
+        "object": 121
+        "account": 14
         "state": "pending", 
-        "coreHours": 2.16
+        "coreHours": 2.8
         "invoice": null, 
-        "date": "2013-12-12T22:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-18T05:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
-    "pk": 59759
+    "pk": 61560
     "model": "core.charge", 
     "fields": {
-        "updated": "2013-12-13T22:19:54.951Z", 
+        "updated": "2013-12-18T21:29:16.353Z", 
         "slice": 15, 
-        "created": "2013-12-13T22:19:54.951Z", 
+        "created": "2013-12-18T21:29:16.353Z", 
         "amount": 0.252, 
-        "object": 103
-        "account": 12
+        "object": 121
+        "account": 14
         "state": "pending", 
         "coreHours": 3.6, 
         "invoice": null, 
-        "date": "2013-12-13T06:00:00Z", 
-        "kind": "besteffort"
-    }
-},
-{
-    "pk": 59760, 
-    "model": "core.charge", 
-    "fields": {
-        "updated": "2013-12-13T22:19:54.960Z", 
-        "slice": 15, 
-        "created": "2013-12-13T22:19:54.960Z", 
-        "amount": 0.336, 
-        "object": 103, 
-        "account": 12, 
-        "state": "pending", 
-        "coreHours": 4.8, 
-        "invoice": null, 
-        "date": "2013-12-13T14:00:00Z", 
-        "kind": "besteffort"
+        "date": "2013-12-18T13:00:00Z", 
+        "kind": "besteffort", 
+        "enacted": null
     }
 },
 {
     "fields": {
         "updated": "2013-12-11T18:11:43.757Z", 
         "description": "", 
+        "created": "2013-12-11T18:11:43.757Z", 
         "enabled": true, 
+        "service_provider_id": null, 
         "name": "internet2", 
-        "created": "2013-12-11T18:11:43.757Z"
+        "enacted": null
     }
 },
 {
     "fields": {
         "updated": "2013-12-11T18:13:38.024Z", 
         "description": "", 
+        "created": "2013-12-11T18:11:52.622Z", 
         "enabled": true, 
+        "service_provider_id": null, 
         "name": "Syndicate", 
-        "created": "2013-12-11T18:11:52.622Z"
+        "enacted": null
     }
 },
 {
     "model": "hpc.contentprovider", 
     "fields": {
         "updated": "2013-12-11T23:57:17.472Z", 
-        "description": "Peer-to-peer content sharing for Syndicate distributed filesystem", 
+        "name": "Syndicate", 
         "created": "2013-12-11T23:57:17.472Z", 
+        "content_provider_id": null, 
         "serviceProvider": 2, 
+        "description": "Peer-to-peer content sharing for Syndicate distributed filesystem", 
         "enabled": true, 
         "users": [], 
-        "name": "Syndicate"
+        "enacted": null
     }
 },
 {
     "model": "hpc.contentprovider", 
     "fields": {
         "updated": "2013-12-11T23:57:20.586Z", 
-        "description": "Content Provider for Georgia Tech", 
+        "name": "Georgia Tech", 
         "created": "2013-12-11T23:57:20.586Z", 
+        "content_provider_id": null, 
         "serviceProvider": 1, 
+        "description": "Content Provider for Georgia Tech", 
         "enabled": true, 
         "users": [], 
-        "name": "Georgia Tech"
+        "enacted": null
     }
 },
 {
     "model": "hpc.contentprovider", 
     "fields": {
         "updated": "2013-12-11T23:57:20.611Z", 
-        "description": "Content Provider for Stanford University", 
+        "name": "Stanford University", 
         "created": "2013-12-11T23:57:20.611Z", 
+        "content_provider_id": null, 
         "serviceProvider": 1, 
+        "description": "Content Provider for Stanford University", 
         "enabled": true, 
         "users": [], 
-        "name": "Stanford University"
+        "enacted": null
     }
 },
 {
     "model": "hpc.contentprovider", 
     "fields": {
         "updated": "2013-12-11T23:57:20.636Z", 
-        "description": "Content Provider for University of Washington", 
+        "name": "University of Washington", 
         "created": "2013-12-11T23:57:20.636Z", 
+        "content_provider_id": null, 
         "serviceProvider": 1, 
+        "description": "Content Provider for University of Washington", 
         "enabled": true, 
         "users": [], 
-        "name": "University of Washington"
+        "enacted": null
     }
 },
 {
     "model": "hpc.contentprovider", 
     "fields": {
         "updated": "2013-12-11T23:57:20.660Z", 
-        "description": "Content Provider for Max Planck Institute", 
+        "name": "Max Planck Institute", 
         "created": "2013-12-11T23:57:20.660Z", 
+        "content_provider_id": null, 
         "serviceProvider": 1, 
+        "description": "Content Provider for Max Planck Institute", 
         "enabled": true, 
         "users": [], 
-        "name": "Max Planck Institute"
+        "enacted": null
     }
 },
 {
     "model": "hpc.contentprovider", 
     "fields": {
         "updated": "2013-12-11T23:57:20.685Z", 
-        "description": "Content Provider for Princeton University", 
+        "name": "Princeton University", 
         "created": "2013-12-11T23:57:20.685Z", 
+        "content_provider_id": null, 
         "serviceProvider": 1, 
+        "description": "Content Provider for Princeton University", 
         "enabled": true, 
         "users": [], 
-        "name": "Princeton University"
+        "enacted": null
     }
 },
 {
     "model": "hpc.contentprovider", 
     "fields": {
         "updated": "2013-12-11T23:57:20.710Z", 
-        "description": "Open Networking Lab", 
+        "name": "ON.LAB", 
         "created": "2013-12-11T23:57:20.710Z", 
+        "content_provider_id": null, 
         "serviceProvider": 1, 
+        "description": "Open Networking Lab", 
         "enabled": true, 
         "users": [], 
-        "name": "ON.LAB"
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.496Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.496Z", 
         "url": "node70.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.503Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.503Z", 
         "url": "node69.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.512Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.512Z", 
         "url": "node68.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.520Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.520Z", 
         "url": "node67.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.528Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.528Z", 
         "url": "node66.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.537Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.537Z", 
         "url": "node65.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.545Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.545Z", 
         "url": "node64.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.553Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.553Z", 
         "url": "node63.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.561Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.561Z", 
         "url": "node62.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.570Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.570Z", 
         "url": "node61.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.578Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.578Z", 
         "url": "node60.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.586Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.586Z", 
         "url": "node59.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.595Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.595Z", 
         "url": "node58.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.603Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.603Z", 
         "url": "node57.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.611Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.611Z", 
         "url": "node56.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.619Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.619Z", 
         "url": "node55.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.628Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.628Z", 
         "url": "node54.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.636Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.636Z", 
         "url": "node53.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.644Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.644Z", 
         "url": "node52.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.653Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.653Z", 
         "url": "node51.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.661Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.661Z", 
         "url": "node50.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.669Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.669Z", 
         "url": "node49.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.677Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.677Z", 
         "url": "node48.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.686Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.686Z", 
         "url": "node47.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.694Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.694Z", 
         "url": "node46.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.702Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.702Z", 
         "url": "node45.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.711Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.711Z", 
         "url": "node44.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.719Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.719Z", 
         "url": "node43.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.727Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.727Z", 
         "url": "node42.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.735Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.735Z", 
         "url": "node41.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.744Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.744Z", 
         "url": "node40.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.752Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.752Z", 
         "url": "node39.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.760Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.760Z", 
         "url": "node38.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.768Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.768Z", 
         "url": "node37.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.777Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.777Z", 
         "url": "node36.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.785Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.785Z", 
         "url": "node35.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.793Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.793Z", 
         "url": "node34.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.802Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.802Z", 
         "url": "node33.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.810Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.810Z", 
         "url": "node32.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.818Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.818Z", 
         "url": "node31.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.826Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.826Z", 
         "url": "node30.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.835Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.835Z", 
         "url": "node29.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.843Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.843Z", 
         "url": "node28.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.851Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.851Z", 
         "url": "node27.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.860Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.860Z", 
         "url": "node26.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.868Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.868Z", 
         "url": "node25.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.876Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.876Z", 
         "url": "node24.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.884Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.884Z", 
         "url": "node23.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.893Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.893Z", 
         "url": "node22.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.901Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.901Z", 
         "url": "node21.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.909Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.909Z", 
         "url": "node20.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.918Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.918Z", 
         "url": "node19.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.926Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.926Z", 
         "url": "node18.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.934Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.934Z", 
         "url": "node17.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.942Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.942Z", 
         "url": "node16.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.951Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.951Z", 
         "url": "node15.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.959Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.959Z", 
         "url": "node14.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.967Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.967Z", 
         "url": "node13.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.975Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.975Z", 
         "url": "node12.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.984Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.984Z", 
         "url": "node11.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:17.992Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:17.992Z", 
         "url": "node10.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18Z", 
         "url": "node9.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.009Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.009Z", 
         "url": "node8.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.017Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.017Z", 
         "url": "node7.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.025Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.025Z", 
         "url": "node6.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.034Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.034Z", 
         "url": "node5.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.042Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.042Z", 
         "url": "node4.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.050Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.050Z", 
         "url": "node3.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.058Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.058Z", 
         "url": "node2.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.067Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.067Z", 
         "url": "node1.stanford.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.084Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.084Z", 
         "url": "node70.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.092Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.092Z", 
         "url": "node69.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.100Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.100Z", 
         "url": "node68.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.108Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.108Z", 
         "url": "node67.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.116Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.116Z", 
         "url": "node66.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.125Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.125Z", 
         "url": "node65.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.133Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.133Z", 
         "url": "node64.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.141Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.141Z", 
         "url": "node63.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.149Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.149Z", 
         "url": "node62.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.158Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.158Z", 
         "url": "node61.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.166Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.166Z", 
         "url": "node60.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.174Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.174Z", 
         "url": "node59.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.183Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.183Z", 
         "url": "node58.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.191Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.191Z", 
         "url": "node57.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.199Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.199Z", 
         "url": "node56.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.208Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.207Z", 
         "url": "node55.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.216Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.216Z", 
         "url": "node54.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.224Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.224Z", 
         "url": "node53.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.238Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.238Z", 
         "url": "node52.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.286Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.286Z", 
         "url": "node51.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.299Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.298Z", 
         "url": "node50.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.307Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.307Z", 
         "url": "node49.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.315Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.315Z", 
         "url": "node48.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.323Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.323Z", 
         "url": "node47.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.332Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.332Z", 
         "url": "node46.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.340Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.340Z", 
         "url": "node45.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.348Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.348Z", 
         "url": "node44.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.357Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.356Z", 
         "url": "node43.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.365Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.365Z", 
         "url": "node42.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.373Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.373Z", 
         "url": "node41.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.381Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.381Z", 
         "url": "node40.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.390Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.390Z", 
         "url": "node39.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.398Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.398Z", 
         "url": "node38.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.406Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.406Z", 
         "url": "node37.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.414Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.414Z", 
         "url": "node36.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.423Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.423Z", 
         "url": "node35.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.431Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.431Z", 
         "url": "node34.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.439Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.439Z", 
         "url": "node33.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.448Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.448Z", 
         "url": "node32.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.456Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.456Z", 
         "url": "node31.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.464Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.464Z", 
         "url": "node30.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.472Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.472Z", 
         "url": "node29.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.481Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.481Z", 
         "url": "node28.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.489Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.489Z", 
         "url": "node27.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.497Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.497Z", 
         "url": "node26.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.506Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.505Z", 
         "url": "node25.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.514Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.514Z", 
         "url": "node24.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.522Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.522Z", 
         "url": "node23.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.530Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.530Z", 
         "url": "node22.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.539Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.539Z", 
         "url": "node21.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.547Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.547Z", 
         "url": "node20.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.555Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.555Z", 
         "url": "node19.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.564Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.563Z", 
         "url": "node18.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.572Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.572Z", 
         "url": "node17.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.580Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.580Z", 
         "url": "node16.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.588Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.588Z", 
         "url": "node15.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.597Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.597Z", 
         "url": "node14.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.605Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.605Z", 
         "url": "node13.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.613Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.613Z", 
         "url": "node12.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.622Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.622Z", 
         "url": "node11.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.630Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.630Z", 
         "url": "node10.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.638Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.638Z", 
         "url": "node9.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.646Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.646Z", 
         "url": "node8.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.655Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.655Z", 
         "url": "node7.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.663Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.663Z", 
         "url": "node6.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.671Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.671Z", 
         "url": "node5.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.680Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.680Z", 
         "url": "node4.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.688Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.688Z", 
         "url": "node3.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.696Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.696Z", 
         "url": "node2.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.704Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.704Z", 
         "url": "node1.washington.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.722Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.722Z", 
         "url": "node70.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.729Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.729Z", 
         "url": "node69.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.738Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.737Z", 
         "url": "node68.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.746Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.746Z", 
         "url": "node67.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.754Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.754Z", 
         "url": "node66.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.762Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.762Z", 
         "url": "node65.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.771Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.771Z", 
         "url": "node64.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.779Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.779Z", 
         "url": "node63.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.787Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.787Z", 
         "url": "node62.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.795Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.795Z", 
         "url": "node61.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.804Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.804Z", 
         "url": "node60.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.812Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.812Z", 
         "url": "node59.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.820Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.820Z", 
         "url": "node58.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.829Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.829Z", 
         "url": "node57.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.837Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.837Z", 
         "url": "node56.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.845Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.845Z", 
         "url": "node55.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.853Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.853Z", 
         "url": "node54.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.862Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.862Z", 
         "url": "node53.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.870Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.870Z", 
         "url": "node52.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.878Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.878Z", 
         "url": "node51.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.887Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.887Z", 
         "url": "node50.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.895Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.895Z", 
         "url": "node49.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.903Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.903Z", 
         "url": "node48.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.911Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.911Z", 
         "url": "node47.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.920Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.920Z", 
         "url": "node46.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.928Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.928Z", 
         "url": "node45.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.936Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.936Z", 
         "url": "node44.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.944Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.944Z", 
         "url": "node43.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.953Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.953Z", 
         "url": "node42.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.961Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.961Z", 
         "url": "node41.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.969Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.969Z", 
         "url": "node40.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.978Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.978Z", 
         "url": "node39.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.986Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.986Z", 
         "url": "node38.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:18.994Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:18.994Z", 
         "url": "node37.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.002Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.002Z", 
         "url": "node36.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.011Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.011Z", 
         "url": "node35.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.019Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.019Z", 
         "url": "node34.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.027Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.027Z", 
         "url": "node33.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.036Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.036Z", 
         "url": "node32.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.044Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.044Z", 
         "url": "node31.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.052Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.052Z", 
         "url": "node30.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.060Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.060Z", 
         "url": "node29.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.069Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.069Z", 
         "url": "node28.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.077Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.077Z", 
         "url": "node27.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.086Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.085Z", 
         "url": "node26.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.094Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.094Z", 
         "url": "node25.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.102Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.102Z", 
         "url": "node24.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.110Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.110Z", 
         "url": "node23.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.118Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.118Z", 
         "url": "node22.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.127Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.127Z", 
         "url": "node21.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.135Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.135Z", 
         "url": "node20.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.143Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.143Z", 
         "url": "node19.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.152Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.152Z", 
         "url": "node18.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.160Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.160Z", 
         "url": "node17.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.168Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.168Z", 
         "url": "node16.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.176Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.176Z", 
         "url": "node15.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.185Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.185Z", 
         "url": "node14.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.193Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.193Z", 
         "url": "node13.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.201Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.201Z", 
         "url": "node12.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.210Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.210Z", 
         "url": "node11.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.218Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.218Z", 
         "url": "node10.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.226Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.226Z", 
         "url": "node9.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.234Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.234Z", 
         "url": "node8.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.243Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.243Z", 
         "url": "node7.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.251Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.251Z", 
         "url": "node6.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.259Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.259Z", 
         "url": "node5.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.268Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.268Z", 
         "url": "node4.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.276Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.276Z", 
         "url": "node3.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.284Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.284Z", 
         "url": "node2.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.292Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.292Z", 
         "url": "node1.princeton.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.310Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.310Z", 
         "url": "node70.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.317Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.317Z", 
         "url": "node69.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.325Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.325Z", 
         "url": "node68.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.334Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.334Z", 
         "url": "node67.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.342Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.342Z", 
         "url": "node66.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.350Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.350Z", 
         "url": "node65.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.359Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.359Z", 
         "url": "node64.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.367Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.367Z", 
         "url": "node63.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.375Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.375Z", 
         "url": "node62.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.383Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.383Z", 
         "url": "node61.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.392Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.392Z", 
         "url": "node60.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.400Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.400Z", 
         "url": "node59.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.408Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.408Z", 
         "url": "node58.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.417Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.416Z", 
         "url": "node57.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.425Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.425Z", 
         "url": "node56.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.433Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.433Z", 
         "url": "node55.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.441Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.441Z", 
         "url": "node54.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.450Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.450Z", 
         "url": "node53.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.458Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.458Z", 
         "url": "node52.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.466Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.466Z", 
         "url": "node51.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.475Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.475Z", 
         "url": "node50.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.483Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.483Z", 
         "url": "node49.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.491Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.491Z", 
         "url": "node48.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.499Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.499Z", 
         "url": "node47.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.508Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.508Z", 
         "url": "node46.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.516Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.516Z", 
         "url": "node45.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.524Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.524Z", 
         "url": "node44.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.533Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.532Z", 
         "url": "node43.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.541Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.541Z", 
         "url": "node42.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.549Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.549Z", 
         "url": "node41.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.557Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.557Z", 
         "url": "node40.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.566Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.566Z", 
         "url": "node39.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.574Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.574Z", 
         "url": "node38.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.582Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.582Z", 
         "url": "node37.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.591Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.590Z", 
         "url": "node36.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.599Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.599Z", 
         "url": "node35.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.607Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.607Z", 
         "url": "node34.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.615Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.615Z", 
         "url": "node33.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.624Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.624Z", 
         "url": "node32.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.632Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.632Z", 
         "url": "node31.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.640Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.640Z", 
         "url": "node30.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.649Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.648Z", 
         "url": "node29.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.657Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.657Z", 
         "url": "node28.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.665Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.665Z", 
         "url": "node27.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.673Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.673Z", 
         "url": "node26.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.682Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.682Z", 
         "url": "node25.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.690Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.690Z", 
         "url": "node24.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.698Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.698Z", 
         "url": "node23.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.706Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.706Z", 
         "url": "node22.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.715Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.715Z", 
         "url": "node21.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.723Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.723Z", 
         "url": "node20.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.731Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.731Z", 
         "url": "node19.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.740Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.740Z", 
         "url": "node18.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.748Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.748Z", 
         "url": "node17.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.756Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.756Z", 
         "url": "node16.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.764Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.764Z", 
         "url": "node15.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.773Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.773Z", 
         "url": "node14.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.781Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.781Z", 
         "url": "node13.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.789Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.789Z", 
         "url": "node12.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.798Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.798Z", 
         "url": "node11.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.806Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.806Z", 
         "url": "node10.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.814Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.814Z", 
         "url": "node9.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.822Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.822Z", 
         "url": "node8.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.831Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.831Z", 
         "url": "node7.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.839Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.839Z", 
         "url": "node6.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.847Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.847Z", 
         "url": "node5.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.856Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.855Z", 
         "url": "node4.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.864Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.864Z", 
         "url": "node3.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.872Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.872Z", 
         "url": "node2.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.880Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.880Z", 
         "url": "node1.gt.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.898Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.898Z", 
         "url": "node70.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.905Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.905Z", 
         "url": "node69.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.913Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.913Z", 
         "url": "node68.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.922Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.922Z", 
         "url": "node67.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.930Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.930Z", 
         "url": "node66.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.938Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.938Z", 
         "url": "node65.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.947Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.947Z", 
         "url": "node64.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.955Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.955Z", 
         "url": "node63.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.963Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.963Z", 
         "url": "node62.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.971Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.971Z", 
         "url": "node61.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.980Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.980Z", 
         "url": "node60.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.988Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.988Z", 
         "url": "node59.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:19.996Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:19.996Z", 
         "url": "node58.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.005Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.005Z", 
         "url": "node57.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.013Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.013Z", 
         "url": "node56.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.021Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.021Z", 
         "url": "node55.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.029Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.029Z", 
         "url": "node54.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.038Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.038Z", 
         "url": "node53.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.046Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.046Z", 
         "url": "node52.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.054Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.054Z", 
         "url": "node51.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.063Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.062Z", 
         "url": "node50.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.071Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.071Z", 
         "url": "node49.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.079Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.079Z", 
         "url": "node48.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.087Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.087Z", 
         "url": "node47.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.096Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.096Z", 
         "url": "node46.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.104Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.104Z", 
         "url": "node45.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.112Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.112Z", 
         "url": "node44.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.121Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.121Z", 
         "url": "node43.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.129Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.129Z", 
         "url": "node42.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.137Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.137Z", 
         "url": "node41.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.146Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.145Z", 
         "url": "node40.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.154Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.154Z", 
         "url": "node39.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.162Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.162Z", 
         "url": "node38.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.170Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.170Z", 
         "url": "node37.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.179Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.179Z", 
         "url": "node36.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.187Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.187Z", 
         "url": "node35.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.195Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.195Z", 
         "url": "node34.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.203Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.203Z", 
         "url": "node33.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.212Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.212Z", 
         "url": "node32.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.220Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.220Z", 
         "url": "node31.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.228Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.228Z", 
         "url": "node30.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.237Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.236Z", 
         "url": "node29.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.245Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.245Z", 
         "url": "node28.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.253Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.253Z", 
         "url": "node27.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.261Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.261Z", 
         "url": "node26.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.270Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.270Z", 
         "url": "node25.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.278Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.278Z", 
         "url": "node24.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.286Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.286Z", 
         "url": "node23.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.294Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.294Z", 
         "url": "node22.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.303Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.303Z", 
         "url": "node21.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.311Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.311Z", 
         "url": "node20.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.319Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.319Z", 
         "url": "node19.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.328Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.328Z", 
         "url": "node18.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.336Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.336Z", 
         "url": "node17.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.344Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.344Z", 
         "url": "node16.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.352Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.352Z", 
         "url": "node15.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.361Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.361Z", 
         "url": "node14.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.369Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.369Z", 
         "url": "node13.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.377Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.377Z", 
         "url": "node12.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.386Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.386Z", 
         "url": "node11.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.394Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.394Z", 
         "url": "node10.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.402Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.402Z", 
         "url": "node9.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.410Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.410Z", 
         "url": "node8.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.419Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.419Z", 
         "url": "node7.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.427Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.427Z", 
         "url": "node6.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.435Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.435Z", 
         "url": "node5.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.443Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.443Z", 
         "url": "node4.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.452Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.452Z", 
         "url": "node3.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.460Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.460Z", 
         "url": "node2.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.468Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "syndicate origin server", 
         "created": "2013-12-11T23:57:20.468Z", 
         "url": "node1.mpisws.vicci.org:32780", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 29
+        "authenticated": false, 
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.594Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "Content from www.cs.gatech.edu", 
         "created": "2013-12-11T23:57:20.594Z", 
         "url": "www.cs.gatech.edu", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 30
+        "authenticated": false, 
+        "contentProvider": 30, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.619Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "Content from www.cs.stanford.edu", 
         "created": "2013-12-11T23:57:20.619Z", 
         "url": "www.cs.stanford.edu", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 31
+        "authenticated": false, 
+        "contentProvider": 31, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.644Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "Content from www.cs.washington.edu", 
         "created": "2013-12-11T23:57:20.644Z", 
         "url": "www.cs.washington.edu", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 32
+        "authenticated": false, 
+        "contentProvider": 32, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.669Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "Content from www.mpg.de", 
         "created": "2013-12-11T23:57:20.669Z", 
         "url": "www.mpg.de", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 33
+        "authenticated": false, 
+        "contentProvider": 33, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.694Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "Content from www.cs.princeton.edu", 
         "created": "2013-12-11T23:57:20.694Z", 
         "url": "www.cs.princeton.edu", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 34
+        "authenticated": false, 
+        "contentProvider": 34, 
+        "enacted": null
     }
 },
 {
     "model": "hpc.originserver", 
     "fields": {
         "updated": "2013-12-11T23:57:20.719Z", 
-        "authenticated": false
+        "origin_server_id": null
         "description": "onlab virtual machine images", 
         "created": "2013-12-11T23:57:20.719Z", 
         "url": "images.onlab.org", 
         "enabled": true, 
         "redirects": true, 
         "protocol": "http", 
-        "contentProvider": 35
+        "authenticated": false, 
+        "contentProvider": 35, 
+        "enacted": null
     }
 },
 {
         "description": "CDN Prefix for the Syndicate distributed filesystem", 
         "created": "2013-12-11T23:57:20.479Z", 
         "enabled": true, 
+        "cdn_prefix_id": null, 
         "prefix": "cdn.syndicatedrive.com", 
         "defaultOriginServer": 3876, 
-        "contentProvider": 29
+        "contentProvider": 29, 
+        "enacted": null
     }
 },
 {
         "description": "CDN Prefix for Georgia Tech", 
         "created": "2013-12-11T23:57:20.602Z", 
         "enabled": true, 
+        "cdn_prefix_id": null, 
         "prefix": "gt.opencdn.internet2.edu", 
         "defaultOriginServer": 3877, 
-        "contentProvider": 30
+        "contentProvider": 30, 
+        "enacted": null
     }
 },
 {
         "description": "CDN Prefix for Stanford University", 
         "created": "2013-12-11T23:57:20.627Z", 
         "enabled": true, 
+        "cdn_prefix_id": null, 
         "prefix": "stanford.opencdn.internet2.edu", 
         "defaultOriginServer": 3878, 
-        "contentProvider": 31
+        "contentProvider": 31, 
+        "enacted": null
     }
 },
 {
         "description": "CDN Prefix for University of Washington", 
         "created": "2013-12-11T23:57:20.652Z", 
         "enabled": true, 
+        "cdn_prefix_id": null, 
         "prefix": "washington.opencdn.internet2.edu", 
         "defaultOriginServer": 3879, 
-        "contentProvider": 32
+        "contentProvider": 32, 
+        "enacted": null
     }
 },
 {
         "description": "CDN Prefix for Max Planck Institute", 
         "created": "2013-12-11T23:57:20.677Z", 
         "enabled": true, 
+        "cdn_prefix_id": null, 
         "prefix": "mp.opencdn.internet2.edu", 
         "defaultOriginServer": 3880, 
-        "contentProvider": 33
+        "contentProvider": 33, 
+        "enacted": null
     }
 },
 {
         "description": "CDN Prefix for Princeton University", 
         "created": "2013-12-11T23:57:20.702Z", 
         "enabled": true, 
+        "cdn_prefix_id": null, 
         "prefix": "princeton.opencdn.internet2.edu", 
         "defaultOriginServer": 3881, 
-        "contentProvider": 34
+        "contentProvider": 34, 
+        "enacted": null
     }
 },
 {
         "description": "CDN Prefix for ON.LAB", 
         "created": "2013-12-11T23:57:20.727Z", 
         "enabled": true, 
+        "cdn_prefix_id": null, 
         "prefix": "onlab.vicci.org", 
         "defaultOriginServer": 3882, 
-        "contentProvider": 35
+        "contentProvider": 35, 
+        "enacted": null
+    }
+},
+{
+    "pk": 5, 
+    "model": "syndicate.syndicateservice", 
+    "fields": {}
+},
+{
+    "pk": 1, 
+    "model": "syndicate.volume", 
+    "fields": {
+        "updated": "2013-12-11T23:57:20.727Z", 
+        "description": "GenBank dataset snapshot from Nov. 2013", 
+        "created": "2013-12-11T23:57:20.727Z", 
+        "blocksize": 61440, 
+        "default_gateway_caps": "3", 
+        "private": false, 
+        "name": "GenBank-11-2013", 
+        "enacted": null, 
+        "archive": true, 
+        "owner_id": 1
+    }
+},
+{
+    "pk": 2, 
+    "model": "syndicate.volume", 
+    "fields": {
+        "updated": "2013-12-11T23:57:20.727Z", 
+        "description": "Volume associated with princeton_syndicate", 
+        "created": "2013-12-11T23:57:20.727Z", 
+        "blocksize": 102400, 
+        "default_gateway_caps": "31", 
+        "private": true, 
+        "name": "princeton_syndicate-Volume", 
+        "enacted": null, 
+        "archive": false, 
+        "owner_id": 1
+    }
+},
+{
+    "pk": 3, 
+    "model": "syndicate.volume", 
+    "fields": {
+        "updated": "2014-05-23T18:52:00.782Z", 
+        "description": "LSST dataset", 
+        "created": "2014-05-23T18:52:00.782Z", 
+        "blocksize": 61440, 
+        "default_gateway_caps": "3", 
+        "private": false, 
+        "name": "LSST", 
+        "enacted": null, 
+        "archive": true, 
+        "owner_id": 1
+    }
+},
+{
+    "pk": 4, 
+    "model": "syndicate.volume", 
+    "fields": {
+        "updated": "2014-05-23T18:52:53.617Z", 
+        "description": "LHC dataset", 
+        "created": "2014-05-23T18:52:53.617Z", 
+        "blocksize": 61440, 
+        "default_gateway_caps": "3", 
+        "private": false, 
+        "name": "LHC", 
+        "enacted": null, 
+        "archive": true, 
+        "owner_id": 1
+    }
+},
+{
+    "pk": 5, 
+    "model": "syndicate.volume", 
+    "fields": {
+        "updated": "2014-05-23T18:53:20.349Z", 
+        "description": "NOAA dataset", 
+        "created": "2014-05-23T18:53:20.349Z", 
+        "blocksize": 61440, 
+        "default_gateway_caps": "3", 
+        "private": false, 
+        "name": "NOAA", 
+        "enacted": null, 
+        "archive": true, 
+        "owner_id": 1
+    }
+},
+{
+    "pk": 6, 
+    "model": "syndicate.volume", 
+    "fields": {
+        "updated": "2014-05-23T18:53:56.495Z", 
+        "description": "Measurement Lab dataset", 
+        "created": "2014-05-23T18:53:56.495Z", 
+        "blocksize": 61440, 
+        "default_gateway_caps": "3", 
+        "private": false, 
+        "name": "Measurement Lab", 
+        "enacted": null, 
+        "archive": true, 
+        "owner_id": 1
+    }
+},
+{
+    "pk": 7, 
+    "model": "syndicate.volume", 
+    "fields": {
+        "updated": "2014-05-23T18:54:35.691Z", 
+        "description": "Common Crawl dataset", 
+        "created": "2014-05-23T18:54:35.691Z", 
+        "blocksize": 61440, 
+        "default_gateway_caps": "3", 
+        "private": false, 
+        "name": "Common Crawl", 
+        "enacted": null, 
+        "archive": true, 
+        "owner_id": 1
+    }
+},
+{
+    "pk": 8, 
+    "model": "syndicate.volume", 
+    "fields": {
+        "updated": "2014-05-27T14:05:41.026Z", 
+        "description": "private volume for Analytics", 
+        "created": "2014-05-27T14:05:41.025Z", 
+        "blocksize": 61440, 
+        "default_gateway_caps": "7", 
+        "private": true, 
+        "name": "private_Analytics", 
+        "enacted": null, 
+        "archive": false, 
+        "owner_id": 7
+    }
+},
+{
+    "pk": 9, 
+    "model": "syndicate.volume", 
+    "fields": {
+        "updated": "2014-05-29T22:00:50.320Z", 
+        "description": "This is the bio5 demo volume", 
+        "created": "2014-05-29T22:00:25.032Z", 
+        "blocksize": 102400, 
+        "default_gateway_caps": "7", 
+        "private": true, 
+        "name": "demo-bio5", 
+        "enacted": null, 
+        "archive": false, 
+        "owner_id": 6
+    }
+},
+{
+    "pk": 1, 
+    "model": "syndicate.volumeaccessright", 
+    "fields": {
+        "updated": "2013-12-11T23:57:20.727Z", 
+        "created": "2013-12-11T23:57:20.727Z", 
+        "volume": 1, 
+        "gateway_caps": "3", 
+        "owner_id": 1, 
+        "enacted": null
+    }
+},
+{
+    "pk": 1, 
+    "model": "syndicate.volumeslice", 
+    "fields": {
+        "updated": "2014-05-27T14:05:41.084Z", 
+        "slice_id": 16, 
+        "created": "2014-05-27T14:05:41.084Z", 
+        "peer_portnum": 1026, 
+        "gateway_caps": "3", 
+        "volume_id": 8, 
+        "replicate_portnum": 1025, 
+        "credentials_blob": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 2, 
+    "model": "syndicate.volumeslice", 
+    "fields": {
+        "updated": "2014-05-29T22:00:50.340Z", 
+        "slice_id": 14, 
+        "created": "2014-05-29T22:00:50.340Z", 
+        "peer_portnum": 4444, 
+        "gateway_caps": "7", 
+        "volume_id": 9, 
+        "replicate_portnum": 5555, 
+        "credentials_blob": null, 
+        "enacted": null
     }
 },
 {
     "pk": 1, 
     "model": "core.siteprivilege", 
     "fields": {
-        "site": 24, 
         "updated": "2013-12-17T18:08:58.293Z", 
+        "created": "2013-12-17T18:08:58.293Z", 
+        "site": 24, 
         "role": 1, 
         "user": 15, 
-        "created": "2013-12-17T18:08:58.293Z"
+        "enacted": null
     }
 }
 ]
index 41a5cb2..d44ea0e 100644 (file)
@@ -1,4 +1,103 @@
 [
+{
+    "pk": 1, 
+    "model": "core.dashboardview", 
+    "fields": {
+        "url": "template:developer", 
+        "updated": "2014-05-19T22:11:11.408Z", 
+        "enacted": null, 
+        "name": "Developer", 
+        "created": "2014-05-19T22:11:11.408Z"
+    }
+},
+{
+    "pk": 2, 
+    "model": "core.dashboardview", 
+    "fields": {
+        "url": "template:cdnoperations", 
+        "updated": "2014-05-19T22:11:32.782Z", 
+        "enacted": null, 
+        "name": "CDN Operations", 
+        "created": "2014-05-19T22:11:32.781Z"
+    }
+},
+{
+    "pk": 3, 
+    "model": "core.dashboardview", 
+    "fields": {
+        "url": "template:tenant", 
+        "updated": "2014-05-19T22:11:46.731Z", 
+        "enacted": null, 
+        "name": "Tenant", 
+        "created": "2014-05-19T22:11:46.731Z"
+    }
+},
+{
+    "pk": 4, 
+    "model": "core.dashboardview", 
+    "fields": {
+        "url": "template:hpc_historical", 
+        "updated": "2014-05-19T22:11:59.956Z", 
+        "enacted": null, 
+        "name": "Historical", 
+        "created": "2014-05-19T22:11:59.956Z"
+    }
+},
+{
+    "pk": 5, 
+    "model": "core.dashboardview", 
+    "fields": {
+        "url": "template:customize", 
+        "updated": "2014-05-20T00:32:44.462Z", 
+        "enacted": null, 
+        "name": "Customize", 
+        "created": "2014-05-20T00:32:44.462Z"
+    }
+},
+{
+    "pk": 6, 
+    "model": "core.dashboardview", 
+    "fields": {
+        "url": "template:slice_interactions", 
+        "updated": "2014-05-20T00:33:32.454Z", 
+        "enacted": null, 
+        "name": "Slice Interactions", 
+        "created": "2014-05-20T00:33:32.454Z"
+    }
+},
+{
+    "pk": 7, 
+    "model": "core.dashboardview", 
+    "fields": {
+        "url": "template:cdn_nodes", 
+        "updated": "2014-05-20T00:33:52.101Z", 
+        "enacted": null, 
+        "name": "CDN Nodes", 
+        "created": "2014-05-20T00:33:52.101Z"
+    }
+},
+{
+    "pk": 8, 
+    "model": "core.dashboardview", 
+    "fields": {
+        "url": "http://nagiosadmin:letmein@node52.princeton.vicci.org:8088/nagios/cgi-bin/status.cgi?host=all", 
+        "updated": "2014-06-18T00:00:43.149Z", 
+        "enacted": null, 
+        "name": "nagios", 
+        "created": "2014-06-18T00:00:43.149Z"
+    }
+},
+{
+    "pk": 9, 
+    "model": "core.dashboardview", 
+    "fields": {
+        "url": "template:xsh", 
+        "updated": "2014-06-19T01:34:07.897Z", 
+        "enacted": null, 
+        "name": "xsh", 
+        "created": "2014-06-19T01:34:07.897Z"
+    }
+},
 {
     "pk": 3, 
     "model": "core.service", 
         "name": "HPC Service", 
         "versionNumber": "1.0", 
         "published": true, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "name": "Request Router Service", 
         "versionNumber": "1.0", 
         "published": true, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "name": "Syndicate", 
         "versionNumber": "", 
         "published": true, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "name": "Raven", 
         "versionNumber": "1.0", 
         "published": true, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "updated": "2013-12-17T18:00:47.910Z", 
         "name": "Stanford", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.stanford.edu/", 
         "location": "37.4294,-122.17200000000003", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            5
-        ], 
         "abbreviated_name": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "updated": "2013-12-17T18:00:38.431Z", 
         "name": "Washington", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "https://www.washington.edu/", 
         "location": "47.6531,-122.31299999999999", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            6
-        ], 
         "abbreviated_name": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "updated": "2013-12-17T18:00:28.495Z", 
         "name": "Princeton", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://princeton.edu/", 
         "location": "40.3502,-74.6524", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            7
-        ], 
         "abbreviated_name": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "updated": "2013-12-17T18:00:18.964Z", 
         "name": "GeorgiaTech", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.gatech.edu/", 
         "location": "33.7772,-84.39760000000001", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            8
-        ], 
         "abbreviated_name": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "updated": "2013-12-17T18:00:07.704Z", 
         "name": "MaxPlanck", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.mpi-sws.mpg.de/", 
         "location": "49.14,6.588999999999942", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            9
-        ], 
         "abbreviated_name": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "updated": "2013-06-21T21:17:13.982Z", 
         "name": "I2 Atlanta", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.internet2.edu", 
         "location": "33.0075,-84.0038", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            10
-        ], 
         "abbreviated_name": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "updated": "2013-06-21T21:17:13.982Z", 
         "name": "I2 Chicago", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.internet2.edu", 
         "location": "41.0085,-87.0065", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            10
-        ], 
         "abbreviated_name": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "updated": "2013-06-21T21:17:13.982Z", 
         "name": "I2 Houston", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.internet2.edu", 
         "location": "29.0077,-95.0037", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            10
-        ], 
         "abbreviated_name": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "updated": "2013-06-21T21:17:13.982Z", 
         "name": "I2 Kansas City", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.internet2.edu", 
         "location": "39.0012,-94.0063", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            10
-        ], 
         "abbreviated_name": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "updated": "2013-06-21T21:17:13.982Z", 
         "name": "I2 Los Angeles", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.internet2.edu", 
         "location": "33.2505,-117.503", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            10
-        ], 
         "abbreviated_name": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "updated": "2013-06-21T21:17:13.982Z", 
         "name": "I2 New York", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.internet2.edu", 
         "location": "40.72,-73.99", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            10
-        ], 
         "abbreviated_name": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "updated": "2013-06-21T21:17:13.982Z", 
         "name": "I2 Salt Lake City", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.internet2.edu", 
         "location": "40.7659,-111.844", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            10
-        ], 
         "abbreviated_name": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "updated": "2013-06-21T21:17:13.982Z", 
         "name": "I2 Seattle", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.internet2.edu", 
         "location": "47.6531,-122.313", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            10
-        ], 
         "abbreviated_name": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "updated": "2013-06-21T21:17:13.982Z", 
         "name": "I2 Washington DC", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.internet2.edu", 
         "location": "38.009,-77.0003", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            10
-        ], 
         "abbreviated_name": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "updated": "2013-12-17T17:30:14.491Z", 
         "name": "ON.Lab", 
         "created": "2013-04-03T23:14:11.072Z", 
-        "tenant_id": "", 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.onlab.us/", 
         "location": "37.452955,-122.18176599999998", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            5, 
-            6, 
-            7, 
-            8, 
-            9, 
-            10
-        ], 
         "abbreviated_name": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "updated": "2013-12-17T18:21:43.870Z", 
         "name": "I2 Singapore", 
         "created": "2013-12-17T17:08:49.669Z", 
-        "tenant_id": null, 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.internet2.edu/", 
         "location": "1.33544,103.88999999999999", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [
-            10
-        ], 
         "abbreviated_name": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "updated": "2013-12-17T18:08:01.373Z", 
         "name": "Arizona", 
         "created": "2013-12-17T18:07:14.190Z", 
-        "tenant_id": null, 
         "enabled": true, 
         "longitude": null, 
         "site_url": "http://www.cs.arizona.edu/", 
         "location": "32.2333,-110.94799999999998", 
         "latitude": null, 
         "is_public": true, 
-        "deployments": [], 
         "abbreviated_name": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
     "model": "core.siterole", 
     "fields": {
         "updated": "2013-12-17T18:08:54.842Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "role": "pi", 
         "created": "2013-12-17T18:08:54.842Z"
     }
     "model": "core.siterole", 
     "fields": {
         "updated": "2014-04-22T11:34:09.655Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "role": "admin", 
         "created": "2014-04-22T11:34:09.655Z"
     }
     "model": "core.siterole", 
     "fields": {
         "updated": "2014-04-22T11:34:27.403Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "role": "tech", 
         "created": "2014-04-22T11:34:27.403Z"
     }
     "model": "core.siterole", 
     "fields": {
         "updated": "2014-04-22T11:34:39.770Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "role": "billing", 
         "created": "2014-04-22T11:34:39.770Z"
     }
     "model": "core.deployment", 
     "fields": {
         "updated": "2013-04-03T22:57:23.015Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "US-Stanford", 
         "created": "2013-04-03T22:57:23.015Z"
     }
     "model": "core.deployment", 
     "fields": {
         "updated": "2013-04-03T22:57:23.015Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "US-Washington", 
         "created": "2013-04-03T22:57:23.015Z"
     }
     "model": "core.deployment", 
     "fields": {
         "updated": "2013-04-03T22:57:23.015Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "US-Princeton", 
         "created": "2013-04-03T22:57:23.015Z"
     }
     "model": "core.deployment", 
     "fields": {
         "updated": "2013-04-03T22:57:23.015Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "US-GeorgiaTech", 
         "created": "2013-04-03T22:57:23.015Z"
     }
     "model": "core.deployment", 
     "fields": {
         "updated": "2013-04-03T22:57:23.015Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "EU-MaxPlanck", 
         "created": "2013-04-03T22:57:23.015Z"
     }
     "model": "core.deployment", 
     "fields": {
         "updated": "2013-04-03T22:57:23.015Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "Internet2", 
         "created": "2013-04-03T22:57:23.015Z"
     }
 },
+{
+    "pk": 1, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-07T23:52:01.453Z", 
+        "created": "2014-05-07T23:52:01.453Z", 
+        "tenant_id": null, 
+        "site": 22, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
+{
+    "pk": 2, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-07T23:52:01.455Z", 
+        "created": "2014-05-07T23:52:01.455Z", 
+        "tenant_id": null, 
+        "site": 22, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 3, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-07T23:52:01.456Z", 
+        "created": "2014-05-07T23:52:01.456Z", 
+        "tenant_id": null, 
+        "site": 22, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 4, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-07T23:52:01.457Z", 
+        "created": "2014-05-07T23:52:01.456Z", 
+        "tenant_id": null, 
+        "site": 22, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 5, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-07T23:52:01.457Z", 
+        "created": "2014-05-07T23:52:01.457Z", 
+        "tenant_id": null, 
+        "site": 22, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 6, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-07T23:52:01.458Z", 
+        "created": "2014-05-07T23:52:01.458Z", 
+        "tenant_id": null, 
+        "site": 22, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 7, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:00:37.305Z", 
+        "created": "2014-05-08T00:00:37.305Z", 
+        "tenant_id": null, 
+        "site": 23, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 8, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:01:18.181Z", 
+        "created": "2014-05-08T00:01:18.181Z", 
+        "tenant_id": null, 
+        "site": 21, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 9, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:01:29.768Z", 
+        "created": "2014-05-08T00:01:29.768Z", 
+        "tenant_id": null, 
+        "site": 20, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 10, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:01:52.173Z", 
+        "created": "2014-05-08T00:01:52.173Z", 
+        "tenant_id": null, 
+        "site": 19, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 11, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:02:03.435Z", 
+        "created": "2014-05-08T00:02:03.435Z", 
+        "tenant_id": null, 
+        "site": 18, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 12, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:02:16.038Z", 
+        "created": "2014-05-08T00:02:16.038Z", 
+        "tenant_id": null, 
+        "site": 17, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 13, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:02:33.626Z", 
+        "created": "2014-05-08T00:02:33.626Z", 
+        "tenant_id": null, 
+        "site": 16, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 14, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:02:46.549Z", 
+        "created": "2014-05-08T00:02:46.549Z", 
+        "tenant_id": null, 
+        "site": 15, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 15, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:03:01.445Z", 
+        "created": "2014-05-08T00:03:01.445Z", 
+        "tenant_id": null, 
+        "site": 14, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 16, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:03:18.238Z", 
+        "created": "2014-05-08T00:03:18.238Z", 
+        "tenant_id": null, 
+        "site": 13, 
+        "deployment": 10, 
+        "enacted": null
+    }
+},
+{
+    "pk": 17, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:03:32.156Z", 
+        "created": "2014-05-08T00:03:32.156Z", 
+        "tenant_id": null, 
+        "site": 12, 
+        "deployment": 9, 
+        "enacted": null
+    }
+},
+{
+    "pk": 18, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:03:45.449Z", 
+        "created": "2014-05-08T00:03:45.448Z", 
+        "tenant_id": null, 
+        "site": 11, 
+        "deployment": 8, 
+        "enacted": null
+    }
+},
+{
+    "pk": 19, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:03:59.510Z", 
+        "created": "2014-05-08T00:03:59.510Z", 
+        "tenant_id": null, 
+        "site": 10, 
+        "deployment": 7, 
+        "enacted": null
+    }
+},
+{
+    "pk": 20, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:04:12.516Z", 
+        "created": "2014-05-08T00:04:12.516Z", 
+        "tenant_id": null, 
+        "site": 9, 
+        "deployment": 6, 
+        "enacted": null
+    }
+},
+{
+    "pk": 21, 
+    "model": "core.sitedeployments", 
+    "fields": {
+        "updated": "2014-05-08T00:04:25.576Z", 
+        "created": "2014-05-08T00:04:25.576Z", 
+        "tenant_id": null, 
+        "site": 8, 
+        "deployment": 5, 
+        "enacted": null
+    }
+},
 {
     "pk": 1, 
     "model": "core.user", 
         "is_active": true, 
         "site": null, 
         "phone": null, 
-        "kuser_id": null, 
         "is_staff": true, 
         "last_login": "2014-04-22T11:32:36.356Z", 
         "timezone": "America/New_York", 
         "is_admin": true, 
         "password": "pbkdf2_sha256$10000$v5qKhIyhSQ2N$V8vh2mkqYdjQib6d2jBkpwV57eMBfhd/9eiXqaDLUWg=", 
         "email": "padmin@vicci.org", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "is_active": true, 
         "site": 22, 
         "phone": null, 
-        "kuser_id": null, 
         "is_staff": true, 
         "last_login": "2013-12-14T03:21:24.872Z", 
         "timezone": "America/New_York", 
         "is_admin": true, 
         "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
         "email": "tony@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "is_active": true, 
         "site": 22, 
         "phone": null, 
-        "kuser_id": null, 
         "is_staff": true, 
         "last_login": "2013-12-04T20:46:15.904Z", 
         "timezone": "America/New_York", 
         "is_admin": true, 
         "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
         "email": "mike@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "is_active": true, 
         "site": 22, 
         "phone": null, 
-        "kuser_id": null, 
         "is_staff": true, 
         "last_login": "2013-12-18T21:47:08.698Z", 
         "timezone": "America/New_York", 
         "is_admin": true, 
         "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
         "email": "andy@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "is_active": true, 
         "site": 22, 
         "phone": null, 
-        "kuser_id": null, 
         "is_staff": true, 
         "last_login": "2013-12-17T16:21:46.493Z", 
         "timezone": "America/New_York", 
         "is_admin": true, 
         "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
         "email": "sapan@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "is_active": true, 
         "site": 10, 
         "phone": "", 
-        "kuser_id": null, 
         "is_staff": true, 
         "last_login": "2013-09-22T21:48:01.047Z", 
         "timezone": "America/New_York", 
         "is_admin": true, 
         "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
         "email": "jcnelson@cs.princeton.edu", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "is_active": true, 
         "site": 22, 
         "phone": "", 
-        "kuser_id": null, 
         "is_staff": true, 
         "last_login": "2013-12-18T21:41:10.802Z", 
         "timezone": "America/New_York", 
         "is_admin": true, 
         "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
         "email": "llp@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "is_active": true, 
         "site": 22, 
         "phone": null, 
-        "kuser_id": null, 
         "is_staff": true, 
         "last_login": "2013-12-19T01:32:31.049Z", 
         "timezone": "America/New_York", 
         "is_admin": true, 
         "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
         "email": "scott@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "is_active": true, 
         "site": 22, 
         "phone": null, 
-        "kuser_id": null, 
         "is_staff": true, 
         "last_login": "2013-09-22T21:48:01.047Z", 
         "timezone": "America/New_York", 
         "is_admin": true, 
         "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
         "email": "ali@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "is_active": true, 
         "site": 22, 
         "phone": null, 
-        "kuser_id": null, 
         "is_staff": true, 
         "last_login": "2013-09-22T21:48:01.047Z", 
         "timezone": "America/New_York", 
         "is_admin": true, 
         "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
         "email": "bill@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "is_active": true, 
         "site": 22, 
         "phone": null, 
-        "kuser_id": null, 
         "is_staff": true, 
         "last_login": "2013-09-22T21:48:01.047Z", 
         "timezone": "America/New_York", 
         "is_admin": true, 
         "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
         "email": "guru@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "is_active": true, 
         "site": 22, 
         "phone": null, 
-        "kuser_id": null, 
         "is_staff": true, 
         "last_login": "2013-09-22T21:48:01.047Z", 
         "timezone": "America/New_York", 
         "is_admin": true, 
         "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
         "email": "marc@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "is_active": true, 
         "site": 22, 
         "phone": null, 
-        "kuser_id": null, 
         "is_staff": true, 
         "last_login": "2013-09-22T21:48:01.047Z", 
         "timezone": "America/New_York", 
         "is_admin": true, 
         "password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=", 
         "email": "siobhan@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "is_active": true, 
         "site": 22, 
         "phone": "", 
-        "kuser_id": null, 
         "is_staff": true, 
         "last_login": "2013-12-19T00:59:55.668Z", 
         "timezone": "America/New_York", 
         "is_admin": true, 
         "password": "pbkdf2_sha256$10000$jaLSTW2ksHEN$HDpjDKieFDjMvtV5wbF/ow3zfq8EqcFtNXLfuo+150s=", 
         "email": "demo@onlab.us", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "is_active": true, 
         "site": 24, 
         "phone": "", 
-        "kuser_id": null, 
         "is_staff": true, 
         "last_login": "2013-12-17T18:08:01.356Z", 
         "timezone": "America/New_York", 
         "is_admin": true, 
         "password": "!", 
         "email": "jhh@cs.arizona.edu", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "commitment": 0, 
         "name": "Best Effort", 
         "upgradeRequiresApproval": false, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "commitment": 365, 
         "name": "Silver", 
         "upgradeRequiresApproval": false, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "commitment": 365, 
         "name": "Gold", 
         "upgradeRequiresApproval": false, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
     "pk": 4, 
     "model": "core.slice", 
     "fields": {
-        "router_id": null, 
         "updated": "2013-12-18T22:24:44.850Z", 
         "name": "HyperCache", 
         "service": 3, 
         "created": "2013-04-03T23:14:11.072Z", 
-        "network_id": null, 
-        "tenant_id": "", 
         "description": "HyperCache slice for HyperCache service.", 
         "serviceClass": 1, 
         "enabled": true, 
         "site": 22, 
         "omf_friendly": false, 
-        "subnet_id": null, 
         "slice_url": "", 
         "creator": 1, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
     "pk": 6, 
     "model": "core.slice", 
     "fields": {
-        "router_id": null, 
         "updated": "2013-12-19T00:14:36.783Z", 
         "name": "Syndicate", 
         "service": 5, 
         "created": "2013-04-03T23:14:11.072Z", 
-        "network_id": null, 
-        "tenant_id": "", 
         "description": "", 
         "serviceClass": 1, 
         "enabled": true, 
         "site": 22, 
         "omf_friendly": false, 
-        "subnet_id": null, 
         "slice_url": "", 
         "creator": 1, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
     "pk": 8, 
     "model": "core.slice", 
     "fields": {
-        "router_id": null, 
         "updated": "2013-12-19T00:15:11.298Z", 
         "name": "DnsRedir", 
         "service": 4, 
         "created": "2013-12-04T22:48:35.584Z", 
-        "network_id": null, 
-        "tenant_id": "", 
         "description": "DNS Redirection slice for RequestRouter service.", 
         "serviceClass": 2, 
         "enabled": true, 
         "site": 22, 
         "omf_friendly": false, 
-        "subnet_id": null, 
         "slice_url": "", 
         "creator": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
     "pk": 9, 
     "model": "core.slice", 
     "fields": {
-        "router_id": null, 
         "updated": "2013-12-18T23:32:07.617Z", 
         "name": "DnsDemux", 
         "service": 4, 
         "created": "2013-12-04T22:49:23.051Z", 
-        "network_id": null, 
-        "tenant_id": "", 
         "description": "DNS Demultiplexing slice for RequestRouter service. ", 
         "serviceClass": 2, 
         "enabled": true, 
         "site": 22, 
         "omf_friendly": false, 
-        "subnet_id": null, 
         "slice_url": "", 
         "creator": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
     "pk": 10, 
     "model": "core.slice", 
     "fields": {
-        "router_id": null, 
         "updated": "2013-12-18T22:06:00.330Z", 
         "name": "Infrastructure", 
         "service": null, 
         "created": "2013-12-09T14:13:15.392Z", 
-        "network_id": null, 
-        "tenant_id": "", 
         "description": "", 
         "serviceClass": 1, 
         "enabled": true, 
         "site": 22, 
         "omf_friendly": false, 
-        "subnet_id": null, 
         "slice_url": "", 
         "creator": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
     "pk": 11, 
     "model": "core.slice", 
     "fields": {
-        "router_id": null, 
         "updated": "2013-12-17T18:09:29.065Z", 
         "name": "Stork", 
         "service": 8, 
         "created": "2013-12-13T21:49:59.476Z", 
-        "network_id": null, 
-        "tenant_id": "", 
         "description": "The Stork Package Management Service", 
         "serviceClass": 1, 
         "enabled": true, 
         "site": 24, 
         "omf_friendly": false, 
-        "subnet_id": null, 
         "slice_url": "", 
         "creator": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
     "pk": 12, 
     "model": "core.slice", 
     "fields": {
-        "router_id": null, 
         "updated": "2013-12-17T18:09:20.587Z", 
         "name": "Owl", 
         "service": 8, 
         "created": "2013-12-13T21:52:15.590Z", 
-        "network_id": null, 
-        "tenant_id": "", 
         "description": "The Owl Data Collection service", 
         "serviceClass": 1, 
         "enabled": true, 
         "site": 24, 
         "omf_friendly": false, 
-        "subnet_id": null, 
         "slice_url": "", 
         "creator": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
     "pk": 13, 
     "model": "core.slice", 
     "fields": {
-        "router_id": null, 
         "updated": "2013-12-18T23:34:55.351Z", 
         "name": "Hadoop", 
         "service": null, 
         "created": "2013-12-13T21:54:20.895Z", 
-        "network_id": null, 
-        "tenant_id": "", 
         "description": "Hadoop map-reduce service", 
         "serviceClass": 2, 
         "enabled": true, 
         "site": 22, 
         "omf_friendly": false, 
-        "subnet_id": null, 
         "slice_url": "", 
         "creator": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
     "pk": 14, 
     "model": "core.slice", 
     "fields": {
-        "router_id": null, 
         "updated": "2013-12-18T22:21:36.462Z", 
         "name": "test", 
         "service": null, 
         "created": "2013-12-13T21:56:57.299Z", 
-        "network_id": null, 
-        "tenant_id": "", 
         "description": "Test slice number one.", 
         "serviceClass": 1, 
         "enabled": true, 
         "site": 10, 
         "omf_friendly": false, 
-        "subnet_id": null, 
         "slice_url": "", 
         "creator": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
     "pk": 15, 
     "model": "core.slice", 
     "fields": {
-        "router_id": null, 
         "updated": "2013-12-18T22:22:04.676Z", 
         "name": "test2", 
         "service": null, 
         "created": "2013-12-13T22:00:03.049Z", 
-        "network_id": null, 
-        "tenant_id": "", 
         "description": "test slice number two.", 
         "serviceClass": 1, 
         "enabled": true, 
         "site": 10, 
         "omf_friendly": false, 
-        "subnet_id": null, 
         "slice_url": "", 
         "creator": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
     "model": "core.slicerole", 
     "fields": {
         "updated": "2013-12-18T21:09:27.717Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "role": "admin", 
         "created": "2013-12-18T21:09:27.717Z"
     }
     "model": "core.slicerole", 
     "fields": {
         "updated": "2013-12-18T21:09:35.074Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "role": "default", 
         "created": "2013-12-18T21:09:35.074Z"
     }
         "created": "2013-12-18T21:21:37.713Z", 
         "role": 1, 
         "user": 2, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:37.729Z", 
         "role": 1, 
         "user": 3, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:37.739Z", 
         "role": 1, 
         "user": 4, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:37.752Z", 
         "role": 1, 
         "user": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:37.771Z", 
         "role": 1, 
         "user": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:37.789Z", 
         "role": 1, 
         "user": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:37.808Z", 
         "role": 1, 
         "user": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:37.835Z", 
         "role": 1, 
         "user": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:37.862Z", 
         "role": 1, 
         "user": 11, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:37.890Z", 
         "role": 1, 
         "user": 12, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:37.925Z", 
         "role": 1, 
         "user": 13, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:37.960Z", 
         "role": 1, 
         "user": 14, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:37.996Z", 
         "role": 1, 
         "user": 15, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.038Z", 
         "role": 1, 
         "user": 1, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.091Z", 
         "role": 1, 
         "user": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.103Z", 
         "role": 1, 
         "user": 2, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.111Z", 
         "role": 1, 
         "user": 3, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.122Z", 
         "role": 1, 
         "user": 4, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.141Z", 
         "role": 1, 
         "user": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.160Z", 
         "role": 1, 
         "user": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.179Z", 
         "role": 1, 
         "user": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.206Z", 
         "role": 1, 
         "user": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.233Z", 
         "role": 1, 
         "user": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.260Z", 
         "role": 1, 
         "user": 11, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.287Z", 
         "role": 1, 
         "user": 12, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.322Z", 
         "role": 1, 
         "user": 13, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.358Z", 
         "role": 1, 
         "user": 14, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.393Z", 
         "role": 1, 
         "user": 15, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.428Z", 
         "role": 1, 
         "user": 1, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.472Z", 
         "role": 1, 
         "user": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.484Z", 
         "role": 1, 
         "user": 2, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.492Z", 
         "role": 1, 
         "user": 3, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.503Z", 
         "role": 1, 
         "user": 4, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.522Z", 
         "role": 1, 
         "user": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.540Z", 
         "role": 1, 
         "user": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.559Z", 
         "role": 1, 
         "user": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.578Z", 
         "role": 1, 
         "user": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.605Z", 
         "role": 1, 
         "user": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.632Z", 
         "role": 1, 
         "user": 11, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.660Z", 
         "role": 1, 
         "user": 12, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.695Z", 
         "role": 1, 
         "user": 13, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.731Z", 
         "role": 1, 
         "user": 14, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.766Z", 
         "role": 1, 
         "user": 15, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.801Z", 
         "role": 1, 
         "user": 1, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.845Z", 
         "role": 1, 
         "user": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.857Z", 
         "role": 1, 
         "user": 2, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.864Z", 
         "role": 1, 
         "user": 3, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.875Z", 
         "role": 1, 
         "user": 4, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.894Z", 
         "role": 1, 
         "user": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.913Z", 
         "role": 1, 
         "user": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.932Z", 
         "role": 1, 
         "user": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.951Z", 
         "role": 1, 
         "user": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:38.978Z", 
         "role": 1, 
         "user": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.005Z", 
         "role": 1, 
         "user": 11, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.032Z", 
         "role": 1, 
         "user": 12, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.067Z", 
         "role": 1, 
         "user": 13, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.103Z", 
         "role": 1, 
         "user": 14, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.139Z", 
         "role": 1, 
         "user": 15, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.175Z", 
         "role": 1, 
         "user": 1, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.219Z", 
         "role": 1, 
         "user": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.229Z", 
         "role": 1, 
         "user": 2, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.238Z", 
         "role": 1, 
         "user": 3, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.248Z", 
         "role": 1, 
         "user": 4, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.267Z", 
         "role": 1, 
         "user": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.286Z", 
         "role": 1, 
         "user": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.304Z", 
         "role": 1, 
         "user": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.324Z", 
         "role": 1, 
         "user": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.351Z", 
         "role": 1, 
         "user": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.378Z", 
         "role": 1, 
         "user": 11, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.405Z", 
         "role": 1, 
         "user": 12, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.440Z", 
         "role": 1, 
         "user": 13, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.476Z", 
         "role": 1, 
         "user": 14, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.511Z", 
         "role": 1, 
         "user": 15, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.547Z", 
         "role": 1, 
         "user": 1, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.590Z", 
         "role": 1, 
         "user": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.602Z", 
         "role": 1, 
         "user": 2, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.610Z", 
         "role": 1, 
         "user": 3, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.621Z", 
         "role": 1, 
         "user": 4, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.640Z", 
         "role": 1, 
         "user": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.659Z", 
         "role": 1, 
         "user": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.678Z", 
         "role": 1, 
         "user": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.705Z", 
         "role": 1, 
         "user": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.732Z", 
         "role": 1, 
         "user": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.759Z", 
         "role": 1, 
         "user": 11, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.786Z", 
         "role": 1, 
         "user": 12, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.821Z", 
         "role": 1, 
         "user": 13, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.857Z", 
         "role": 1, 
         "user": 14, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.891Z", 
         "role": 1, 
         "user": 15, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.927Z", 
         "role": 1, 
         "user": 1, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.971Z", 
         "role": 1, 
         "user": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.983Z", 
         "role": 1, 
         "user": 2, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:39.991Z", 
         "role": 1, 
         "user": 3, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.002Z", 
         "role": 1, 
         "user": 4, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.020Z", 
         "role": 1, 
         "user": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.039Z", 
         "role": 1, 
         "user": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.058Z", 
         "role": 1, 
         "user": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.077Z", 
         "role": 1, 
         "user": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.104Z", 
         "role": 1, 
         "user": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.131Z", 
         "role": 1, 
         "user": 11, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.159Z", 
         "role": 1, 
         "user": 12, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.194Z", 
         "role": 1, 
         "user": 13, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.230Z", 
         "role": 1, 
         "user": 14, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.265Z", 
         "role": 1, 
         "user": 15, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.300Z", 
         "role": 1, 
         "user": 1, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.344Z", 
         "role": 1, 
         "user": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.355Z", 
         "role": 1, 
         "user": 2, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.364Z", 
         "role": 1, 
         "user": 3, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.374Z", 
         "role": 1, 
         "user": 4, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.393Z", 
         "role": 1, 
         "user": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.412Z", 
         "role": 1, 
         "user": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.431Z", 
         "role": 1, 
         "user": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.450Z", 
         "role": 1, 
         "user": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.477Z", 
         "role": 1, 
         "user": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.504Z", 
         "role": 1, 
         "user": 11, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.531Z", 
         "role": 1, 
         "user": 12, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.566Z", 
         "role": 1, 
         "user": 13, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.602Z", 
         "role": 1, 
         "user": 14, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.637Z", 
         "role": 1, 
         "user": 15, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.673Z", 
         "role": 1, 
         "user": 1, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.717Z", 
         "role": 1, 
         "user": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.728Z", 
         "role": 1, 
         "user": 2, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.736Z", 
         "role": 1, 
         "user": 3, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.747Z", 
         "role": 1, 
         "user": 4, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.766Z", 
         "role": 1, 
         "user": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.784Z", 
         "role": 1, 
         "user": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.803Z", 
         "role": 1, 
         "user": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.822Z", 
         "role": 1, 
         "user": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.849Z", 
         "role": 1, 
         "user": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.877Z", 
         "role": 1, 
         "user": 11, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.903Z", 
         "role": 1, 
         "user": 12, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.939Z", 
         "role": 1, 
         "user": 13, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:40.975Z", 
         "role": 1, 
         "user": 14, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:41.010Z", 
         "role": 1, 
         "user": 15, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:41.045Z", 
         "role": 1, 
         "user": 1, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:41.089Z", 
         "role": 1, 
         "user": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:41.101Z", 
         "role": 1, 
         "user": 2, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:41.109Z", 
         "role": 1, 
         "user": 3, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:41.119Z", 
         "role": 1, 
         "user": 4, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:41.138Z", 
         "role": 1, 
         "user": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:41.157Z", 
         "role": 1, 
         "user": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:41.176Z", 
         "role": 1, 
         "user": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:41.203Z", 
         "role": 1, 
         "user": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:41.231Z", 
         "role": 1, 
         "user": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:41.258Z", 
         "role": 1, 
         "user": 11, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:41.285Z", 
         "role": 1, 
         "user": 12, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:41.320Z", 
         "role": 1, 
         "user": 13, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:41.356Z", 
         "role": 1, 
         "user": 14, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:41.391Z", 
         "role": 1, 
         "user": 15, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:41.426Z", 
         "role": 1, 
         "user": 1, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T21:21:41.470Z", 
         "role": 1, 
         "user": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-09T14:26:56.787Z", 
         "container_format": "bare", 
         "disk_format": "raw", 
-        "image_id": "d4bdbba2-6883-4232-863a-202fd4c56c21", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
+    }
+},
+{
+    "pk": 2, 
+    "model": "core.image", 
+    "fields": {
+        "updated": "2014-04-23T04:10:59.634Z", 
+        "name": "Ubuntu 12.04 LTS", 
+        "created": "2014-04-23T04:10:59.634Z", 
+        "container_format": "bare", 
+        "disk_format": "raw", 
+        "path": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 3, 
+    "model": "core.image", 
+    "fields": {
+        "updated": "2014-04-23T04:11:24.968Z", 
+        "name": "Hadoop 2.4.0", 
+        "created": "2014-04-23T04:11:24.968Z", 
+        "container_format": "bare", 
+        "disk_format": "raw", 
+        "path": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 4, 
+    "model": "core.image", 
+    "fields": {
+        "updated": "2014-04-23T04:11:37.141Z", 
+        "name": "MPI 1.8", 
+        "created": "2014-04-23T04:11:37.141Z", 
+        "container_format": "bare", 
+        "disk_format": "raw", 
+        "path": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 1, 
+    "model": "core.imagedeployments", 
+    "fields": {
+        "updated": "2014-06-21T00:49:59.394Z", 
+        "created": "2014-06-21T00:49:59.394Z", 
+        "image": 2, 
+        "deployment": 8, 
+        "glance_image_id": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 2, 
+    "model": "core.imagedeployments", 
+    "fields": {
+        "updated": "2014-06-21T00:49:59.405Z", 
+        "created": "2014-06-21T00:49:59.405Z", 
+        "image": 3, 
+        "deployment": 8, 
+        "glance_image_id": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 3, 
+    "model": "core.imagedeployments", 
+    "fields": {
+        "updated": "2014-06-21T00:49:59.406Z", 
+        "created": "2014-06-21T00:49:59.406Z", 
+        "image": 4, 
+        "deployment": 8, 
+        "glance_image_id": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 4, 
+    "model": "core.imagedeployments", 
+    "fields": {
+        "updated": "2014-06-21T00:50:09.813Z", 
+        "created": "2014-06-21T00:50:09.813Z", 
+        "image": 2, 
+        "deployment": 9, 
+        "glance_image_id": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 5, 
+    "model": "core.imagedeployments", 
+    "fields": {
+        "updated": "2014-06-21T00:50:09.815Z", 
+        "created": "2014-06-21T00:50:09.815Z", 
+        "image": 3, 
+        "deployment": 9, 
+        "glance_image_id": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 6, 
+    "model": "core.imagedeployments", 
+    "fields": {
+        "updated": "2014-06-21T00:50:09.816Z", 
+        "created": "2014-06-21T00:50:09.816Z", 
+        "image": 4, 
+        "deployment": 9, 
+        "glance_image_id": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 7, 
+    "model": "core.imagedeployments", 
+    "fields": {
+        "updated": "2014-06-21T00:50:22.646Z", 
+        "created": "2014-06-21T00:50:22.646Z", 
+        "image": 2, 
+        "deployment": 7, 
+        "glance_image_id": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 8, 
+    "model": "core.imagedeployments", 
+    "fields": {
+        "updated": "2014-06-21T00:50:22.648Z", 
+        "created": "2014-06-21T00:50:22.648Z", 
+        "image": 3, 
+        "deployment": 7, 
+        "glance_image_id": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 9, 
+    "model": "core.imagedeployments", 
+    "fields": {
+        "updated": "2014-06-21T00:50:22.649Z", 
+        "created": "2014-06-21T00:50:22.649Z", 
+        "image": 4, 
+        "deployment": 7, 
+        "glance_image_id": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 10, 
+    "model": "core.imagedeployments", 
+    "fields": {
+        "updated": "2014-06-21T00:50:35.460Z", 
+        "created": "2014-06-21T00:50:35.460Z", 
+        "image": 2, 
+        "deployment": 6, 
+        "glance_image_id": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 11, 
+    "model": "core.imagedeployments", 
+    "fields": {
+        "updated": "2014-06-21T00:50:35.461Z", 
+        "created": "2014-06-21T00:50:35.461Z", 
+        "image": 3, 
+        "deployment": 6, 
+        "glance_image_id": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 12, 
+    "model": "core.imagedeployments", 
+    "fields": {
+        "updated": "2014-06-21T00:50:35.462Z", 
+        "created": "2014-06-21T00:50:35.462Z", 
+        "image": 4, 
+        "deployment": 6, 
+        "glance_image_id": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 13, 
+    "model": "core.imagedeployments", 
+    "fields": {
+        "updated": "2014-06-21T00:50:47.991Z", 
+        "created": "2014-06-21T00:50:47.991Z", 
+        "image": 2, 
+        "deployment": 5, 
+        "glance_image_id": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 14, 
+    "model": "core.imagedeployments", 
+    "fields": {
+        "updated": "2014-06-21T00:50:47.993Z", 
+        "created": "2014-06-21T00:50:47.993Z", 
+        "image": 3, 
+        "deployment": 5, 
+        "glance_image_id": null, 
+        "enacted": null
+    }
+},
+{
+    "pk": 15, 
+    "model": "core.imagedeployments", 
+    "fields": {
+        "updated": "2014-06-21T00:50:47.994Z", 
+        "created": "2014-06-21T00:50:47.994Z", 
+        "image": 4, 
+        "deployment": 5, 
+        "glance_image_id": null, 
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 8, 
         "deployment": 5, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 9, 
         "deployment": 6, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 10, 
         "deployment": 7, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 11, 
         "deployment": 8, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 12, 
         "deployment": 9, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 13, 
         "deployment": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 13, 
         "deployment": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 14, 
         "deployment": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 14, 
         "deployment": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 15, 
         "deployment": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 15, 
         "deployment": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 16, 
         "deployment": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 16, 
         "deployment": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 17, 
         "deployment": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 17, 
         "deployment": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 18, 
         "deployment": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 18, 
         "deployment": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 19, 
         "deployment": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 19, 
         "deployment": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 20, 
         "deployment": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 20, 
         "deployment": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 21, 
         "deployment": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-04-03T23:14:11.072Z", 
         "site": 21, 
         "deployment": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-17T17:10:48.740Z", 
         "site": 23, 
         "deployment": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-17T17:10:48.741Z", 
         "site": 23, 
         "deployment": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-17T17:10:48.742Z", 
         "site": 23, 
         "deployment": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-17T17:10:48.743Z", 
         "site": 23, 
         "deployment": 10, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "cost": 7, 
         "maxUnitsNode": 0, 
         "maxDuration": 0, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "cost": 7, 
         "maxUnitsNode": 0, 
         "maxDuration": 0, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "cost": 7, 
         "maxUnitsNode": 0, 
         "maxDuration": 0, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "cost": 0, 
         "maxUnitsNode": 6, 
         "maxDuration": 8760, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "cost": 7, 
         "maxUnitsNode": 6, 
         "maxDuration": 168, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 0, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 0, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 0, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 0, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 0, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 0, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 0, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 0, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 0, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 0, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "creator": 8, 
         "numberCores": 1, 
         "instance_id": null, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T23:32:07.665Z", 
         "startTime": "2013-12-20T20:31:42Z", 
         "duration": 48, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T23:33:27.591Z", 
         "startTime": "2013-12-20T20:33:23Z", 
         "duration": 48, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T23:34:55.406Z", 
         "startTime": "2013-12-20T20:34:32Z", 
         "duration": 24, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T23:34:55.407Z", 
         "startTime": "2013-12-23T20:34:49Z", 
         "duration": 24, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T23:32:41.622Z", 
         "reservationSet": 1, 
         "sliver": 78, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T23:34:02.152Z", 
         "reservationSet": 2, 
         "sliver": 77, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T23:35:25.731Z", 
         "reservationSet": 4, 
         "sliver": 84, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T23:35:25.732Z", 
         "reservationSet": 4, 
         "sliver": 85, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T23:35:25.733Z", 
         "reservationSet": 4, 
         "sliver": 86, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T23:35:45.486Z", 
         "reservationSet": 3, 
         "sliver": 84, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T23:35:45.487Z", 
         "reservationSet": 3, 
         "sliver": 85, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "created": "2013-12-18T23:35:45.488Z", 
         "reservationSet": 3, 
         "sliver": 86, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
     "model": "core.networktemplate", 
     "fields": {
         "guaranteedBandwidth": 0, 
-        "description": "Connect a sliver to the public network using dedicated public IPv4 address", 
+        "description": "Connect a sliver to the public network using a dedicated public IPv4 address",
         "created": "2013-12-09T14:15:16.899Z", 
-        "sharedNetworkName": "", 
+        "sharedNetworkName": "ext-net",
         "updated": "2013-12-09T14:15:16.899Z", 
         "visibility": "private", 
-        "name": "dedicated-public-IPv4", 
-        "translation": "none", 
-        "sharedNetworkId": "", 
-        "enacted": null,
-        "backend_status":"ok"
-    }
-},
-{
-    "pk": 2, 
-    "model": "core.networktemplate", 
-    "fields": {
-        "guaranteedBandwidth": 0, 
-        "description": "For PlanetLab compatibility: connect to the public network by sharing the node's public IP address.", 
-        "created": "2013-12-09T14:16:12.358Z", 
-        "sharedNetworkName": "", 
-        "updated": "2013-12-09T14:16:12.358Z", 
-        "visibility": "public", 
-        "name": "planetlab-legacy", 
+        "name": "Public dedicated IPv4",
         "translation": "none", 
         "sharedNetworkId": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
     "model": "core.networktemplate", 
     "fields": {
         "guaranteedBandwidth": 0, 
-        "description": "Connect a sliver to the public network via NAT", 
+        "description": "Connect a sliver to the public network via NAT, with port forwarding",
         "created": "2013-12-09T14:17:29.551Z", 
         "sharedNetworkName": "nat-net", 
         "updated": "2013-12-09T14:17:29.551Z", 
         "visibility": "private", 
-        "name": "private-IPv4-plus-NAT", 
+        "name": "Public shared IPv4",
         "translation": "NAT", 
-        "sharedNetworkId": "51d641ba-9e1e-46f5-8069-bf4a929f851f", 
-        "enacted": null,
-        "backend_status":"ok"
+        "sharedNetworkId": "",
+        "enacted": null
     }
 },
 {
         "sharedNetworkName": "", 
         "updated": "2013-12-09T14:18:02.336Z", 
         "visibility": "private", 
-        "name": "private-virtual", 
+        "name": "Private",
         "translation": "none", 
         "sharedNetworkId": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 1, 
         "owner": 10, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 1, 
         "owner": 10, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 1, 
         "owner": 10, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 1, 
         "owner": 10, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 1, 
         "owner": 10, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 1, 
         "owner": 10, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 1, 
         "owner": 10, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 1, 
         "owner": 10, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 1, 
         "owner": 10, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 1, 
         "owner": 10, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 1, 
         "owner": 10, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 4, 
         "owner": 11, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 4, 
         "owner": 12, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 4, 
         "owner": 13, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 1, 
         "owner": 14, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 3, 
         "owner": 15, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 4, 
         "owner": 10, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 1, 
         "owner": 10, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 4, 
         "owner": 9, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 1, 
         "owner": 9, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 4, 
         "owner": 8, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 1, 
         "owner": 8, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 4, 
         "owner": 4, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 1, 
         "owner": 4, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 4, 
         "owner": 6, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "template": 1, 
         "owner": 6, 
         "ports": "", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
     "fields": {
         "slice": 11, 
         "updated": "2013-12-13T21:51:09.711Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 12, 
         "created": "2013-12-13T21:51:09.711Z"
     }
     "fields": {
         "slice": 12, 
         "updated": "2013-12-13T21:53:15.909Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 13, 
         "created": "2013-12-13T21:53:15.909Z"
     }
     "fields": {
         "slice": 12, 
         "updated": "2013-12-13T21:53:15.914Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 12, 
         "created": "2013-12-13T21:53:15.914Z"
     }
     "fields": {
         "slice": 13, 
         "updated": "2013-12-13T21:56:04.235Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 14, 
         "created": "2013-12-13T21:56:04.235Z"
     }
     "fields": {
         "slice": 13, 
         "updated": "2013-12-13T21:56:04.241Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 12, 
         "created": "2013-12-13T21:56:04.241Z"
     }
     "fields": {
         "slice": 13, 
         "updated": "2013-12-13T21:56:04.246Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 13, 
         "created": "2013-12-13T21:56:04.246Z"
     }
     "fields": {
         "slice": 14, 
         "updated": "2013-12-13T21:57:56.826Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 15, 
         "created": "2013-12-13T21:57:56.826Z"
     }
     "fields": {
         "slice": 14, 
         "updated": "2013-12-13T21:57:56.831Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 13, 
         "created": "2013-12-13T21:57:56.831Z"
     }
     "fields": {
         "slice": 14, 
         "updated": "2013-12-13T21:57:56.836Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 12, 
         "created": "2013-12-13T21:57:56.836Z"
     }
     "fields": {
         "slice": 15, 
         "updated": "2013-12-13T22:01:14.038Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 16, 
         "created": "2013-12-13T22:01:14.038Z"
     }
     "fields": {
         "slice": 15, 
         "updated": "2013-12-13T22:01:14.043Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 14, 
         "created": "2013-12-13T22:01:14.043Z"
     }
     "fields": {
         "slice": 10, 
         "updated": "2013-12-18T22:06:00.381Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 17, 
         "created": "2013-12-18T22:06:00.381Z"
     }
     "fields": {
         "slice": 10, 
         "updated": "2013-12-18T22:06:00.386Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 18, 
         "created": "2013-12-18T22:06:00.386Z"
     }
     "fields": {
         "slice": 9, 
         "updated": "2013-12-18T22:13:42.177Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 19, 
         "created": "2013-12-18T22:13:42.177Z"
     }
     "fields": {
         "slice": 9, 
         "updated": "2013-12-18T22:13:42.183Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 20, 
         "created": "2013-12-18T22:13:42.183Z"
     }
     "fields": {
         "slice": 8, 
         "updated": "2013-12-18T22:16:41.007Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 21, 
         "created": "2013-12-18T22:16:41.007Z"
     }
     "fields": {
         "slice": 8, 
         "updated": "2013-12-18T22:16:41.013Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 22, 
         "created": "2013-12-18T22:16:41.013Z"
     }
     "fields": {
         "slice": 4, 
         "updated": "2013-12-18T22:24:44.997Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 23, 
         "created": "2013-12-18T22:24:44.997Z"
     }
     "fields": {
         "slice": 4, 
         "updated": "2013-12-18T22:24:45.003Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 24, 
         "created": "2013-12-18T22:24:45.003Z"
     }
     "fields": {
         "slice": 6, 
         "updated": "2013-12-18T22:27:16.953Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 25, 
         "created": "2013-12-18T22:27:16.953Z"
     }
     "fields": {
         "slice": 6, 
         "updated": "2013-12-18T22:27:16.959Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 26, 
         "created": "2013-12-18T22:27:16.959Z"
     }
     "fields": {
         "slice": 6, 
         "updated": "2013-12-19T00:14:36.949Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 23, 
         "created": "2013-12-19T00:14:36.949Z"
     }
     "fields": {
         "slice": 8, 
         "updated": "2013-12-19T00:15:11.362Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "network": 23, 
         "created": "2013-12-19T00:15:11.362Z"
     }
     "fields": {
         "description": "End of IPv4 address allocation pool", 
         "updated": "2013-12-09T14:43:25.664Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "allocation-pool-end", 
         "created": "2013-12-09T14:43:25.664Z"
     }
     "fields": {
         "description": "Start of IPv4 address allocation pool", 
         "updated": "2013-12-09T14:43:45.564Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "allocation-pool-start", 
         "created": "2013-12-09T14:43:45.564Z"
     }
     "fields": {
         "description": "CIDR block for network", 
         "updated": "2013-12-09T14:44:05.513Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "cidr", 
         "created": "2013-12-09T14:44:05.513Z"
     }
     "model": "core.account", 
     "fields": {
         "updated": "2013-12-18T21:29:00.470Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "site": 10, 
         "created": "2013-12-18T21:29:00.470Z"
     }
     "model": "core.account", 
     "fields": {
         "updated": "2013-12-18T21:29:00.495Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "site": 22, 
         "created": "2013-12-18T21:29:00.495Z"
     }
     "model": "core.account", 
     "fields": {
         "updated": "2013-12-18T21:29:00.502Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "site": 24, 
         "created": "2013-12-18T21:29:00.502Z"
     }
     "fields": {
         "date": "2013-11-18T21:00:00Z", 
         "updated": "2013-12-18T21:29:16.421Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "account": 14, 
         "created": "2013-12-18T21:29:16.421Z"
     }
     "fields": {
         "date": "2013-11-24T21:00:00Z", 
         "updated": "2013-12-18T21:29:16.434Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "account": 14, 
         "created": "2013-12-18T21:29:16.434Z"
     }
     "fields": {
         "date": "2013-12-01T21:00:00Z", 
         "updated": "2013-12-18T21:29:17.229Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "account": 14, 
         "created": "2013-12-18T21:29:17.229Z"
     }
     "fields": {
         "date": "2013-12-08T21:00:00Z", 
         "updated": "2013-12-18T21:29:18.213Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "account": 14, 
         "created": "2013-12-18T21:29:18.212Z"
     }
     "fields": {
         "date": "2013-12-15T21:00:00Z", 
         "updated": "2013-12-18T21:29:19.091Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "account": 14, 
         "created": "2013-12-18T21:29:19.091Z"
     }
     "fields": {
         "date": "2013-11-18T21:00:00Z", 
         "updated": "2013-12-18T21:29:20.175Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "account": 15, 
         "created": "2013-12-18T21:29:20.175Z"
     }
     "fields": {
         "date": "2013-11-24T21:00:00Z", 
         "updated": "2013-12-18T21:29:20.193Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "account": 15, 
         "created": "2013-12-18T21:29:20.193Z"
     }
     "fields": {
         "date": "2013-12-01T21:00:00Z", 
         "updated": "2013-12-18T21:29:22.239Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "account": 15, 
         "created": "2013-12-18T21:29:22.239Z"
     }
     "fields": {
         "date": "2013-12-08T21:00:00Z", 
         "updated": "2013-12-18T21:29:24.550Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "account": 15, 
         "created": "2013-12-18T21:29:24.550Z"
     }
     "fields": {
         "date": "2013-12-15T21:00:00Z", 
         "updated": "2013-12-18T21:29:26.820Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "account": 15, 
         "created": "2013-12-18T21:29:26.820Z"
     }
     "fields": {
         "date": "2013-11-18T21:00:00Z", 
         "updated": "2013-12-18T21:29:29.206Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "account": 16, 
         "created": "2013-12-18T21:29:29.206Z"
     }
     "fields": {
         "date": "2013-11-24T21:00:00Z", 
         "updated": "2013-12-18T21:29:29.222Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "account": 16, 
         "created": "2013-12-18T21:29:29.222Z"
     }
     "fields": {
         "date": "2013-12-01T21:00:00Z", 
         "updated": "2013-12-18T21:29:29.538Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "account": 16, 
         "created": "2013-12-18T21:29:29.538Z"
     }
     "fields": {
         "date": "2013-12-08T21:00:00Z", 
         "updated": "2013-12-18T21:29:29.894Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "account": 16, 
         "created": "2013-12-18T21:29:29.894Z"
     }
     "fields": {
         "date": "2013-12-15T21:00:00Z", 
         "updated": "2013-12-18T21:29:30.251Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "account": 16, 
         "created": "2013-12-18T21:29:30.251Z"
     }
     "model": "core.usableobject", 
     "fields": {
         "updated": "2013-12-18T21:29:00.529Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "node17.washington.vicci.org", 
         "created": "2013-12-18T21:29:00.529Z"
     }
     "model": "core.usableobject", 
     "fields": {
         "updated": "2013-12-18T21:29:01.289Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "node16.washington.vicci.org", 
         "created": "2013-12-18T21:29:01.289Z"
     }
     "model": "core.usableobject", 
     "fields": {
         "updated": "2013-12-18T21:29:02.189Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "node15.washington.vicci.org", 
         "created": "2013-12-18T21:29:02.189Z"
     }
     "model": "core.usableobject", 
     "fields": {
         "updated": "2013-12-18T21:29:03.178Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "node14.washington.vicci.org", 
         "created": "2013-12-18T21:29:03.178Z"
     }
     "model": "core.usableobject", 
     "fields": {
         "updated": "2013-12-18T21:29:03.942Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "node70.princeton.vicci.org", 
         "created": "2013-12-18T21:29:03.942Z"
     }
     "model": "core.usableobject", 
     "fields": {
         "updated": "2013-12-18T21:29:04.702Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "node69.princeton.vicci.org", 
         "created": "2013-12-18T21:29:04.702Z"
     }
     "model": "core.usableobject", 
     "fields": {
         "updated": "2013-12-18T21:29:05.547Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "node68.princeton.vicci.org", 
         "created": "2013-12-18T21:29:05.547Z"
     }
     "model": "core.usableobject", 
     "fields": {
         "updated": "2013-12-18T21:29:06.336Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "node67.princeton.vicci.org", 
         "created": "2013-12-18T21:29:06.336Z"
     }
     "model": "core.usableobject", 
     "fields": {
         "updated": "2013-12-18T21:29:07.101Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "node30.princeton.vicci.org", 
         "created": "2013-12-18T21:29:07.101Z"
     }
     "model": "core.usableobject", 
     "fields": {
         "updated": "2013-12-18T21:29:09.453Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "node55.stanford.vicci.org", 
         "created": "2013-12-18T21:29:09.453Z"
     }
     "model": "core.usableobject", 
     "fields": {
         "updated": "2013-12-18T21:29:10.216Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "node12.princeton.vicci.org", 
         "created": "2013-12-18T21:29:10.216Z"
     }
     "model": "core.usableobject", 
     "fields": {
         "updated": "2013-12-18T21:29:10.975Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "node20.washington.vicci.org", 
         "created": "2013-12-18T21:29:10.975Z"
     }
     "model": "core.usableobject", 
     "fields": {
         "updated": "2013-12-18T21:29:11.729Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "node1.stanford.vicci.org", 
         "created": "2013-12-18T21:29:11.729Z"
     }
     "model": "core.usableobject", 
     "fields": {
         "updated": "2013-12-18T21:29:12.494Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "node33.princeton.vicci.org", 
         "created": "2013-12-18T21:29:12.494Z"
     }
     "model": "core.usableobject", 
     "fields": {
         "updated": "2013-12-18T21:29:13.329Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "node15.princeton.vicci.org", 
         "created": "2013-12-18T21:29:13.329Z"
     }
     "model": "core.usableobject", 
     "fields": {
         "updated": "2013-12-18T21:29:14.083Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "node23.princeton.vicci.org", 
         "created": "2013-12-18T21:29:14.083Z"
     }
     "model": "core.usableobject", 
     "fields": {
         "updated": "2013-12-18T21:29:14.847Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "node10.princeton.vicci.org", 
         "created": "2013-12-18T21:29:14.847Z"
     }
     "model": "core.usableobject", 
     "fields": {
         "updated": "2013-12-18T21:29:15.609Z", 
-        "enacted": null,
-        "backend_status":"ok", 
+        "enacted": null, 
         "name": "node13.princeton.vicci.org", 
         "created": "2013-12-18T21:29:15.609Z"
     }
         "account": 14, 
         "amount": 0.2968, 
         "date": "2013-12-03T02:00:00Z", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "account": 14, 
         "amount": 21.14, 
         "date": "2013-12-09T02:00:00Z", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "account": 14, 
         "amount": 24.3768, 
         "date": "2013-12-16T02:00:00Z", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "account": 15, 
         "amount": 0.3024, 
         "date": "2013-12-03T02:00:00Z", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "account": 15, 
         "amount": 86.5536, 
         "date": "2013-12-09T02:00:00Z", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "account": 15, 
         "amount": 96.404, 
         "date": "2013-12-16T02:00:00Z", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "account": 16, 
         "amount": 0.1848, 
         "date": "2013-12-03T02:00:00Z", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "account": 16, 
         "amount": 8.5904, 
         "date": "2013-12-09T02:00:00Z", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "account": 16, 
         "amount": 10.0016, 
         "date": "2013-12-16T02:00:00Z", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 68, 
         "date": "2013-11-18T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-18T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-18T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-18T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-18T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-18T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-18T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-18T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-18T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-18T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 73, 
         "date": "2013-11-18T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-19T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-19T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-19T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-20T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-20T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-20T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-21T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-21T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-21T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-22T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-22T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-22T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-23T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-23T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-23T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-24T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-24T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-24T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-25T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-25T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-25T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-26T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-26T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-26T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-27T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-27T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-27T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-28T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-28T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-28T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-29T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-29T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-29T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-30T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-30T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-30T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-12-01T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-12-01T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-12-01T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-02T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-02T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-02T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-03T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-03T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-03T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-04T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-04T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-04T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-05T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-05T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-05T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-06T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-06T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-06T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-07T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-07T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-07T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-08T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-08T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-08T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-09T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-09T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-09T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-10T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-10T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-10T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-11T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-11T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-11T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-12T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-12T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-12T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-13T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-13T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-13T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-14T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-14T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-14T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-15T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-15T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-15T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-18T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-19T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-19T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-19T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-20T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-20T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-20T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-21T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-21T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-21T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-22T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-22T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-22T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-23T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-23T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-23T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-24T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-24T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 74, 
         "date": "2013-11-24T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-25T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-25T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-25T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-26T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-26T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-26T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-27T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-27T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-27T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-28T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-28T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-28T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-29T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-29T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-29T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-30T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-30T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-11-30T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-12-01T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-12-01T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 75, 
         "date": "2013-12-01T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-02T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-02T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-02T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-03T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-03T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-03T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-04T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-04T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-04T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-05T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-05T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-05T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-06T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-06T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-06T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-07T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-07T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-07T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-08T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-08T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 76, 
         "date": "2013-12-08T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-09T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-09T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-09T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-10T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-10T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-10T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-11T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-11T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-11T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-12T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-12T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-12T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-13T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-13T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-13T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-14T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-14T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-14T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-15T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-15T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 77, 
         "date": "2013-12-15T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-18T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-18T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-18T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-19T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-20T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-21T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-22T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-23T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 69, 
         "date": "2013-11-24T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-25T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-26T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-27T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-28T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-29T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-11-30T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 70, 
         "date": "2013-12-01T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-02T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-03T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-04T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-05T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-06T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-07T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 71, 
         "date": "2013-12-08T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-09T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-10T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-11T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-12T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-13T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-14T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 72, 
         "date": "2013-12-15T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T21:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T05:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T13:00:00Z", 
         "kind": "reservation", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-18T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-19T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-19T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-19T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-20T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-20T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-20T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-21T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-21T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-21T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-22T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-22T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-22T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-23T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-23T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-23T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-24T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-24T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-24T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-25T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-25T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-25T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-26T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-26T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-26T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-27T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-27T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-27T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-28T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-28T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-28T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-29T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-29T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-29T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-30T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-30T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-30T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-12-01T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-12-01T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-12-01T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-02T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-02T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-02T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-03T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-03T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-03T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-04T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-04T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-04T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-05T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-05T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-05T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-06T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-06T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-06T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-07T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-07T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-07T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-08T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-08T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-08T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-09T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-09T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-09T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-10T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-10T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-10T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-11T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-11T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-11T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-12T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-12T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-12T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-13T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-13T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-13T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-14T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-14T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-14T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-15T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-15T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-15T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 63, 
         "date": "2013-11-18T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-19T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-19T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-19T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-20T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-20T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-20T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-21T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-21T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-21T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-22T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-22T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-22T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-23T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-23T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-23T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-24T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-24T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-24T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-25T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-25T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-25T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-26T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-26T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-26T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-27T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-27T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-27T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-28T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-28T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-28T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-29T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-29T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-29T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-30T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-30T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-30T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-12-01T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-12-01T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-12-01T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-02T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-02T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-02T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-03T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-03T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-03T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-04T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-04T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-04T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-05T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-05T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-05T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-06T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-06T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-06T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-07T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-07T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-07T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-08T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-08T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-08T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-09T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-09T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-09T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-10T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-10T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-10T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-11T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-11T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-11T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-12T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-12T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-12T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-13T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-13T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-13T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-14T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-14T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-14T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-15T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-15T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-15T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-18T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-19T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-19T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-19T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-20T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-20T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-20T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-21T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-21T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-21T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-22T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-22T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-22T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-23T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-23T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-23T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-24T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-24T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-24T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-25T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-25T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-25T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-26T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-26T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-26T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-27T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-27T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-27T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-28T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-28T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-28T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-29T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-29T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-29T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-30T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-30T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-30T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-12-01T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-12-01T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-12-01T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-02T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-02T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-02T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-03T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-03T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-03T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-04T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-04T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-04T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-05T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-05T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-05T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-06T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-06T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-06T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-07T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-07T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-07T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-08T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-08T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-08T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-09T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-09T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-09T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-10T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-10T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-10T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-11T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-11T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-11T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-12T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-12T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-12T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-13T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-13T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-13T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-14T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-14T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-14T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-15T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-15T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-15T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-18T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-19T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-19T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-19T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-20T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-20T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-20T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-21T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-21T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-21T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-22T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-22T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-22T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-23T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-23T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-23T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-24T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-24T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-24T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-25T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-25T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-25T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-26T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-26T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-26T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-27T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-27T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-27T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-28T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-28T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-28T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-29T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-29T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-29T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-30T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-30T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-30T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-12-01T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-12-01T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-12-01T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-02T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-02T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-02T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-03T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-03T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-03T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-04T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-04T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-04T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-05T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-05T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-05T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-06T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-06T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-06T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-07T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-07T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-07T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-08T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-08T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-08T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-09T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-09T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-09T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-10T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-10T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-10T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-11T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-11T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-11T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-12T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-12T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-12T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-13T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-13T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-13T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-14T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-14T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-14T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-15T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-15T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-15T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-18T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-19T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-19T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-19T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-20T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-20T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-20T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-21T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-21T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-21T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-22T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-22T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-22T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-23T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-23T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-23T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-24T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-24T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 64, 
         "date": "2013-11-24T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-25T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-25T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-25T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-26T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-26T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-26T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-27T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-27T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-27T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-28T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-28T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-28T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-29T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-29T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-29T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-30T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-30T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-11-30T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-12-01T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-12-01T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 65, 
         "date": "2013-12-01T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-02T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-02T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-02T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-03T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-03T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-03T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-04T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-04T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-04T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-05T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-05T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-05T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-06T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-06T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-06T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-07T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-07T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-07T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-08T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-08T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 66, 
         "date": "2013-12-08T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-09T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-09T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-09T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-10T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-10T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-10T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-11T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-11T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-11T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-12T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-12T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-12T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-13T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-13T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-13T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-14T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-14T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-14T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-15T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-15T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": 67, 
         "date": "2013-12-15T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-16T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-17T21:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T05:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "invoice": null, 
         "date": "2013-12-18T13:00:00Z", 
         "kind": "besteffort", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "enabled": true, 
         "service_provider_id": null, 
         "name": "internet2", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "enabled": true, 
         "service_provider_id": null, 
         "name": "Syndicate", 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "description": "Peer-to-peer content sharing for Syndicate distributed filesystem", 
         "enabled": true, 
         "users": [], 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "description": "Content Provider for Georgia Tech", 
         "enabled": true, 
         "users": [], 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "description": "Content Provider for Stanford University", 
         "enabled": true, 
         "users": [], 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "description": "Content Provider for University of Washington", 
         "enabled": true, 
         "users": [], 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "description": "Content Provider for Max Planck Institute", 
         "enabled": true, 
         "users": [], 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "description": "Content Provider for Princeton University", 
         "enabled": true, 
         "users": [], 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "description": "Open Networking Lab", 
         "enabled": true, 
         "users": [], 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 30, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 31, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 32, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 33, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 34, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "protocol": "http", 
         "authenticated": false, 
         "contentProvider": 35, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "prefix": "cdn.syndicatedrive.com", 
         "defaultOriginServer": 3876, 
         "contentProvider": 29, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "prefix": "gt.opencdn.internet2.edu", 
         "defaultOriginServer": 3877, 
         "contentProvider": 30, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "prefix": "stanford.opencdn.internet2.edu", 
         "defaultOriginServer": 3878, 
         "contentProvider": 31, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "prefix": "washington.opencdn.internet2.edu", 
         "defaultOriginServer": 3879, 
         "contentProvider": 32, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "prefix": "mp.opencdn.internet2.edu", 
         "defaultOriginServer": 3880, 
         "contentProvider": 33, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "prefix": "princeton.opencdn.internet2.edu", 
         "defaultOriginServer": 3881, 
         "contentProvider": 34, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
         "prefix": "onlab.vicci.org", 
         "defaultOriginServer": 3882, 
         "contentProvider": 35, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 },
 {
     "model": "syndicate.syndicateservice", 
     "fields": {}
 },
-{
-    "pk": 1, 
-    "model": "syndicate.syndicateuser", 
-    "fields": {
-        "max_RGs": 100, 
-        "is_admin": true, 
-        "user": 6, 
-        "max_AGs": 100, 
-        "max_UGs": 100, 
-        "max_volumes": 100
-    }
-},
-{
-    "pk": 2, 
-    "model": "syndicate.syndicateuser", 
-    "fields": {
-        "max_RGs": 500, 
-        "is_admin": false, 
-        "user": 13, 
-        "max_AGs": 10, 
-        "max_UGs": 500, 
-        "max_volumes": 1
-    }
-},
-{
-    "pk": 1, 
-    "model": "syndicate.volume", 
-    "fields": {
-        "description": "GenBank dataset snapshot from Nov. 2013", 
-        "blocksize": 61440, 
-        "metadata_private_key": "", 
-        "default_gateway_caps": "3", 
-        "private": false, 
-        "file_quota": -1, 
-        "api_public_key": "", 
-        "owner_id": 1, 
-        "archive": true, 
-        "metadata_public_key": "", 
-        "name": "GenBank-11-2013"
-    }
-},
-{
-    "pk": 2, 
-    "model": "syndicate.volume", 
-    "fields": {
-        "description": "Volume associated with princeton_syndicate", 
-        "blocksize": 102400, 
-        "metadata_private_key": "", 
-        "default_gateway_caps": "31", 
-        "private": true, 
-        "file_quota": 1000000, 
-        "api_public_key": "", 
-        "owner_id": 1, 
-        "archive": false, 
-        "metadata_public_key": "", 
-        "name": "princeton_syndicate-Volume"
-    }
-},
-{
-    "pk": 1, 
-    "model": "syndicate.volumeaccessright", 
-    "fields": {
-        "volume": 1, 
-        "gateway_caps": "3", 
-        "owner_id": 1
-    }
-},
-{
-    "pk": 1, 
-    "model": "syndicate.volumeaccessrequest", 
-    "fields": {
-        "volume": 2, 
-        "message": "Hi Jude, this is Siobhan.  Can I join the princeton_syndicate volume with read-only permission?\r\n", 
-        "gateway_caps": "3", 
-        "owner_id": 2
-    }
-},
 {
     "pk": 1, 
     "model": "core.siteprivilege", 
         "site": 24, 
         "role": 1, 
         "user": 15, 
-        "enacted": null,
-        "backend_status":"ok"
+        "enacted": null
     }
 }
 ]
index bf0015a..4e76958 100644 (file)
@@ -6,21 +6,20 @@ from .service import Service
 from .service import ServiceAttribute
 from .tag import Tag
 from .role import Role
-#from .deployment import Deployment
 from .site import Site,Deployment, DeploymentRole, DeploymentPrivilege, SiteDeployments
-from .user import User, UserDeployments
+from .dashboard import DashboardView
+from .user import User, UserDashboardView
 from .serviceclass import ServiceClass
 from .slice import Slice, SliceDeployments
 from .site import SitePrivilege, SiteDeployments
-from .image import Image
+from .userdeployments import UserDeployments
+from .image import Image, ImageDeployments
 from .node import Node
 from .serviceresource import ServiceResource
 from .slice import SliceRole
 from .slice import SlicePrivilege
 from .site import SiteRole
 from .site import SitePrivilege
-#from .deployment import DeploymentRole
-#from .deployment import DeploymentPrivilege
 from .planetstack import PlanetStackRole
 from .planetstack import PlanetStackPrivilege
 from .slicetag import SliceTag
@@ -29,3 +28,4 @@ from .reservation import ReservedResource
 from .reservation import Reservation
 from .network import Network, NetworkParameterType, NetworkParameter, NetworkSliver, NetworkTemplate, Router, NetworkSlice, NetworkDeployments
 from .billing import Account, Invoice, Charge, UsableObject, Payment
+
diff --git a/planetstack/core/models/dashboard.py b/planetstack/core/models/dashboard.py
new file mode 100644 (file)
index 0000000..aa79f84
--- /dev/null
@@ -0,0 +1,11 @@
+import os
+from django.db import models
+from core.models import PlCoreBase
+from django.contrib.contenttypes import generic
+
+class DashboardView(PlCoreBase):
+    name = models.CharField(max_length=200, unique=True, help_text="Name of the View")
+    url = models.CharField(max_length=1024, help_text="URL of Dashboard")
+
+    def __unicode__(self):  return u'%s' % (self.name)
+
diff --git a/planetstack/core/models/deployment.py b/planetstack/core/models/deployment.py
deleted file mode 100644 (file)
index b97432b..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-import os
-from django.db import models
-from core.models import PlCoreBase
-from django.contrib.contenttypes import generic
-
-# Create your models here.
-
-class ManyToManyField_NoSyncdb(models.ManyToManyField):
-    def __init__(self, *args, **kwargs):
-        super(ManyToManyField_NoSyncdb, self).__init__(*args, **kwargs)
-        self.creates_table = False
-
-class Deployment(PlCoreBase):
-    name = models.CharField(max_length=200, unique=True, help_text="Name of the Deployment")
-#    sites = ManyToManyField_NoSyncdb('Site', through=Site.deployments.through, blank=True)
-
-    def __unicode__(self):  return u'%s' % (self.name)
-
-    
-class DeploymentRole(PlCoreBase):
-
-    ROLE_CHOICES = (('admin','Admin'),)
-    role = models.CharField(choices=ROLE_CHOICES, unique=True, max_length=30)
-
-    def __unicode__(self):  return u'%s' % (self.role)
-
-class DeploymentPrivilege(PlCoreBase):
-
-    user = models.ForeignKey('User', related_name='deployment_privileges')
-    deployment = models.ForeignKey('Deployment', related_name='deployment_privileges')
-    role = models.ForeignKey('DeploymentRole')
-
-    def __unicode__(self):  return u'%s %s %s' % (self.deployment, self.user, self.role)
-
-
-    def can_update(self, user):
-        if user.is_readonly:
-            return False
-        if user.is_admin:
-            return True
-        dprivs = DeploymentPrivilege.objects.filter(user=user)
-        for dpriv in dprivs:
-            if dpriv.role.role_type == 'admin':
-                return True
-        return False
-
-    @staticmethod
-    def select_by_user(user):
-        if user.is_admin:
-            qs = DeploymentPrivilege.objects.all()
-        else:
-            dpriv_ids = [dp.id for dp in DeploymentPrivilege.objects.filter(user=user)]
-            qs = DeploymentPrivilege.objects.filter(id__in=dpriv_ids)
-        return qs
index b4803e2..db01e1b 100644 (file)
@@ -1,13 +1,23 @@
 import os
 from django.db import models
 from core.models import PlCoreBase
+from core.models import Deployment
 
 # Create your models here.
 
 class Image(PlCoreBase):
-    image_id = models.CharField(max_length=256, unique=True)
     name = models.CharField(max_length=256, unique=True)
     disk_format = models.CharField(max_length=256)
     container_format = models.CharField(max_length=256)
+    path = models.CharField(max_length=256, null=True, blank=True, help_text="Path to image on local disk")
 
     def __unicode__(self):  return u'%s' % (self.name)
+
+class ImageDeployments(PlCoreBase):
+    image = models.ForeignKey(Image)
+    deployment = models.ForeignKey(Deployment)
+    glance_image_id = models.CharField(null=True, blank=True, max_length=200, help_text="Glance image id") 
+
+    def __unicode__(self):  return u'%s %s' % (self.image, self.deployment)
+
+    
index c3c2eab..56aee68 100644 (file)
@@ -14,3 +14,8 @@ class Node(PlCoreBase):
     tags = generic.GenericRelation(Tag)
 
     def __unicode__(self):  return u'%s' % (self.name)
+
+    @staticmethod
+    def select_by_user(user):
+        qs = Node.objects.all()
+        return qs
index d4932a0..34af4a4 100644 (file)
@@ -1,4 +1,6 @@
+import datetime
 import os
+import sys
 from django.db import models
 from django.forms.models import model_to_dict
 from django.core.urlresolvers import reverse
@@ -8,12 +10,12 @@ try:
     # This is a no-op if observer_disabled is set to 1 in the config file
     from observer import *
 except:
-    print "import of observer failed! printing traceback and disabling observer:"
+    print >> sys.stderr, "import of observer failed! printing traceback and disabling observer:"
     import traceback
     traceback.print_exc()
 
     # guard against something failing
-    def notify_observer():
+    def notify_observer(*args, **kwargs):
         pass
 
 # This manager will be inherited by all subclasses because
@@ -26,6 +28,11 @@ class PlCoreBase(models.Model):
     objects = PlCoreBaseManager()
     created = models.DateTimeField(auto_now_add=True)
     updated = models.DateTimeField(auto_now=True)
+    # default values for created and updated are only there to keep evolution
+    # from failing.
+
+    created = models.DateTimeField(auto_now_add=True, default=datetime.datetime.now())
+    updated = models.DateTimeField(auto_now=True, default=datetime.datetime.now())
     enacted = models.DateTimeField(null=True, default=None)
     backend_status = models.CharField(max_length=140,
                                       default="Provisioning in progress")
index e675afb..fe7fb93 100644 (file)
@@ -1,10 +1,10 @@
 import os
 from django.db import models
 from core.models import PlCoreBase
-#from core.models import Deployment
 from core.models import Tag
 from django.contrib.contenttypes import generic
 from geoposition.fields import GeopositionField
+from core.acl import AccessControlList
 
 class Site(PlCoreBase):
     """
@@ -21,7 +21,7 @@ class Site(PlCoreBase):
     abbreviated_name = models.CharField(max_length=80)
 
     #deployments = models.ManyToManyField('Deployment', blank=True, related_name='sites')
-    deployments = models.ManyToManyField('Deployment', through='SiteDeployments', blank=True)
+    deployments = models.ManyToManyField('Deployment', through='SiteDeployments', blank=True, help_text="Select which sites are allowed to host nodes in this deployment", related_name='sites')
     tags = generic.GenericRelation(Tag)
 
     def __unicode__(self):  return u'%s' % (self.name)
@@ -83,7 +83,48 @@ class SitePrivilege(PlCoreBase):
 
 class Deployment(PlCoreBase):
     name = models.CharField(max_length=200, unique=True, help_text="Name of the Deployment")
-    #sites = models.ManyToManyField('Site', through='SiteDeployments', blank=True)
+    admin_user = models.CharField(max_length=200, null=True, blank=True, help_text="Username of an admin user at this deployment")
+    admin_password = models.CharField(max_length=200, null=True, blank=True, help_text="Password of theadmin user at this deployment")\r
+    admin_tenant = models.CharField(max_length=200, null=True, blank=True, help_text="Name of the tenant the admin user belongs to")\r
+    auth_url = models.CharField(max_length=200, null=True, blank=True, help_text="Auth url for the deployment")
+
+    # smbaker: the default of 'allow all' is intended for evolutions of existing
+    #    deployments. When new deployments are created via the GUI, they are
+    #    given a default of 'allow site <site_of_creator>'
+    accessControl = models.TextField(max_length=200, blank=False, null=False, default="allow all",
+                                     help_text="Access control list that specifies which sites/users may use nodes in this deployment")
+
+    def get_acl(self):
+        return AccessControlList(self.accessControl)
+
+    def test_acl(self, slice=None, user=None):
+        potential_users=[]
+
+        if user:
+            potential_users.append(user)
+
+        if slice:
+            potential_users.append(slice.creator)
+            for priv in slice.slice_privileges.all():
+                if priv.user not in potential_users:
+                    potential_users.append(priv.user)
+
+        acl = self.get_acl()
+        for user in potential_users:
+            if acl.test(user) == "allow":
+                return True
+
+        return False
+
+    @staticmethod
+    def select_by_acl(user):
+        ids = []
+        for deployment in Deployment.objects.all():
+            acl = deployment.get_acl()
+            if acl.test(user) == "allow":
+                ids.append(deployment.id)
+
+        return Deployment.objects.filter(id__in=ids)
 
     def __unicode__(self):  return u'%s' % (self.name)
 
index 98e59d7..8b05bb2 100644 (file)
@@ -25,6 +25,7 @@ class Sliver(PlCoreBase):
     deploymentNetwork = models.ForeignKey(Deployment, verbose_name='deployment', related_name='sliver_deploymentNetwork')
     numberCores = models.IntegerField(verbose_name="Number of Cores", help_text="Number of cores for sliver", default=0)
     tags = generic.GenericRelation(Tag)
+    userData = models.TextField(blank=True, null=True, help_text="user_data passed to instance during creation")
 
     def __unicode__(self):
         if self.instance_name:
@@ -36,13 +37,17 @@ class Sliver(PlCoreBase):
         else:
             return u'unsaved-sliver'
 
-
     def save(self, *args, **kwds):
         if not self.name:
             self.name = self.slice.name
         if not self.creator and hasattr(self, 'caller'):
             self.creator = self.caller
         self.deploymentNetwork = self.node.deployment
+
+# XXX smbaker - disabled for now, was causing fault in tenant view create slice
+#        if not self.deploymentNetwork.test_acl(slice=self.slice):
+#            raise exceptions.ValidationError("Deployment %s's ACL does not allow any of this slice %s's users" % (self.deploymentNetwork.name, self.slice.name))
+
         super(Sliver, self).save(*args, **kwds)
 
     def can_update(self, user):
index dba8956..0272661 100644 (file)
@@ -3,10 +3,11 @@ import datetime
 from collections import defaultdict
 from django.db import models
 from django.db.models import F, Q
-from core.models import PlCoreBase,Site
-from core.models.deployment import Deployment
+from core.models import PlCoreBase,Site, DashboardView
+from core.models.site import Deployment
 from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
 from timezones.fields import TimeZoneField
+from operator import itemgetter, attrgetter
 
 # Create your models here.
 class UserManager(BaseUserManager):
@@ -83,6 +84,8 @@ class User(AbstractBaseUser):
 
     timezone = TimeZoneField()
 
+    dashboards = models.ManyToManyField('DashboardView', through='UserDashboardView', blank=True)
+
     objects = UserManager()
 
     USERNAME_FIELD = 'email'
@@ -119,6 +122,20 @@ class User(AbstractBaseUser):
     def is_superuser(self):
         return False
 
+    def get_dashboards(self):
+        DEFAULT_DASHBOARDS=["Tenant"]
+
+        dashboards = sorted(list(self.dashboardViews.all()), key=attrgetter('order'))
+        dashboards = [x.dashboardView for x in dashboards]
+
+        if not dashboards:
+            for dashboardName in DEFAULT_DASHBOARDS:
+                dbv = DashboardView.objects.filter(name=dashboardName)
+                if dbv:
+                    dashboards.append(dbv[0])
+
+        return dashboards
+
 #    def get_roles(self):
 #        from core.models.site import SitePrivilege
 #        from core.models.slice import SliceMembership
@@ -153,20 +170,7 @@ class User(AbstractBaseUser):
             qs = User.objects.filter(Q(site__in=sites) | Q(id__in=user_ids))
         return qs            
 
-             
-    
-class UserDeployments(PlCoreBase):
-    user = models.ForeignKey(User)
-    deployment = models.ForeignKey(Deployment)
-    kuser_id = models.CharField(null=True, blank=True, max_length=200, help_text="Keystone user id")
-
-    def __unicode__(self):  return u'%s %s' % (self.user, self.deployment.name)
-
-    @staticmethod
-    def select_by_user(user):
-        if user.is_admin:
-            qs = UserDeployments.objects.all()
-        else:
-            users = Users.select_by_user(user)
-            qs = Usereployments.objects.filter(user__in=slices)
-        return qs 
+class UserDashboardView(PlCoreBase):
+     user = models.ForeignKey(User, related_name="dashboardViews")
+     dashboardView = models.ForeignKey(DashboardView, related_name="dashboardViews")
+     order = models.IntegerField(default=0)
diff --git a/planetstack/core/models/userdeployments.py b/planetstack/core/models/userdeployments.py
new file mode 100644 (file)
index 0000000..3422156
--- /dev/null
@@ -0,0 +1,22 @@
+import os
+import datetime
+from collections import defaultdict
+from django.db import models
+from django.db.models import F, Q
+from core.models import PlCoreBase,Site,User,Deployment
+
+class UserDeployments(PlCoreBase):
+    user = models.ForeignKey(User)
+    deployment = models.ForeignKey(Deployment)
+    kuser_id = models.CharField(null=True, blank=True, max_length=200, help_text="Keystone user id")
+
+    def __unicode__(self):  return u'%s %s' % (self.user, self.deployment.name)
+
+    @staticmethod
+    def select_by_user(user):
+        if user.is_admin:
+            qs = UserDeployments.objects.all()
+        else:
+            users = Users.select_by_user(user)
+            qs = Usereployments.objects.filter(user__in=slices)
+        return qs
diff --git a/planetstack/core/plus/views.py b/planetstack/core/plus/views.py
deleted file mode 100644 (file)
index 9411712..0000000
+++ /dev/null
@@ -1,570 +0,0 @@
-#views.py
-import functools
-import math
-import os
-import sys
-from django.views.generic import TemplateView, View
-import datetime
-from pprint import pprint
-import json
-from core.models import *
-from hpc.models import ContentProvider
-from operator import attrgetter
-from django.views.decorators.csrf import csrf_exempt
-from django.http import HttpResponse, HttpResponseServerError
-from django.core import urlresolvers
-from django.contrib.gis.geoip import GeoIP
-from ipware.ip import get_ip
-import traceback
-import socket
-
-BLESSED_SITES = ["Stanford", "Washington", "Princeton", "GeorgiaTech", "MaxPlanck"]
-
-if os.path.exists("/home/smbaker/projects/vicci/cdn/bigquery"):
-    sys.path.append("/home/smbaker/projects/vicci/cdn/bigquery")
-else:
-    sys.path.append("/opt/planetstack/hpc_wizard")
-import hpc_wizard
-from planetstack_analytics import DoPlanetStackAnalytics, PlanetStackAnalytics, RED_LOAD, BLUE_LOAD
-
-class DashboardWelcomeView(TemplateView):
-    template_name = 'admin/dashboard/welcome.html'
-
-    def get(self, request, *args, **kwargs):
-        context = self.get_context_data(**kwargs)
-        userDetails = getUserSliceInfo(request.user)
-        #context['site'] = userDetails['site']
-
-        context['userSliceInfo'] = userDetails['userSliceInfo']
-        context['cdnData'] = userDetails['cdnData']
-        context['cdnContentProviders'] = userDetails['cdnContentProviders']
-        return self.render_to_response(context=context)
-
-def getUserSliceInfo(user, tableFormat = False):
-        userDetails = {}
-
-        userSliceData = getSliceInfo(user)
-        if (tableFormat):
-#            pprint("*******      GET USER SLICE INFO")
-            userDetails['userSliceInfo'] = userSliceTableFormatter(userSliceData)
-        else:
-            userDetails['userSliceInfo'] = userSliceData
-        userDetails['cdnData'] = getCDNOperatorData(wait=False)
-        userDetails['cdnContentProviders'] = getCDNContentProviderData()
-        return userDetails
-
-class TenantCreateSlice(View):
-    def post(self, request, *args, **kwargs):
-        sliceName = request.POST.get("sliceName", "0")
-        serviceClass = request.POST.get("serviceClass", "0")
-        imageName = request.POST.get("imageName", "0")
-        actionToDo = request.POST.get("actionToDo", "0")
-        network = request.POST.get("network","0")
-        mountDataSets = request.POST.get("mountDataSets","0")
-        if (actionToDo == "add"):
-           serviceClass = ServiceClass.objects.get(name=serviceClass)
-           site = request.user.site
-           image = Image.objects.get(name=imageName)
-           newSlice = Slice(name=sliceName,serviceClass=serviceClass,site=site,imagePreference=image,mountDataSets=mountDataSets,network=network)
-           newSlice.save()
-        return HttpResponse("Slice created")
-
-class TenantUpdateSlice(View):
-    def post(self, request, *args, **kwargs):\r
-        sliceName = request.POST.get("sliceName", "0")\r
-        serviceClass = request.POST.get("serviceClass", "0")\r
-        imageName = request.POST.get("imageName", "0")\r
-        actionToDo = request.POST.get("actionToDo", "0")\r
-        network = request.POST.get("network","0")\r
-        dataSet = request.POST.get("dataSet","0")\r
-        slice = Slice.objects.all()\r
-        for entry in slice:\r
-                serviceClass = ServiceClass.objects.get(name=serviceClass)\r
-                if(entry.name==sliceName):\r
-                         if (actionToDo == "update"):\r
-                                setattr(entry,'serviceClass',serviceClass)\r
-                                setattr(entry,'imagePreference',imageName)\r
-                                setattr(entry,'network',network)\r
-                                setattr(entry,'mountDataSets',dataSet)\r
-                                entry.save()\r
-                                break\r
-        return HttpResponse("Slice updated")\r
-\r
-def  update_slice(sliceName,**fields):
-         slice = Slice.objects.filter(name = sliceName)\r
-         for (k,v) in fields.items():\r
-                setattr(slice, k, v)\r
-                slice.save()\r
-         return slice
-
-def getTenantSliceInfo(user, tableFormat = False):
-    tenantSliceDetails = {}
-    tenantSliceData = getTenantInfo(user)
-    tenantServiceClassData = getServiceClassInfo(user)
-    if (tableFormat):
-       tenantSliceDetails['userSliceInfo'] = userSliceTableFormatter(tenantSliceData)
-       tenantSliceDetails['sliceServiceClass']=userSliceTableFormatter(tenantServiceClassData)
-    else:
-       tenantSliceDetails['userSliceInfo'] = tenantSliceData
-    tenantSliceDetails['sliceServiceClass']=userSliceTableFormatter(tenantServiceClassData)
-    tenantSliceDetails['image']=userSliceTableFormatter(getImageInfo(user))
-    tenantSliceDetails['network']=userSliceTableFormatter(getNetworkInfo(user))
-    tenantSliceDetails['deploymentSites']=userSliceTableFormatter(getDeploymentSites())
-    tenantSliceDetails['sites'] = userSliceTableFormatter(getTenantSitesInfo())
-    tenantSliceDetails['mountDataSets'] = userSliceTableFormatter(getMountDataSets())
-    return tenantSliceDetails
-
-
-def getTenantInfo(user):
-    slices =Slice.objects.all()
-    userSliceInfo = []
-    for entry in slices:
-       sliceName = Slice.objects.get(id=entry.id).name
-       slice = Slice.objects.get(name=Slice.objects.get(id=entry.id).name)
-       sliceServiceClass = entry.serviceClass.name
-       preferredImage =  entry.imagePreference
-       sliceDataSet = entry.mountDataSets
-       sliceNetwork = entry.network
-       numSliver = 0
-       sliceImage=""
-       sliceSite = {}
-       sliceNode = {}
-       sliceInstance= {}
-       for sliver in slice.slivers.all():
-           if sliver.node.site.name in BLESSED_SITES:
-                sliceSite[sliver.node.site.name] = sliceSite.get(sliver.node.site.name,0) + 1
-                sliceImage = sliver.image.name
-                sliceNode[str(sliver)] = sliver.node.name
-       numSliver = sum(sliceSite.values())
-       numSites = len(sliceSite)
-       userSliceInfo.append({'sliceName': sliceName,'sliceServiceClass': sliceServiceClass,'preferredImage':preferredImage,'numOfSites':numSites, 'sliceSite':sliceSite,'sliceImage':sliceImage,'numOfSlivers':numSliver,'sliceDataSet':sliceDataSet,'sliceNetwork':sliceNetwork, 'instanceNodePair':sliceNode})
-    return userSliceInfo
-
-def getTenantSitesInfo():
-       tenantSiteInfo=[]
-        for entry in Site.objects.all():
-            if entry.name in BLESSED_SITES:
-                tenantSiteInfo.append({'siteName':entry.name})
-       return tenantSiteInfo
-
-def userSliceTableFormatter(data):
-#    pprint(data)
-    formattedData = {
-                     'rows' : data
-                    }
-    return formattedData
-
-def getServiceClassInfo(user):
-    serviceClassList = ServiceClass.objects.all()
-    sliceInfo = []
-    for entry in serviceClassList:
-          sliceInfo.append({'serviceClass':entry.name})
-    return sliceInfo
-
-def getImageInfo(user):
-    imageList = Image.objects.all()
-    #imageList = ['Fedora 16 LXC rev 1.3','Hadoop','MPI']
-    imageInfo = []
-    for imageEntry in imageList:
-          imageInfo.append({'Image':imageEntry.name})
-          #imageInfo.append({'Image':imageEntry})
-    return imageInfo
-
-def getMountDataSets():
-        dataSetList = ['------','GenBank','LSST','LHC','NOAA','Measurement Lab','Common Crawl']\r
-        dataSetInfo = []\r
-        for entry in dataSetList:\r
-                dataSetInfo.append({'DataSet':entry})\r
-        return dataSetInfo
-
-def getNetworkInfo(user):
-   #networkList = Network.objects.all()
-    networkList = ['Private Only','Private and Publicly Routable']
-    networkInfo = []
-    for networkEntry in networkList:
-          #networkInfo.append({'Network':networkEntry.name})
-          networkInfo.append({'Network':networkEntry})
-    return networkInfo
-
-def getDeploymentSites():
-    deploymentList = Deployment.objects.all()
-    deploymentInfo = []
-    for entry in deploymentList:
-        deploymentInfo.append({'DeploymentSite':entry.name})
-    return deploymentInfo
-
-def getSliceInfo(user):
-    sliceList = Slice.objects.all()
-    slicePrivs = SlicePrivilege.objects.filter(user=user)
-    userSliceInfo = []
-    for entry in slicePrivs:
-
-        slicename = Slice.objects.get(id=entry.slice.id).name
-        slice = Slice.objects.get(name=Slice.objects.get(id=entry.slice.id).name)
-        sliverList=Sliver.objects.all()
-        sites_used = {}
-        for sliver in slice.slivers.all():
-             #sites_used['deploymentSites'] = sliver.node.deployment.name
-             # sites_used[sliver.image.name] = sliver.image.name
-             sites_used[sliver.node.site.name] = sliver.numberCores
-        sliceid = Slice.objects.get(id=entry.slice.id).id
-        try:
-            sliverList = Sliver.objects.filter(slice=entry.slice.id)
-            siteList = {}
-            for x in sliverList:
-               if x.node.site not in siteList:
-                  siteList[x.node.site] = 1
-            slivercount = len(sliverList)
-            sitecount = len(siteList)
-        except:
-            traceback.print_exc()
-            slivercount = 0
-            sitecount = 0
-
-        userSliceInfo.append({'slicename': slicename, 'sliceid':sliceid,
-                              'sitesUsed':sites_used,
-                              'role': SliceRole.objects.get(id=entry.role.id).role,
-                              'slivercount': slivercount,
-                              'sitecount':sitecount})
-
-    return userSliceInfo
-
-def getCDNContentProviderData():
-    cps = []
-    for dm_cp in ContentProvider.objects.all():
-        cp = {"name": dm_cp.name,
-              "account": dm_cp.account}
-        cps.append(cp)
-
-    return cps
-
-def getCDNOperatorData(randomizeData = False, wait=True):
-    HPC_SLICE_NAME = "HyperCache"
-
-    bq = PlanetStackAnalytics()
-
-    rows = bq.get_cached_query_results(bq.compose_latest_query(groupByFields=["%hostname", "event", "%slice"]), wait)
-
-    # wait=False on the first time the Dashboard is opened. This means we might
-    # not have any rows yet. The dashboard code polls every 30 seconds, so it
-    # will eventually pick them up.
-
-    if rows:
-        rows = bq.postprocess_results(rows, filter={"event": "hpc_heartbeat"}, maxi=["cpu"], count=["hostname"], computed=["bytes_sent/elapsed"], groupBy=["Time","site"], maxDeltaTime=80)
-
-        # dictionaryize the statistics rows by site name
-        stats_rows = {}
-        for row in rows:
-            stats_rows[row["site"]] = row
-    else:
-        stats_rows = {}
-
-    slice = Slice.objects.get(name=HPC_SLICE_NAME)
-    slice_slivers = list(slice.slivers.all())
-
-    new_rows = {}
-    for site in Site.objects.all():
-        # compute number of slivers allocated in the data model
-        allocated_slivers = 0
-        for sliver in slice_slivers:
-            if sliver.node.site == site:
-                allocated_slivers = allocated_slivers + 1
-
-        stats_row = stats_rows.get(site.name,{})
-
-        max_cpu = stats_row.get("max_avg_cpu", stats_row.get("max_cpu",0))
-        cpu=float(max_cpu)/100.0
-        hotness = max(0.0, ((cpu*RED_LOAD) - BLUE_LOAD)/(RED_LOAD-BLUE_LOAD))
-
-        # format it to what that CDN Operations View is expecting
-        new_row = {"lat": float(site.location.longitude),
-               "long": float(site.location.longitude),
-               "lat": float(site.location.latitude),
-               "health": 0,
-               "numNodes": int(site.nodes.count()),
-               "activeHPCSlivers": int(stats_row.get("count_hostname", 0)),     # measured number of slivers, from bigquery statistics
-               "numHPCSlivers": allocated_slivers,                              # allocated number of slivers, from data model
-               "siteUrl": str(site.site_url),
-               "bandwidth": stats_row.get("sum_computed_bytes_sent_div_elapsed",0),
-               "load": max_cpu,
-               "hot": float(hotness)}
-        new_rows[str(site.name)] = new_row
-
-    # get rid of sites with 0 slivers that overlap other sites with >0 slivers
-    for (k,v) in new_rows.items():
-        bad=False
-        if v["numHPCSlivers"]==0:
-            for v2 in new_rows.values():
-                if (v!=v2) and (v2["numHPCSlivers"]>=0):
-                    d = haversine(v["lat"],v["long"],v2["lat"],v2["long"])
-                    if d<100:
-                         bad=True
-            if bad:
-                del new_rows[k]
-
-    return new_rows
-
-class SimulatorView(View):
-    def get(self, request, **kwargs):
-        sim = json.loads(file("/tmp/simulator.json","r").read())
-        text = "<html><head></head><body>"
-        text += "Iteration: %d<br>" % sim["iteration"]
-        text += "Elapsed since report %d<br><br>" % sim["elapsed_since_report"]
-        text += "<table border=1>"
-        text += "<tr><th>site</th><th>trend</th><th>weight</th><th>bytes_sent</th><th>hot</th></tr>"
-        for site in sim["site_load"].values():
-            text += "<tr>"
-            text += "<td>%s</td><td>%0.2f</td><td>%0.2f</td><td>%d</td><td>%0.2f</td>" % \
-                        (site["name"], site["trend"], site["weight"], site["bytes_sent"], site["load_frac"])
-            text += "</tr>"
-        text += "</table>"
-        text += "</body></html>"
-        return HttpResponse(text)
-
-class DashboardUserSiteView(View):
-    def get(self, request, **kwargs):
-        return HttpResponse(json.dumps(getUserSliceInfo(request.user, True)), mimetype='application/javascript')
-
-class TenantViewData(View):
-    def get(self, request, **kwargs):
-        return HttpResponse(json.dumps(getTenantSliceInfo(request.user, True)), mimetype='application/javascript')
-
-def haversine(site_lat, site_lon, lat, lon):
-    d=0
-    if lat and lon and site_lat and site_lon:
-        site_lat = float(site_lat)
-        site_lon = float(site_lon)
-        lat = float(lat)
-        lon = float(lon)
-        R = 6378.1
-        a = math.sin( math.radians((lat - site_lat)/2.0) )**2 + math.cos( math.radians(lat) )*math.cos( math.radians(site_lat) )*(math.sin( math.radians((lon - site_lon)/2.0 ) )**2)
-        c = 2 * math.atan2( math.sqrt(a), math.sqrt(1 - a) )
-        d = R * c
-
-    return d
-
-def siteSortKey(site, slice=None, count=None, lat=None, lon=None):
-    # try to pick a site we're already using
-    has_slivers_here=False
-    if slice:
-        for sliver in slice.slivers.all():
-            if sliver.node.site.name == site.name:
-                has_slivers_here=True
-
-    # Haversine method
-    d = haversine(site.location.latitude, site.location.longitude, lat, lon)
-
-    return (-has_slivers_here, d)
-
-def tenant_pick_sites(user, user_ip=None, slice=None, count=None):
-    """ Returns list of sites, sorted from most favorable to least favorable """
-    lat=None
-    lon=None
-    try:
-        client_geo = GeoIP().city(user_ip)
-        if client_geo:
-            lat=float(client_geo["latitude"])
-            lon=float(client_geo["longitude"])
-    except:
-        print "exception in geo code"
-        traceback.print_exc()
-
-    sites = Site.objects.all()
-    sites = [x for x in sites if x.name in BLESSED_SITES]
-    sites = sorted(sites, key=functools.partial(siteSortKey, slice=slice, count=count, lat=lat, lon=lon))
-
-    return sites
-
-def slice_increase_slivers(user, user_ip, siteList, slice, count, noAct=False):
-    sitesChanged = {}
-
-    # let's compute how many slivers are in use in each node of each site
-    for site in siteList:
-        site.nodeList = list(site.nodes.all())
-        for node in site.nodeList:
-            node.sliverCount = 0
-            for sliver in node.slivers.all():
-                 if sliver.slice.id == slice.id:
-                     node.sliverCount = node.sliverCount + 1
-
-    # Allocate slivers to nodes
-    # for now, assume we want to allocate all slivers from the same site
-    nodes = siteList[0].nodeList
-    while (count>0):
-        # Sort the node list by number of slivers per node, then pick the
-        # node with the least number of slivers.
-        nodes = sorted(nodes, key=attrgetter("sliverCount"))
-        node = nodes[0]
-
-        print "adding sliver at node", node.name, "of site", node.site.name
-
-        if not noAct:
-            sliver = Sliver(name=node.name,
-                        slice=slice,
-                        node=node,
-                        image = Image.objects.all()[0],
-                        creator = User.objects.get(email=user),
-                        deploymentNetwork=node.deployment,
-                        numberCores =1 )
-            sliver.save()
-
-        node.sliverCount = node.sliverCount + 1
-
-        count = count - 1
-
-        sitesChanged[node.site.name] = sitesChanged.get(node.site.name,0) + 1
-
-    return sitesChanged
-
-def slice_decrease_slivers(user, siteList, slice, count, noAct=False):
-    sitesChanged = {}
-    sliverList ={}
-    if siteList:
-        siteNames = [site.name for site in siteList]
-    else:
-        siteNames = None
-
-    for sliver in slice.slivers.all():
-        if(not siteNames) or (sliver.node.site.name in siteNames):\r
-                node = sliver.node\r
-                sliverList[sliver.name]=node.name
-
-    for key in sliverList:
-        if count>0:
-            sliver = Sliver.objects.filter(name=key)[0]\r
-            sliver.delete()\r
-            print "deleting sliver",sliverList[key],"at node",sliver.node.name\r
-            count=count-1\r
-            sitesChanged[sliver.node.site.name] = sitesChanged.get(sliver.node.site.name,0) - 1\r
-\r
-    return sitesChanged
-
-class TenantDeleteSliceView(View):
-        def post(self,request):\r
-                sliceName = request.POST.get("sliceName",None)\r
-                slice = Slice.objects.get(name=sliceName)\r
-                print slice, slice.id\r
-                sliceToDel=Slice(name=sliceName, id=slice.id)\r
-                sliceToDel.delete()
-                return HttpResponse("Slice deleted")
-
-class TenantAddOrRemoveSliverView(View):
-    """ Add or remove slivers from a Slice
-
-        Arguments:
-            siteName - name of site. If not specified, PlanetStack will pick the
-                       best site.,
-            actionToDo - [add | rem]
-            count - number of slivers to add or remove
-            sliceName - name of slice
-            noAct - if set, no changes will be made to db, but result will still
-                    show which sites would have been modified.
-
-        Returns:
-            Dictionary of sites that were modified, and the count of nodes
-            that were added or removed at each site.
-    """
-    def post(self, request, *args, **kwargs):
-        siteName = request.POST.get("siteName", None)
-        actionToDo = request.POST.get("actionToDo", None)
-        count = int(request.POST.get("count","0"))
-       sliceName = request.POST.get("slice", None)
-        noAct = request.POST.get("noAct", False)
-
-        if not sliceName:
-            return HttpResponseServerError("No slice name given")
-
-        slice = Slice.objects.get(name=sliceName)
-
-        if siteName:
-            siteList = [Site.objects.get(name=siteName)]
-        else:
-            siteList = None
-
-        if (actionToDo == "add"):
-            user_ip = request.GET.get("ip", get_ip(request))
-            if (siteList is None):
-                siteList = tenant_pick_sites(user, user_ip, slice, count)
-
-            sitesChanged = slice_increase_slivers(request.user, user_ip, siteList, slice, count, noAct)
-        elif (actionToDo == "rem"):
-            sitesChanged = slice_decrease_slivers(request.user, siteList, slice, count, noAct)
-        else:
-            return HttpResponseServerError("Unknown actionToDo %s" % actionToDo)
-
-        return HttpResponse(json.dumps(sitesChanged), mimetype='application/javascript')
-
-    def get(self, request, *args, **kwargs):
-        request.POST = request.GET
-        return self.post(request, *args, **kwargs)  # for testing REST in browser
-        #return HttpResponseServerError("GET is not supported")
-
-class TenantPickSitesView(View):
-    """ primarily just for testing purposes """
-    def get(self, request, *args, **kwargs):
-        count = request.GET.get("count","0")
-       slice = request.GET.get("slice",None)
-        if slice:
-            slice = Slice.objects.get(name=slice)
-        ip = request.GET.get("ip", get_ip(request))
-        sites = tenant_pick_sites(request.user, user_ip=ip, count=0, slice=slice)
-        sites = [x.name for x in sites]
-        return HttpResponse(json.dumps(sites), mimetype='application/javascript')
-
-class DashboardSummaryAjaxView(View):
-    def get(self, request, **kwargs):
-        def avg(x):
-            return float(sum(x))/len(x)
-
-        sites = getCDNOperatorData().values()
-
-        sites = [site for site in sites if site["numHPCSlivers"]>0]
-
-        total_slivers = sum( [site["numHPCSlivers"] for site in sites] )
-        total_bandwidth = sum( [site["bandwidth"] for site in sites] )
-        average_cpu = int(avg( [site["load"] for site in sites] ))
-
-        result= {"total_slivers": total_slivers,
-                "total_bandwidth": total_bandwidth,
-                "average_cpu": average_cpu}
-
-        return HttpResponse(json.dumps(result), mimetype='application/javascript')
-
-class DashboardAddOrRemoveSliverView(View):
-    # TODO: deprecate this view in favor of using TenantAddOrRemoveSliverView
-
-    def post(self, request, *args, **kwargs):
-        siteName = request.POST.get("site", None)
-        actionToDo = request.POST.get("actionToDo", "0")
-
-        siteList = [Site.objects.get(name=siteName)]
-        slice = Slice.objects.get(name="HyperCache")
-
-        if (actionToDo == "add"):
-            user_ip = request.GET.get("ip", get_ip(request))
-            slice_increase_slivers(request.user, user_ip, siteList, slice, 1)
-        elif (actionToDo == "rem"):
-            slice_decrease_slivers(request.user, siteList, slice, 1)
-
-        print '*' * 50
-        print 'Ask for site: ' + siteName + ' to ' + actionToDo + ' another HPC Sliver'
-        return HttpResponse('This is POST request ')
-
-class DashboardAjaxView(View):
-    def get(self, request, **kwargs):
-        return HttpResponse(json.dumps(getCDNOperatorData(True)), mimetype='application/javascript')
-
-class DashboardAnalyticsAjaxView(View):
-    def get(self, request, name="hello_world", **kwargs):
-        if (name == "hpcSummary"):
-            return HttpResponse(json.dumps(hpc_wizard.get_hpc_wizard().get_summary_for_view()), mimetype='application/javascript')
-        elif (name == "hpcUserSite"):
-            return HttpResponse(json.dumps(getUserSliceInfo(request.user, True)), mimetype='application/javascript')
-        elif (name == "hpcMap"):
-            return HttpResponse(json.dumps(getCDNOperatorData(True)), mimetype='application/javascript')
-        elif (name == "bigquery"):
-            (mimetype, data) = DoPlanetStackAnalytics(request)
-            return HttpResponse(data, mimetype=mimetype)
-        else:
-            return HttpResponse(json.dumps("Unknown"), mimetype='application/javascript')
-
diff --git a/planetstack/core/static/img/bg_left_white.gif b/planetstack/core/static/img/bg_left_white.gif
new file mode 100644 (file)
index 0000000..7407236
Binary files /dev/null and b/planetstack/core/static/img/bg_left_white.gif differ
index b9d0c35..bf7e37d 100644 (file)
@@ -1,7 +1,4 @@
-function getObjectAndEventQuery() {
-    var selectedNodeTxt = $('#currentOriginalNode').text();
-    selectedNodeTxt = selectedNodeTxt.trim();
-    selectedNodeTxt = selectedNodeTxt.split(' ').join('');//selectedNodeTxt.replace(" ", "")
+function getPageKind() {
     var parentNodeTxt = $('#selectedMainNav').text();
     parentNodeTxt = parentNodeTxt.replace("/\n","");
     parentNodeTxt = parentNodeTxt.replace("»","");
@@ -9,15 +6,23 @@ function getObjectAndEventQuery() {
     if (parentNodeTxt.length > 0 && parentNodeTxt.charAt(parentNodeTxt.length-1)=='s') {
             parentNodeTxt = parentNodeTxt.substring(0, parentNodeTxt.length-1);
     }
+    return parentNodeTxt;
+}
+
+function getObjectQuery() {
+    var selectedNodeTxt = $('#currentOriginalNode').text();
+    selectedNodeTxt = selectedNodeTxt.trim();
+    selectedNodeTxt = selectedNodeTxt.split(' ').join('');//selectedNodeTxt.replace(" ", "")
+    parentNodeTxt = getPageKind();
 
     if (parentNodeTxt == "Slice") {
-        return "&event=libvirt_heartbeat&slice=" + selectedNodeTxt;
+        return "&slice=" + selectedNodeTxt;
     } else if (parentNodeTxt == "Site") {
-        return "&event=node_heartbeat&site=" + selectedNodeTxt;
+        return "&site=" + selectedNodeTxt;
     } else if (parentNodeTxt == "Node") {
-        return "&event=node_heartbeat&node=" + selectedNodeTxt;
+        return "&node=" + selectedNodeTxt;
     } else {
-        return "&event=node_heartbeat";
+        return "";
     }
 }
 
@@ -39,8 +44,20 @@ function updatePageAnalyticsData(summaryData) {
     window.pageAnalyticsUrl = summaryData["dataSourceUrl"];
     lastRow = summaryData.rows.length-1;
 
-    setPageStatInt(".nodesLabel", ".nodesValue", "Node Count", "", summaryData.rows[lastRow]["count_hostname"]);
-    setPageStatInt(".cpuLabel", ".cpuValue", "Avg Load", "%", summaryData.rows[lastRow]["avg_cpu"]);
+    if (summaryData.msg) {
+        $("#minidashStatus").text(summaryData.msg).show();
+    } else {
+        $("#minidashStatus").text("").hide();
+    }
+
+    if (summaryData.rows.length <= 0) {
+        //console.log("no data received from page analytics ajax")
+        return;
+    }
+
+    //Old minidashboard
+    //setPageStatInt(".nodesLabel", ".nodesValue", "Node Count", "", summaryData.rows[lastRow]["count_hostname"]);
+    //setPageStatInt(".cpuLabel", ".cpuValue", "Avg Load", "%", summaryData.rows[lastRow]["avg_cpu"]);
 
     //New miniDashboard
     setPageStatInt("#miniDashNodeCountLabel", "#miniDashNodeCount", "Node Count", "", summaryData.rows[lastRow]["count_hostname"]);
@@ -48,46 +65,65 @@ function updatePageAnalyticsData(summaryData) {
 }
 
 function updatePageAnalytics() {
-    var url= '/analytics/bigquery/?avg=%cpu&count=%hostname&cached=1' + getObjectAndEventQuery();
-    console.log(url);
+    var url= '/analytics/bigquery/?avg=%cpu&count=%hostname&cached=default' + getObjectQuery();
     $.ajax({
     url: url,
     dataType : 'json',
     type : 'GET',
-    success: function(newData)
-    {
+    success: function(newData) {
         updatePageAnalyticsData(newData);
+        setTimeout(updatePageAnalytics, 30000);
+    },
+    error: function() {
+        console.log("error retrieving statistics; retry in 5 seconds");
+        setTimeout(updatePageBandwidth, 5000);
     }
 });
-    setTimeout(updatePageAnalytics, 30000);
 }
 
-setTimeout(updatePageAnalytics, 5000);
-
 // ----------------------------------------------------------------------------
 // bandwidth
 
 function updatePageBandwidthData(summaryData) {
     window.pageBandwidthUrl = summaryData["dataSourceUrl"];
     lastRow = summaryData.rows.length-1;
-    setPageStatFloat(".bandwidthLabel", ".bandwidthValue", "Bandwidth", " Gbps", summaryData.rows[lastRow]["sum_computed_bytes_sent_div_elapsed"]*8.0/1024/1024/1024,2);
+
+    if (summaryData.rows.length <= 0) {
+        //console.log("no data received from page bandwidth ajax")
+        return;
+    }
+
+    //Old minidashboard
+    //setPageStatFloat(".bandwidthLabel", ".bandwidthValue", "Bandwidth", " Gbps", summaryData.rows[lastRow]["sum_computed_bytes_sent_div_elapsed"]*8.0/1024/1024/1024,2);
+
+    //New minidashboard
     setPageStatFloat("#miniDashBandwidthLabel", "#miniDashBandwidth", "Bandwidth", " Gbps", summaryData.rows[lastRow]["sum_computed_bytes_sent_div_elapsed"]*8.0/1024/1024/1024,2);
 }
 
 function updatePageBandwidth() {
-    var url='/analytics/bigquery/?computed=%bytes_sent/%elapsed&cached=1' + getObjectAndEventQuery();
+    var url='/analytics/bigquery/?computed=%bytes_sent/%elapsed&cached=default' + getObjectQuery();
+
+    if (getPageKind()!="Slice") {
+        url = url + "&event=node_heartbeat";
+    }
 
     $.ajax({
     url : url,
     dataType : 'json',
     type : 'GET',
-    success: function(newData)
-    {
+    success: function(newData) {
         updatePageBandwidthData(newData);
+        setTimeout(updatePageBandwidth, 30000);
+    },
+    error: function() {
+        console.log("error retrieving statistics; retry in 5 seconds")
+        setTimeout(updatePageBandwidth, 5000);
     }
 });
-    setTimeout(updatePageBandwidth, 30000);
 }
 
-setTimeout(updatePageBandwidth, 5000);
+$( document ).ready(function() {
+    updatePageAnalytics();
+    updatePageBandwidth();
+});\r
 
index 1fa6ea2..44d62b4 100644 (file)
@@ -659,9 +659,6 @@ height: 84.5%;
 #wrap {
     background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
 }
-#wrap {
-    background: url("../img/bg_left_white.gif") repeat-y scroll left top rgba(0, 0, 0, 0);
-}
 #wrap {
     height: auto !important;
     margin: 0 auto -60px;
@@ -1034,7 +1031,7 @@ div.chartContainer
  margin-left: 5%;
 }
 
-#network-dropdown,#adv-network-dropdown{
+#network-dropdown,#adv-network-dropdown,#adv-network-value{
  margin-left: 3.7%;
 }
 
@@ -1129,3 +1126,24 @@ display:none;
 #advNumOfSlivers{
         margin-right: 1% !important;
 }
+
+#private-vol-checkbox{
+margin: 0 0 1% 1%;
+}
+
+.public-key-warning{
+text-align: center;
+display:none;
+}
+
+#private-vol{
+margin-right: 15% !important;
+}\r
+\r
+.customize_row {\r
+  display: table;\r
+}\r
+.customize_column {\r
+  display: table-cell;\r
+  padding: 10px;\r
+}\r
index fb33022..d8690ed 100644 (file)
@@ -10,11 +10,13 @@ function renderChart(newStyle, dialog, container, dataSourceUrl, yColumn, xColum
         $('.modal-body').scrollTop(0);
     }
 
-    console.log(dataSourceUrl);
+    startQuery(container, dataSourceUrl, yColumn, xColumn, aggFunc, options)
+}
 
+function startQuery(container, dataSourceUrl, yColumn, xColumn, aggFunc, options) {
     var query = new google.visualization.Query(dataSourceUrl);
     query && query.abort();
-    query.send(function(response) {handleResponse_psg(container, response, yColumn, xColumn, aggFunc, options);});
+    query.send(function(response) {handleResponse_psg(container, dataSourceUrl, response, yColumn, xColumn, aggFunc, options);});
 }
 
 // NOTE: appended _psg to showLine() and handleResponse() to prevent conflict
@@ -29,8 +31,6 @@ function agg_bandwidth(arr) {
 }
 
 function showLine_psg(container, dt, options) {
-    console.log("showline_psg");
-
     var base_options = {
             'width': 520,
             'height': 300,
@@ -66,7 +66,7 @@ function fixDate2(unixDate) {
     return new Date(unixDate);
 }
 
-function handleResponse_psg(container, response, yColumn, xColumn, aggFunc, options) {
+function handleResponse_psg(container, dataSourceUrl, response, yColumn, xColumn, aggFunc, options) {
     var supportedClasses = {
                     'Table':google.visualization.Table,
                     'LineChart':google.visualization.LineChart,
@@ -76,6 +76,12 @@ function handleResponse_psg(container, response, yColumn, xColumn, aggFunc, opti
                     'PieChart':google.visualization.PieChart,
                     'Histogram':google.visualization.Histogram};
 
+    if (response.isError()) {
+        //console.log("retry chart");
+        setTimeout(function () { startQuery(container, dataSourceUrl, yColumn, xColumn, aggFunc, options) }, 5000);
+        return
+    }
+
     var proxy = new google.visualization.ChartWrapper({
       'chartType': 'Table',
       'containerId': 'graph_work',
@@ -103,8 +109,6 @@ function handleResponse_psg(container, response, yColumn, xColumn, aggFunc, opti
             label: dt.getColumnLabel(xColumn),
             aggregation: aggFunc}]);
 
-        console.log(groupedData1.getColumnRange(0))
-        console.log(groupedData1.getColumnRange(1))
         showLine_psg(container, groupedData1, options);
     });
 
@@ -113,15 +117,4 @@ function handleResponse_psg(container, response, yColumn, xColumn, aggFunc, opti
     proxy.draw();
 }
 
-$('.nodesLabel, .nodesValue').click(function() {
-        renderChart(false,"#chartsModal", "#graph", window.pageAnalyticsUrl, 0, "Number of Nodes", 2, "Node Count", google.visualization.data.sum);
-});
-
-$('.cpuLabel, .cpuValue').click(function() {
-        var jsonData = window.pageAnalyticsData;
-        renderChart(false,"#chartsModal", "#graph", window.pageAnalyticsUrl, 0, "Average CPU", 1, "Average CPU", google.visualization.data.sum);
-});
-$('.bandwidthLabel, .bandwidthValue').click(function() {
-        var jsonData = window.pageBandData;
-        renderChart(false,"#chartsModal", "#graph", window.pageBandUrl, 0, "Total Bandwidth (Gbps)", 1, "Total Bandwidth", agg_bandwidth);
-});
+
diff --git a/planetstack/core/static/shell/constants.js b/planetstack/core/static/shell/constants.js
new file mode 100644 (file)
index 0000000..97b690a
--- /dev/null
@@ -0,0 +1,39 @@
+// TryMongo\r
+//\r
+// Copyright (c) 2009 Kyle Banker\r
+// Licensed under the MIT Licence.\r
+// http://www.opensource.org/licenses/mit-license.php\r
+\r
+var DefaultInputHtml = function(stack) {\r
+    var linePrompt = "";\r
+    if(stack == 0) {\r
+      linePrompt += "<span class='prompt'> ></span>";\r
+    }\r
+    else {\r
+      for(var i=0; i <= stack; i++) {\r
+        linePrompt += "<span class='prompt'>.</span>";\r
+      }\r
+    }\r
+    return "<div class='terminal_line'>" +\r
+           linePrompt +\r
+           "<input type='text' class='readLine active' />" +\r
+           "</div>";\r
+}\r
+\r
+var EnterKeyCode     = 13;\r
+var UpArrowKeyCode   = 38;\r
+var DownArrowKeyCode = 40;\r
+\r
+var PTAG = function(str) {\r
+  return '<pre class="terminal_help">' + str + '</pre>';\r
+}\r
+\r
+var BR = function() {\r
+  return "<br/>";\r
+}\r
+\r
+var JavascriptKeywords = ['abstract', 'boolean', 'break', 'byte', 'case', 'catch', 'char', 'class', 'const', 'continue', 'debugger', 'default', 'delete', 'do', 'double', 'else', 'enum', 'export', 'extends', 'false', 'final', 'finally', 'float', 'for', 'function', 'goto', 'if', 'implements', 'import', 'in', 'instanceof', 'int', 'interface', 'long', 'native', 'new', 'null', 'package', 'private', 'protected', 'public', 'return', 'short', 'static', 'super', 'switch', 'synchronized', 'this', 'throw', 'throws', 'transient', 'true', 'try', 'typeof', 'var', 'void', 'volatile', 'while', 'with', 'alert', 'date', 'eval'];\r
+\r
+var JavascriptClassNames = ['Array', 'String', 'Object']\r
+\r
+var MongoKeywords = ['help','tutorial','next','back','t0','t1','t2','t3','t4'];\r
diff --git a/planetstack/core/static/shell/object_id.js b/planetstack/core/static/shell/object_id.js
new file mode 100644 (file)
index 0000000..15cbbb9
--- /dev/null
@@ -0,0 +1,12 @@
+var ObjectIdCounter = 0;
+
+var ObjectId = function() {
+  this.counter = (ObjectIdCounter += 1);
+  this.str     = this.counter;
+  this.initialize();
+  return this.counter;
+};
+
+ObjectId.prototype.initialize = function() {
+  return this.counter;
+}
diff --git a/planetstack/core/static/shell/opencloud.js b/planetstack/core/static/shell/opencloud.js
new file mode 100644 (file)
index 0000000..7166abf
--- /dev/null
@@ -0,0 +1,69 @@
+var opencloud_data = [];
+var opencloud_data_received = false;
+
+function updateOpenCloud(onLoaded) {
+    $.ajax({url: "/admin/shelldata",
+        dataType: "json",
+        type: "GET",
+        success: function(data) {
+            opencloud_data = data;
+            if (!opencloud_data_received) {
+                opencloud_data_received = true;
+                if (onLoaded!=null) {
+                    onLoaded();
+                }
+            }
+            // do this again in 30 seconds
+            setTimeout(function() {updateOpenCloud(onLoaded)}, 10000);
+        },
+        error: function() {
+            console.log("something went wrong. trying again");
+            // do this again in 30 seconds
+            setTimeout(function() {updateOpenCloud(onLoaded)}, 10000);
+        }
+    });
+}
+
+function OpenCloudModel(name) {
+    this.all = function() { return opencloud_data[name]; };
+
+    this.match = function(filterDict,obj) {
+                   for (var k in filterDict) {
+                       if (obj[k] == filterDict[k]) {
+                           return true;
+                       }
+                   }
+                   return false;
+                 };
+
+    this.filter = function(filterDict) {
+                   result = []
+                   all_objs = this.all()
+                   for (var k in all_objs) {
+                        obj = all_objs[k];
+                        if (this.match(filterDict, obj)) {
+                            result.push(obj);
+                        }
+                   }
+                   return result;
+                 };
+
+    this.get = function(filterDict) {
+                   return this.filter(filterDict)[0];
+                 };
+
+    this.__str__ = function() { return '["all", "filter", "get"]' };
+}
+
+//function Slices() {
+//    this.listAll = function() { return opencloud_data["slices"] }
+//    this.__str__ = function() { return '["listAll"]'; }
+//}
+
+function OpenCloud() {
+    this.slices = new OpenCloudModel("slices");
+    this.slivers = new OpenCloudModel("slivers");
+    this.nodes = new OpenCloudModel("nodes");
+    this.sites = new OpenCloudModel("sites");
+    this.__str__ = function() { return '["slices", "slivers", "nodes", "sites"]'; }
+};
diff --git a/planetstack/core/static/shell/opencloud_shell.css b/planetstack/core/static/shell/opencloud_shell.css
new file mode 100644 (file)
index 0000000..4a24cf0
--- /dev/null
@@ -0,0 +1,85 @@
+#terminal {
+  width: 960px;
+  margin:50px auto 50px auto;
+  border: 1px solid black;
+  height: 400px;
+  background: #002b36;
+  overflow: scroll;
+}
+
+#terminal div.terminal_line {
+  width: 940px;
+  margin-bottom: 5px;
+}
+
+#terminal input {
+  width: 875px;
+  margin: 1px 0 1px 10px;
+  border: none;
+  display: inline;
+  padding: 2px;
+  background: #002b36;
+  color: #839496;
+  font-size: 15px;
+  font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace;
+  border-radius:0;
+}
+
+#terminal input:focus {
+  box-shadow:none;
+}
+
+#terminal p {
+  margin: 2px;
+  color: #839496;
+  font-size: 15px;
+  font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace;
+}
+
+.terminal_help {
+  margin: 2px;
+  color: #839496;
+  font-size: 15px;
+  font-family: Menlo, Monaco, 'Andale Mono', 'lucida console', 'Courier New', monospace;
+  background: #002b36;
+  padding:0;
+  line-height:normal;
+}
+
+#terminal a {
+  color: #6495ED;
+}
+
+#terminal span.prompt {
+  color: #839496;
+  font-size: 16px;
+  margin-left: 2px;
+}
+
+/* an experiment with syntax hilighting */
+
+.terminal_string {
+    /*color:green; */
+    color:#859900;
+}
+
+.terminal_number {
+    /*color:darkorange;*/
+    color:#d33682;
+}
+
+.terminal_boolean {
+    /*color:blue;*/
+    color:#7777A0;
+}
+
+.terminal_null {
+    /*color:magenta;*/
+    color:#A000A0;
+}
+
+.terminal_key {
+    /*color:red;*/
+    color:#268bd2;
+}
+
diff --git a/planetstack/core/static/shell/opencloud_shell.js b/planetstack/core/static/shell/opencloud_shell.js
new file mode 100644 (file)
index 0000000..62a8a0a
--- /dev/null
@@ -0,0 +1,409 @@
+// TryMongo
+//
+// Copyright (c) 2009 Kyle Banker
+// Licensed under the MIT Licence.
+// http://www.opensource.org/licenses/mit-license.php
+
+// Readline class to handle line input.
+var ReadLine = function(options) {
+  this.options      = options || {};
+  this.htmlForInput = this.options.htmlForInput;
+  this.inputHandler = this.options.handler || this.mockHandler;
+  this.scoper       = this.options.scoper;
+  this.terminal     = $(this.options.terminalId || "#terminal");
+  this.lineClass    = this.options.lineClass || '.readLine';
+  this.history      = [];
+  this.historyPtr   = 0;
+
+  this.initialize();
+};
+
+ReadLine.prototype = {
+
+  initialize: function() {
+    this.addInputLine();
+  },
+
+  // Enter a new input line with proper behavior.
+  addInputLine: function(stackLevel) {
+    stackLevel = stackLevel || 0;
+    this.terminal.append(this.htmlForInput(stackLevel));
+    var ctx = this;
+    ctx.activeLine = $(this.lineClass + '.active');
+
+    // Bind key events for entering and navigting history.
+    ctx.activeLine.bind("keydown", function(ev) {
+      switch (ev.keyCode) {
+        case EnterKeyCode:
+          ctx.processInput(this.value); 
+          break;
+        case UpArrowKeyCode: 
+          ctx.getCommand('previous');
+          break;
+        case DownArrowKeyCode: 
+          ctx.getCommand('next');
+          break;
+      }
+    });
+
+    this.activeLine.focus();
+  },
+
+  // Returns the 'next' or 'previous' command in this history.
+  getCommand: function(direction) {
+    if(this.history.length === 0) {
+      return;
+    }
+    this.adjustHistoryPointer(direction);
+    this.activeLine[0].value = this.history[this.historyPtr];
+    $(this.activeLine[0]).focus();
+    //this.activeLine[0].value = this.activeLine[0].value;
+  },
+
+  // Moves the history pointer to the 'next' or 'previous' position. 
+  adjustHistoryPointer: function(direction) {
+    if(direction == 'previous') {
+      if(this.historyPtr - 1 >= 0) {
+        this.historyPtr -= 1;
+      }
+    }
+    else {
+      if(this.historyPtr + 1 < this.history.length) {
+        this.historyPtr += 1;
+      }
+    }
+  },
+
+  // Return the handler's response.
+  processInput: function(value) {
+    var response = this.inputHandler.apply(this.scoper, [value]);
+    this.insertResponse(response.result);
+
+    // Save to the command history...
+    if((lineValue = value.trim()) !== "") {
+      this.history.push(lineValue);
+      this.historyPtr = this.history.length;
+    }
+
+    // deactivate the line...
+    this.activeLine.value = "";
+    this.activeLine.attr({disabled: true});
+    this.activeLine.removeClass('active');
+
+    // and add add a new command line.
+    this.addInputLine(response.stack);
+  },
+
+  insertResponse: function(response) {
+    if((response.length < 1) || (response=='"donotprintme"') || (response=='donotprintme')) {
+      this.activeLine.parent().append("<p class='response'></p>");
+    }
+    else {
+      this.activeLine.parent().append("<p class='response'>" + response + "</p>");
+    }
+  },
+
+  // Simply return the entered string if the user hasn't specified a smarter handler.
+  mockHandler: function(inputString) {
+    return function() {
+      this._process = function() { return inputString; };
+    };
+  }
+};
+
+var MongoHandler = function() {
+  this._currentCommand = "";
+  this._rawCommand     = "";
+  this._commandStack   = 0;
+  this._tutorialPtr    = 0;
+  this._tutorialMax    = 4;
+
+  this._mongo          = {};
+  this._mongo.test     = [];
+  this.collections     = [];
+};
+
+MongoHandler.prototype = {
+
+  _process: function(inputString, errorCheck) {
+    this._rawCommand += ' ' + inputString;
+
+    try {
+      inputString += '  '; // fixes certain bugs with the tokenizer.
+      var tokens    = inputString.tokens();
+      var mongoFunc = this._getCommand(tokens);
+      if(this._commandStack === 0 && inputString.match(/^\s*$/)) {
+        return {stack: 0, result: ''};
+      }
+      else if(this._commandStack === 0 && mongoFunc) {
+        this._resetCurrentCommand();
+        return {stack: 0, result: mongoFunc.apply(this, [tokens])};
+      }
+      else {
+        return this._evaluator(tokens);
+      }
+    }
+
+    catch(err) {
+        this._resetCurrentCommand();
+        console.trace();
+        return {stack: 0, result: "JS Error: " + err};
+    }
+  },
+
+  // Calls eval on the input string when ready.
+  _evaluator: function(tokens) {
+    isAssignment = tokens.length>=2 && tokens[0].type=="name" && tokens[1].type=="operator" && tokens[1].value=="=";
+
+    this._currentCommand += " " + this._massageTokens(tokens);
+    if(this._shouldEvaluateCommand(tokens))  {
+        xos = new OpenCloud();
+        print = this.print;
+
+        // So this eval statement is the heart of the REPL.
+        var result = eval(this._currentCommand.trim());
+        if(result === undefined) {
+          throw('result is undefined');
+        } else if (typeof(result) === 'function') {
+          throw('result is a function. did you mean to call it?');
+        } else {
+          result = $htmlFormat(result);
+        }
+        this._resetCurrentCommand();
+        if (isAssignment) {
+            return {stack: this._commandStack, result: ""};
+        } else {
+            return {stack: this._commandStack, result: result};
+        }
+      }
+
+    else {
+      return {stack: this._commandStack, result: ""};
+    }
+  },
+
+  _resetCurrentCommand: function() {
+    this._currentCommand = '';
+    this._rawCommand     = '';
+  },
+
+  // Evaluate only when we've exited any blocks.
+  _shouldEvaluateCommand: function(tokens) {
+    for(var i=0; i < tokens.length; i++) {
+      var token = tokens[i];
+      if(token.type == 'operator') {
+        if(token.value == '(' || token.value == '{') {
+          this._commandStack += 1;
+        }
+        else if(token.value == ')' || token.value == '}') {
+          this._commandStack -= 1;
+        }
+      }
+    }
+
+    if(this._commandStack === 0) {
+      return true;
+    }
+    else {
+      return false;
+    }
+  },
+
+  _massageTokens: function(tokens) {
+    for(var i=0; i < tokens.length; i++) {
+      if(tokens[i].type == 'name') {
+        if(tokens[i].value == 'var') {
+          tokens[i].value = '';
+        }
+      }
+    }
+    return this._collectTokens(tokens);
+  },
+
+  // Collects tokens into a string, placing spaces between variables.
+  // This methods is called after we scope the vars.
+  _collectTokens: function(tokens) {
+    var result = "";
+    for(var i=0; i < tokens.length; i++) {
+      if(tokens[i].type == "name" && tokens[i+1] && tokens[i+1].type == 'name') {
+        result += tokens[i].value + ' ';
+      }
+      else if (tokens[i].type == 'string') {
+        result += "'" + tokens[i].value + "'";
+      }
+      else {
+        result += tokens[i].value;
+      }
+    }
+    return result;
+  },
+
+  // print output to the screen, e.g., in a loop
+  // TODO: remove dependency here
+  print: function() {
+   $('.readLine.active').parent().append('<p>' + JSON.stringify(arguments[0]) + '</p>');
+   return "donotprintme";
+  },
+
+  /* MongoDB     */
+  /* ________________________________________ */
+
+  // help command
+  _help: function() {
+      return PTAG('HELP') +
+             PTAG('xos                                 list xos API object types') +
+             PTAG('xos.slices                          list methods to can call on slices') +
+             PTAG('xos.slices.all()                    get all slices') +
+             PTAG('xos.slices.filter({key: "value"})   filter using dictionary') +
+             PTAG('xos.slices.get({key: "value"})      get using dictionary')
+
+  },
+
+  _tutorial: function() {
+    this._tutorialPtr = 0;
+    return PTAG("This is a self-guided tutorial on the xos shell.") +
+           PTAG("The tutorial is simple, more or less a few basic commands to try.") +
+           PTAG("To go directly to any part tutorial, enter one of the commands t0, t1, t2...t10") +
+           PTAG("Otherwise, use 'next' and 'back'. Start by typing 'next' and pressing enter.");
+  },
+
+  // go to the next step in the tutorial.
+  _next: function() {
+    if(this._tutorialPtr < this._tutorialMax) {
+      return this['_t' + (this._tutorialPtr + 1)]();
+    }
+    else {
+      return "You've reached the end of the tutorial. To go to the beginning, type 'tutorial'";
+    }
+  },
+
+  // go to the previous step in the tutorial.
+  _back: function() {
+    if(this._tutorialPtr > 1) {
+      return this['_t' + (this._tutorialPtr - 1)]();
+    }
+    else {
+      return this._tutorial();
+    }
+  },
+
+  _t1: function() {
+    this._tutorialPtr = 1;
+    return PTAG('1. JavaScript Shell') +
+           PTAG('The first thing to notice is that the MongoDB shell is JavaScript-based.') +
+           PTAG('So you can do things like:') +
+           PTAG('  a = 5; ') +
+           PTAG('  a * 10; ') +
+           PTAG('  print(a); ') +
+           PTAG("  for(i=0; i<10; i++) { print('hello'); }; ") +
+           PTAG("Try a few JS commands; when you're ready to move on, enter 'next'");
+
+  },
+
+  _t2: function() {
+    this._tutorialPtr = 2;
+    return PTAG('2. List some objects') +
+           PTAG('Try these:') +
+           PTAG('    xos.slices.all();') +
+           PTAG('    xos.slivers.all();') +
+           PTAG('    xos.sites.all();') +
+           PTAG('    xos.nodes.all();');
+
+  },
+
+  _t3: function() {
+    this._tutorialPtr = 3;
+    return PTAG('3. Filter some objects') +
+           PTAG('Try these:') +
+           PTAG('    xos.slices.get({name: "HyperCache"});');
+           PTAG('    xos.nodes.filter({site_id: xos.sites.get({name: "Princeton"})["id"]});');
+
+  },
+
+  _t4: function() {
+    this._tutorialPtr = 4;
+    return PTAG('4. Available xos objects and methods') +
+           PTAG('Try these:') +
+           PTAG('    xos;') +
+           PTAG('    xos.nodes;');
+
+  },
+
+  _getCommand: function(tokens) {
+    if(tokens[0] && ArrayInclude(MongoKeywords,(tokens[0].value + '').toLowerCase())) {
+      switch(tokens[0].value.toLowerCase()) {
+        case 'help':
+          return this._help;
+
+        case 'tutorial':
+          return this._tutorial;
+        case 'next':
+          return this._next;
+        case 'back':
+          return this._back;
+        case 't0':
+          return this._tutorial;
+        case 't1':
+          return this._t1;
+        case 't2':
+          return this._t2;
+        case 't3':
+          return this._t3;
+        case 't4':
+          return this._t4;
+      }
+    }
+  }
+};
+
+function replaceAll(find, replace, str) {
+  return str.replace(new RegExp(find, 'g'), replace);\r
+}
+
+/* stackoverflow: http://stackoverflow.com/questions/4810841/how-can-i-pretty-print-json-using-javascript */
+function syntaxHighlight(json) {
+    if ( json.hasOwnProperty("__str__")) {
+        return syntaxHighlight(json.__str__());
+    }
+    if (typeof json != 'string') {\r
+         json = JSON.stringify(json, undefined, "\t");\r
+    }\r
+    json = json.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\r
+    return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) {\r
+        var cls = 'terminal_number';\r
+        if (/^"/.test(match)) {\r
+            if (/:$/.test(match)) {\r
+                cls = 'terminal_key';\r
+            } else {\r
+                cls = 'terminal_string';\r
+            }\r
+        } else if (/true|false/.test(match)) {\r
+            cls = 'terminal_boolean';\r
+        } else if (/null/.test(match)) {\r
+            cls = 'terminal_null';\r
+        }\r
+        return '<span class="' + cls + '">' + match + '</span>';\r
+    });\r
+}
+
+$htmlFormat = function(obj) {
+  //JSON.stringify(obj,undefined,2)
+  result=replaceAll("\t","&nbsp;",replaceAll("\n","<br>",syntaxHighlight(obj))); //tojson(obj, ' ', ' ', true);
+  return result;
+}
+
+function startTerminal() {
+  var mongo       = new MongoHandler();
+  var terminal    = new ReadLine({htmlForInput: DefaultInputHtml,
+                                  handler: mongo._process,
+                                  scoper: mongo});
+  $("#terminal_help1").show();
+  $("#terminal_help2").show();
+  $("#terminal_wait").hide();
+
+  $("#terminal").bind('click', function() { $(".readLine.active").focus(); });
+};
+
+$(document).ready(function() {
+    updateOpenCloud(onLoaded = startTerminal);
+});
diff --git a/planetstack/core/static/shell/shell_utils.js b/planetstack/core/static/shell/shell_utils.js
new file mode 100644 (file)
index 0000000..8ed5f4f
--- /dev/null
@@ -0,0 +1,548 @@
+DB = function() {
+}
+
+print = function(msg) {
+  //console.log(msg);
+}
+
+
+friendlyEqual = function( a , b ){
+    if ( a == b )
+        return true;
+
+    if ( tojson( a ) == tojson( b ) )
+        return true;
+
+    return false;
+}
+
+
+doassert = function( msg ){
+    print( "assert: " + msg );
+    throw msg;
+}
+
+assert = function( b , msg ){
+    if ( assert._debug && msg ) print( "in assert for: " + msg );
+
+    if ( b )
+        return;
+    
+    doassert( "assert failed : " + msg );
+}
+
+assert.eq = function( a , b , msg ){
+    if ( assert._debug && msg ) print( "in assert for: " + msg );
+
+    if ( a == b )
+        return;
+
+    if ( ( a != null && b != null ) && friendlyEqual( a , b ) )
+        return;
+
+    doassert( "[" + tojson( a ) + "] != [" + tojson( b ) + "] are not equal : " + msg );
+}
+
+assert.neq = function( a , b , msg ){
+    if ( assert._debug && msg ) print( "in assert for: " + msg );
+    if ( a != b )
+        return;
+
+    doassert( "[" + a + "] != [" + b + "] are equal : " + msg );
+}
+
+assert.soon = function( f, msg, timeout, interval ) {
+    if ( assert._debug && msg ) print( "in assert for: " + msg );
+
+    var start = new Date();
+    timeout = timeout || 30000;
+    interval = interval || 200;
+    var last;
+    while( 1 ) {
+        
+        if ( typeof( f ) == "string" ){
+            if ( eval( f ) )
+                return;
+        }
+        else {
+            if ( f() )
+                return;
+        }
+        
+        if ( ( new Date() ).getTime() - start.getTime() > timeout )
+            doassert( "assert.soon failed: " + f + ", msg:" + msg );
+        sleep( interval );
+    }
+}
+
+assert.throws = function( func , params , msg ){
+    if ( assert._debug && msg ) print( "in assert for: " + msg );
+    try {
+        func.apply( null , params );
+    }
+    catch ( e ){
+        return e;
+    }
+
+    doassert( "did not throw exception: " + msg );
+}
+
+assert.commandWorked = function( res , msg ){
+    if ( assert._debug && msg ) print( "in assert for: " + msg );
+
+    if ( res.ok == 1 )
+        return;
+    
+    doassert( "command failed: " + tojson( res ) + " : " + msg );
+}
+
+assert.commandFailed = function( res , msg ){
+    if ( assert._debug && msg ) print( "in assert for: " + msg );
+
+    if ( res.ok == 0 )
+        return;
+    
+    doassert( "command worked when it should have failed: " + tojson( res ) + " : " + msg );
+}
+
+assert.isnull = function( what , msg ){
+    if ( assert._debug && msg ) print( "in assert for: " + msg );
+
+    if ( what == null )
+        return;
+    
+    doassert( "supposed to null (" + ( msg || "" ) + ") was: " + tojson( what ) );
+}
+
+assert.lt = function( a , b , msg ){
+    if ( assert._debug && msg ) print( "in assert for: " + msg );
+
+    if ( a < b )
+        return;
+    doassert( a + " is not less than " + b + " : " + msg );
+}
+
+assert.gt = function( a , b , msg ){
+    if ( assert._debug && msg ) print( "in assert for: " + msg );
+
+    if ( a > b )
+        return;
+    doassert( a + " is not greater than " + b + " : " + msg );
+}
+
+Object.extend = function( dst , src , deep ){
+    for ( var k in src ){
+        var v = src[k];
+        if ( deep && typeof(v) == "object" ){
+            v = Object.extend( typeof ( v.length ) == "number" ? [] : {} , v , true );
+        }
+        dst[k] = v;
+    }
+    return dst;
+}
+
+argumentsToArray = function( a ){
+    var arr = [];
+    for ( var i=0; i<a.length; i++ )
+        arr[i] = a[i];
+    return arr;
+}
+
+isString = function( x ){
+    return typeof( x ) == "string";
+}
+
+isNumber = function(x){
+    return typeof( x ) == "number";
+}
+
+isObject = function( x ){
+    return typeof( x ) == "object";
+}
+
+String.prototype.trim = function() {
+    return this.replace(/^\s+|\s+$/g,"");
+}
+String.prototype.ltrim = function() {
+    return this.replace(/^\s+/,"");
+}
+String.prototype.rtrim = function() {
+    return this.replace(/\s+$/,"");
+}
+
+Date.timeFunc = function( theFunc , numTimes ){
+
+    var start = new Date();
+    
+    numTimes = numTimes || 1;
+    for ( var i=0; i<numTimes; i++ ){
+        theFunc.apply( null , argumentsToArray( arguments ).slice( 2 ) );
+    }
+
+    return (new Date()).getTime() - start.getTime();
+}
+
+Date.prototype.tojson = function(){
+    return "\"" + this.toString() + "\"";
+}
+
+RegExp.prototype.tojson = RegExp.prototype.toString;
+
+Array.contains = function( a  , x ){
+    for ( var i=0; i<a.length; i++ ){
+        if ( a[i] == x )
+            return true;
+    }
+    return false;
+}
+
+Array.unique = function( a ){
+    var u = [];
+    for ( var i=0; i<a.length; i++){
+        var o = a[i];
+        if ( ! Array.contains( u , o ) ){
+            u.push( o );
+        }
+    }
+    return u;
+}
+
+Array.shuffle = function( arr ){
+    for ( var i=0; i<arr.length-1; i++ ){
+        var pos = i+Math.floor(Math.random()*(arr.length-i));
+        var save = arr[i];
+        arr[i] = arr[pos];
+        arr[pos] = save;
+    }
+    return arr;
+}
+
+
+Array.tojson = function( a , indent , x , html){
+    if (!indent) 
+        indent = "";
+    var spacer = "";
+    if(html) {
+      spacer = "<br/>";
+      indent = " &nbsp; "
+    }
+
+    var s = spacer + "[ " + spacer;
+    indent += " ";
+    for ( var i=0; i<a.length; i++){
+        s += indent + tojson( a[i], indent );
+        if ( i < a.length - 1 ){
+            s += "," + spacer;
+        }
+    }
+    if ( a.length == 0 ) {
+        s += indent;
+    }
+
+    indent = indent.substring(1);
+    s += spacer + " "+"]";
+    return s;
+}
+
+Array.fetchRefs = function( arr , coll ){
+    var n = [];
+    for ( var i=0; i<arr.length; i ++){
+        var z = arr[i];
+        if ( coll && coll != z.getCollection() )
+            continue;
+        n.push( z.fetch() );
+    }
+    
+    return n;
+}
+
+Array.sum = function( arr ){
+    if ( arr.length == 0 )
+        return null;
+    var s = arr[0];
+    for ( var i=1; i<arr.length; i++ )
+        s += arr[i];
+    return s;
+}
+
+Array.avg = function( arr ){
+    if ( arr.length == 0 )
+        return null;
+    return Array.sum( arr ) / arr.length;
+}
+
+Array.stdDev = function( arr ){
+    var avg = Array.avg( arr );
+    var sum = 0;
+
+    for ( var i=0; i<arr.length; i++ ){
+        sum += Math.pow( arr[i] - avg , 2 );
+    }
+
+    return Math.sqrt( sum / arr.length );
+}
+
+if ( ! ObjectId.prototype )
+    ObjectId.prototype = {}
+
+ObjectId.prototype.toString = function(){
+    return this.str;
+}
+
+ObjectId.prototype.tojson = function(){
+    return "ObjectId(\"" + this.str + "\")";
+}
+
+ObjectId.prototype.isObjectId = true;
+
+tojson = function( x, indent , nolint , html){
+    if ( x == null )
+        return "null";
+    
+    if ( x == undefined )
+        return "undefined";
+    
+    if (!indent) 
+        indent = "";
+
+    switch ( typeof x ){
+        
+    case "string": {
+        var s = "\"";
+        for ( var i=0; i<x.length; i++ ){
+            if ( x[i] == '"' ){
+                s += "\\\"";
+            }
+            else
+                s += x[i];
+        }
+        return s + "\"";
+    }
+        
+    case "number": 
+    case "boolean":
+        return "" + x;
+            
+    case "object":{
+        var s = tojsonObject( x, indent , nolint , html);
+        if ( ( nolint == null || nolint == true ) && s.length < 80 && ( indent == null || indent.length == 0 ) ){
+            s = s.replace( /[\s\r\n ]+/gm , " " );
+        }
+        return s;
+    }
+        
+    case "function":
+        return x.toString();
+        
+
+    default:
+        throw "tojson can't handle type " + ( typeof x );
+    }
+    
+}
+
+tojsonObject = function( x, indent , nolint , html){
+    if(html) {
+      var lineEnding = "<br/>";
+      var tabSpace   = "&nbsp;";
+    }
+    else {
+      var lineEnding = nolint ? " " : "\n";
+      var tabSpace = nolint ? "" : "\t";
+    }
+
+    assert.eq( ( typeof x ) , "object" , "tojsonObject needs object, not [" + ( typeof x ) + "]" );
+
+    if (!indent)
+        indent = "";
+
+    if ( x.hasOwnProperty("__str__")) {
+        return x.__str__();
+    }
+
+    if ( typeof( x.tojson ) == "function" && x.tojson != tojson ) {
+        return x.tojson(indent,nolint,html);
+    }
+
+    if ( typeof( x.constructor.tojson ) == "function" && x.constructor.tojson != tojson ) {
+        return x.constructor.tojson( x, indent , nolint, html );
+    }
+
+    if ( x.toString() == "[object MaxKey]" )
+        return "{ $maxKey : 1 }";
+    if ( x.toString() == "[object MinKey]" )
+        return "{ $minKey : 1 }";
+
+    var s = "{" + lineEnding;
+
+    // push one level of indent
+    indent += tabSpace;
+
+    var total = 0;
+    for ( var k in x ) total++;
+    if ( total == 0 ) {
+        s += indent + lineEnding;
+    }
+
+    var keys = x;
+    if ( typeof( x._simpleKeys ) == "function" )
+        keys = x._simpleKeys();
+    var num = 1;
+    for ( var k in keys ){
+        var val = x[k];
+
+        s += indent + "\"" + k + "\" : " + tojson( val, indent , nolint );
+        if (num != total) {
+            s += ",";
+            num++;
+        }
+        s += lineEnding;
+    }
+
+    // pop one level of indent
+    indent = indent.substring(1);
+    return s + indent + "}";
+}
+
+shellPrint = function( x ){
+    it = x;
+    if ( x != undefined )
+        shellPrintHelper( x );
+}
+
+printjson = function(x){
+    print( tojson( x ) );
+}
+
+shellPrintHelper = function( x ){
+
+    if ( typeof( x ) == "undefined" ){
+
+        return;
+    }
+    
+    if ( x == null ){
+        print( "null" );
+        return;
+    }
+
+    if ( typeof x != "object" ) 
+        return print( x );
+    
+    var p = x.shellPrint;
+    if ( typeof p == "function" )
+        return x.shellPrint();
+
+    var p = x.tojson;
+    if ( typeof p == "function" )
+        print( x.tojson() );
+    else
+        print( tojson( x ) );
+}
+
+shellHelper = function( command , rest , shouldPrint ){
+    command = command.trim();
+    var args = rest.trim().replace(/;$/,"").split( "\s+" );
+    
+    if ( ! shellHelper[command] )
+        throw "no command [" + command + "]";
+    
+    var res = shellHelper[command].apply( null , args );
+    if ( shouldPrint ){
+        shellPrintHelper( res );
+    }
+    return res;
+}
+
+help = shellHelper.help = function(){
+    print( "HELP" );
+    print( "\t" + "show dbs                     show database names");
+    print( "\t" + "show collections             show collections in current database");
+    print( "\t" + "show users                   show users in current database");
+    print( "\t" + "show profile                 show most recent system.profile entries with time >= 1ms");
+    print( "\t" + "use <db name>                set curent database to <db name>" );
+    print( "\t" + "db.help()                    help on DB methods");
+    print( "\t" + "db.foo.help()                help on collection methods");
+    print( "\t" + "db.foo.find()                list objects in collection foo" );
+    print( "\t" + "db.foo.find( { a : 1 } )     list objects in foo where a == 1" );
+    print( "\t" + "it                           result of the last line evaluated; use to further iterate");
+}
+
+if ( typeof( Map ) == "undefined" ){
+    Map = function(){
+        this._data = {};
+    }
+}
+
+Map.hash = function( val ){
+    if ( ! val )
+        return val;
+
+    switch ( typeof( val ) ){
+    case 'string':
+    case 'number':
+    case 'date':
+        return val.toString();
+    case 'object':
+    case 'array':
+        var s = "";
+        for ( var k in val ){
+            s += k + val[k];
+        }
+        return s;
+    }
+
+    throw "can't hash : " + typeof( val );
+}
+
+Map.prototype.put = function( key , value ){
+    var o = this._get( key );
+    var old = o.value;
+    o.value = value;
+    return old;
+}
+
+Map.prototype.get = function( key ){
+    return this._get( key ).value;
+}
+
+Map.prototype._get = function( key ){
+    var h = Map.hash( key );
+    var a = this._data[h];
+    if ( ! a ){
+        a = [];
+        this._data[h] = a;
+    }
+    
+    for ( var i=0; i<a.length; i++ ){
+        if ( friendlyEqual( key , a[i].key ) ){
+            return a[i];
+        }
+    }
+    var o = { key : key , value : null };
+    a.push( o );
+    return o;
+}
+
+Map.prototype.values = function(){
+    var all = [];
+    for ( var k in this._data ){
+        this._data[k].forEach( function(z){ all.push( z.value ); } );
+    }
+    return all;
+}
+
+if ( typeof( gc ) == "undefined" ){
+    gc = function(){
+    }
+}
+   
+
+Math.sigFig = function( x , N ){
+    if ( ! N ){
+        N = 3;
+    }
+    var p = Math.pow( 10, N - Math.ceil( Math.log( Math.abs(x) ) / Math.log( 10 )) );
+    return Math.round(x*p)/p;
+}
+
diff --git a/planetstack/core/static/shell/tokens.js b/planetstack/core/static/shell/tokens.js
new file mode 100644 (file)
index 0000000..49c246e
--- /dev/null
@@ -0,0 +1,268 @@
+// tokens.js
+// 2009-05-17
+
+// (c) 2006 Douglas Crockford
+
+// Produce an array of simple token objects from a string.
+// A simple token object contains these members:
+//      type: 'name', 'string', 'number', 'operator'
+//      value: string or number value of the token
+//      from: index of first character of the token
+//      to: index of the last character + 1
+
+// Comments of the // type are ignored.
+
+// Operators are by default single characters. Multicharacter
+// operators can be made by supplying a string of prefix and
+// suffix characters.
+// characters. For example,
+//      '<>+-&', '=>&:'
+// will match any of these:
+//      <=  >>  >>>  <>  >=  +: -: &: &&: &&
+
+
+
+String.prototype.tokens = function (prefix, suffix) {
+    var c;                      // The current character.
+    var from;                   // The index of the start of the token.
+    var i = 0;                  // The index of the current character.
+    var length = this.length;
+    var n;                      // The number value.
+    var q;                      // The quote character.
+    var str;                    // The string value.
+
+    var result = [];            // An array to hold the results.
+
+    var make = function (type, value) {
+
+// Make a token object.
+
+        return {
+            type: type,
+            value: value,
+            from: from,
+            to: i
+        };
+    };
+
+// Begin tokenization. If the source string is empty, return nothing.
+
+    if (!this) {
+        return;
+    }
+
+// If prefix and suffix strings are not provided, supply defaults.
+
+    if (typeof prefix !== 'string') {
+        prefix = '<>+-&';
+    }
+    if (typeof suffix !== 'string') {
+        suffix = '=>&:';
+    }
+
+
+// Loop through this text, one character at a time.
+
+    c = this.charAt(i);
+    while (c) {
+        from = i;
+
+// Ignore whitespace.
+
+        if (c <= ' ') {
+            i += 1;
+            c = this.charAt(i);
+
+// name.
+
+        } else if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z') {
+            str = c;
+            i += 1;
+            for (;;) {
+                c = this.charAt(i);
+                if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') ||
+                        (c >= '0' && c <= '9') || c === '_') {
+                    str += c;
+                    i += 1;
+                } else {
+                    break;
+                }
+            }
+            result.push(make('name', str));
+
+// number.
+
+// A number cannot start with a decimal point. It must start with a digit,
+// possibly '0'.
+
+        } else if (c >= '0' && c <= '9') {
+            str = c;
+            i += 1;
+
+// Look for more digits.
+
+            for (;;) {
+                c = this.charAt(i);
+                if (c < '0' || c > '9') {
+                    break;
+                }
+                i += 1;
+                str += c;
+            }
+
+// Look for a decimal fraction part.
+
+            if (c === '.') {
+                i += 1;
+                str += c;
+                for (;;) {
+                    c = this.charAt(i);
+                    if (c < '0' || c > '9') {
+                        break;
+                    }
+                    i += 1;
+                    str += c;
+                }
+            }
+
+// Look for an exponent part.
+
+            if (c === 'e' || c === 'E') {
+                i += 1;
+                str += c;
+                c = this.charAt(i);
+                if (c === '-' || c === '+') {
+                    i += 1;
+                    str += c;
+                    c = this.charAt(i);
+                }
+                if (c < '0' || c > '9') {
+                    make('number', str).error("Bad exponent");
+                }
+                do {
+                    i += 1;
+                    str += c;
+                    c = this.charAt(i);
+                } while (c >= '0' && c <= '9');
+            }
+
+// Make sure the next character is not a letter.
+
+            if (c >= 'a' && c <= 'z') {
+                str += c;
+                i += 1;
+                make('number', str).error("Bad number");
+            }
+
+// Convert the string value to a number. If it is finite, then it is a good
+// token.
+
+            n = +str;
+            if (isFinite(n)) {
+                result.push(make('number', n));
+            } else {
+                make('number', str).error("Bad number");
+            }
+
+// string
+
+        } else if (c === '\'' || c === '"') {
+            str = '';
+            q = c;
+            i += 1;
+            for (;;) {
+                c = this.charAt(i);
+                if (c < ' ') {
+                    make('string', str).error(c === '\n' || c === '\r' || c === '' ?
+                        "Unterminated string." :
+                        "Control character in string.", make('', str));
+                }
+
+// Look for the closing quote.
+
+                if (c === q) {
+                    break;
+                }
+
+// Look for escapement.
+
+                if (c === '\\') {
+                    i += 1;
+                    if (i >= length) {
+                        make('string', str).error("Unterminated string");
+                    }
+                    c = this.charAt(i);
+                    switch (c) {
+                    case 'b':
+                        c = '\b';
+                        break;
+                    case 'f':
+                        c = '\f';
+                        break;
+                    case 'n':
+                        c = '\n';
+                        break;
+                    case 'r':
+                        c = '\r';
+                        break;
+                    case 't':
+                        c = '\t';
+                        break;
+                    case 'u':
+                        if (i >= length) {
+                            make('string', str).error("Unterminated string");
+                        }
+                        c = parseInt(this.substr(i + 1, 4), 16);
+                        if (!isFinite(c) || c < 0) {
+                            make('string', str).error("Unterminated string");
+                        }
+                        c = String.fromCharCode(c);
+                        i += 4;
+                        break;
+                    }
+                }
+                str += c;
+                i += 1;
+            }
+            i += 1;
+            result.push(make('string', str));
+            c = this.charAt(i);
+
+// comment.
+
+        } else if (c === '/' && this.charAt(i + 1) === '/') {
+            i += 1;
+            for (;;) {
+                c = this.charAt(i);
+                if (c === '\n' || c === '\r' || c === '') {
+                    break;
+                }
+                i += 1;
+            }
+
+// combining
+
+        } else if (prefix.indexOf(c) >= 0) {
+            str = c;
+            i += 1;
+            while (i < length) {
+                c = this.charAt(i);
+                if (suffix.indexOf(c) < 0) {
+                    break;
+                }
+                str += c;
+                i += 1;
+            }
+            result.push(make('operator', str));
+
+// single-character operator
+
+        } else {
+            i += 1;
+            result.push(make('operator', c));
+            c = this.charAt(i);
+        }
+    }
+    return result;
+};
+
diff --git a/planetstack/core/static/shell/utils.js b/planetstack/core/static/shell/utils.js
new file mode 100644 (file)
index 0000000..1ded27e
--- /dev/null
@@ -0,0 +1,81 @@
+// Try Mongo
+//
+// Copyright (c) 2009 Kyle Banker
+// Licensed under the MIT licence.
+// http://www.opensource.org/licenses/mit-license.php
+
+// extending array like this is breaking datatables
+
+/*Array.prototype.include = function(value) {
+  for(var i=0; i < this.length; i++) {
+    if(this[i] == value) {
+      return this[i];
+    }
+  }
+  return false;
+};
+
+Array.prototype.empty = function() {
+  return (this.length == 0);
+};*/
+
+function ArrayInclude(arr,value) {
+  for(var i=0; i < arr.length; i++) {
+    if(arr[i] == value) {
+      return arr[i];
+    }
+  }
+  return false;
+};
+
+Function.prototype.bind = function() {
+  var __method = this, object = arguments[0], args = [];
+
+  for(i = 1; i < arguments.length; i++) {
+   args.push(arguments[i]);
+  }
+
+ return function() {
+ return __method.apply(object, args);
+ };
+}; 
+
+String.prototype.trim = function() {
+  return this.replace(/^\s+|\s+$/g,"");
+};
+
+// Prints javascript types as readable strings.
+Inspect = function(obj) {
+  if(typeof(obj) != 'object') {
+    return obj;
+  }
+
+  else if (obj instanceof Array) {
+    var objRep = [];
+    for(var prop in obj) { 
+      if(obj.hasOwnProperty(prop)) {
+        objRep.push(obj[prop]); 
+      }
+    }
+    return '[' + objRep.join(', ') + ']';
+  }
+
+  else {
+    var objRep = [];
+    for(var prop in obj) {
+      if(obj.hasOwnProperty(prop)) {
+        objRep.push(prop + ': ' + ((typeof(obj[prop]) == 'object') ? Inspect(obj[prop]) : obj[prop]));
+      }
+    }
+    return '{' + objRep.join(', ') + '}';
+  }
+};
+
+// Prints an array of javascript objects.
+CollectionInspect = function(coll) {
+  var str = '';
+  for(var i=0; i<coll.length; i++) {
+    str += Inspect(coll[i]) + '<br />'; 
+  }
+  return str;
+};
diff --git a/planetstack/core/tests.py b/planetstack/core/tests.py
new file mode 100644 (file)
index 0000000..1c490c8
--- /dev/null
@@ -0,0 +1,128 @@
+#!/usr/bin/python
+from django.test import TestCase
+from core.models import *
+from rest_framework.test import *
+from genapi import *
+import json
+from datetime import datetime
+
+FIXTURES_FILE = 'core/fixtures/initial_data.json'
+MODELS = ['Deployment','Image','Node','Reservation','Slice','Sliver','User']
+
+def is_dynamic_type(x):
+       t = type(x)
+       return t in [datetime]
+
+class APITestCase(TestCase):
+       def setUp(self):
+               self.init_data=json.loads(open(FIXTURES_FILE).read())
+               self.data_dict={}
+               self.hidden_keys={}
+
+               for d in self.init_data:
+                       model_tag = d['model']
+                       model_name = model_tag.split('.')[1]
+
+                       try:
+                               self.data_dict[model_name].append(d)
+                       except:
+                               self.data_dict[model_name]=[d]
+
+               # Any admin user would do
+               self.calling_user = User('sapan@onlab.us')
+               self.client = APIClient()
+               self.client.force_authenticate(user=self.calling_user)
+
+
+       def check_items(self, response, data_list):
+               rdict = {}
+               for r in response:
+                       rdict['%d'%r['id']]=r
+
+               for d in data_list:
+                       match = True
+                       try:
+                               item = rdict['%d'%d['pk']]
+                       except Exception,e:
+                               print 'API missing item %d / %r'%(d['pk'],rdict.keys())
+                               raise e
+
+                       fields=d['fields']
+                       fields['id']=d['pk']
+
+                       for k in item.keys():
+                               try:
+                                       resp_val = fields[k]
+                               except KeyError:
+                                       if (not self.hidden_keys.has_key(k)):
+                                               print 'Hidden key %s'%k
+                                               self.hidden_keys[k]=True
+
+                                       continue
+
+                               if (item[k]!=resp_val and not is_dynamic_type(item[k])):
+                                       if (type(resp_val)==type(item[k])):
+                                               print 'Key %s did not match: 1. %r 2. %r'%(k,item[k],resp_val)
+                                               print fields
+                                               match = False
+
+
+
+       def create(self, model, mplural, record):
+               request = self.client.put('/plstackapi/%s/'%mplural,record['fields'])
+
+               #if (len2==len1):
+               #       raise Exception('Could not delete %s/%d'%(model,pk))
+
+               return
+
+       def update(self, model, mplural, pk):
+               src_record = self.data_dict[model.lower()][0]
+               record_to_update = src_record['fields']
+               now = datetime.now()
+               record_to_update['enacted']=now
+               response = self.client.put('/plstackapi/%s/%d/'%(mplural,pk),record_to_update)
+               self.assertEqual(response.data['enacted'],now)
+
+               return
+
+       def delete(self, model, mplural, pk):
+               mclass = globals()[model]
+               len1 = len(mclass.objects.all())
+               response = self.client.delete('/plstackapi/%s/%d/'%(mplural,pk))
+               len2 = len(mclass.objects.all())
+               self.assertNotEqual(len1,len2)
+
+               return
+
+       def retrieve(self, m, mplural, mlower):
+               response = self.client.get('/plstackapi/%s/'%mplural)
+               #force_authenticate(request,user=self.calling_user)
+               self.check_items(response.data,self.data_dict[mlower])
+
+               return
+
+       def test_initial_retrieve(self):
+               for m in MODELS:
+                       print 'Checking retrieve on %s...'%m
+                       self.retrieve(m, m.lower()+'s',m.lower())
+
+       
+       def test_update(self):
+               for m in MODELS:
+                       print 'Checking update on %s...'%m
+                       first = self.data_dict[m.lower()][0]['pk']
+                       self.update(m, m.lower()+'s',int(first))
+       
+       def test_delete(self):
+               for m in MODELS:
+                       print 'Checking delete on %s...'%m
+                       first = self.data_dict[m.lower()][0]['pk']
+                       self.delete(m, m.lower()+'s',int(first))
+
+       def test_create(self):
+               for m in MODELS:
+                       print 'Checking create on %s...'%m
+                       first = self.data_dict[m.lower()][0]
+                       self.create(m, m.lower()+'s',first)
+
diff --git a/planetstack/core/xoslib/README b/planetstack/core/xoslib/README
new file mode 100644 (file)
index 0000000..a5af121
--- /dev/null
@@ -0,0 +1,7 @@
+Add to the following in settings.py
+
+    STATICFILES_DIRS=
+       "/opt/planetstack/core/xoslib/static/",
+
+    TEMPLATE_DIRS=
+        "/opt/planetstack/xoslib/templates",
\ No newline at end of file
diff --git a/planetstack/core/xoslib/__init__.py b/planetstack/core/xoslib/__init__.py
new file mode 100644 (file)
index 0000000..8b13789
--- /dev/null
@@ -0,0 +1 @@
+
diff --git a/planetstack/core/xoslib/dashboards/gentle.html b/planetstack/core/xoslib/dashboards/gentle.html
new file mode 100644 (file)
index 0000000..707f10e
--- /dev/null
@@ -0,0 +1,25 @@
+    <div class="navbar navbar-inverse navbar-fixed-top">
+      <div class="navbar-inner">
+        <div class="container">
+          <span class="brand">Contact manager</span>
+        </div>
+      </div>
+    </div>
+
+    <div id="main-region" class="container">
+      <p>Here is static content in the web page. You'll notice that it gets replaced by our app as soon as we start it.</p>
+    </div>
+
+    <script type="text/template" id="contact-list-item">
+      <p><%- firstName %> <%- lastName %></p>
+    </script>
+
+<script src="{{ STATIC_URL }}/js/vendor/underscore-min.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.wreqr.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.babysitter.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.marionette.js"></script>
+<script src="{{ STATIC_URL }}/js/xoslib/xos-backbone.js"></script>
+<script src="{{ STATIC_URL }}/js/gentle.js"></script>
+
+
diff --git a/planetstack/core/xoslib/dashboards/helloworld.html b/planetstack/core/xoslib/dashboards/helloworld.html
new file mode 100644 (file)
index 0000000..9b61487
--- /dev/null
@@ -0,0 +1,13 @@
+<!-- /opt/planetstack/templates/admin/dashboard/helloworld.html -->
+<div>Hello, {{ user.firstname }} {{ user.lastname }}.</div>
+<div>This is the hello world view. The value of foobar is {{ foobar }}.</div>
+<div id="dynamicTableOfInterestingThings"></div>
+<p>Type a new description for the the first slice in the collection:</p>
+<input type="text" name="newDescription" id="newDescription">
+<input type="button" name="submitNewDescription" value="submit new description"  id="submitNewDescription">
+
+<script src="{{ STATIC_URL }}/js/vendor/underscore-min.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.js"></script>
+<script src="{{ STATIC_URL }}/js/xoslib/xos-backbone.js"></script>
+
+<script src="{{ STATIC_URL }}/js/helloworld.js"></script>
diff --git a/planetstack/core/xoslib/dashboards/index.html b/planetstack/core/xoslib/dashboards/index.html
new file mode 100644 (file)
index 0000000..04ef136
--- /dev/null
@@ -0,0 +1,15 @@
+<p>xoslib demo views</p>
+
+<table>
+<tr><td><a href="/dashboard/xosDeveloper/">xosDeveloper</a></td>
+<td>Demonstrates using xoslib + marionette to render a list of slices</td>
+</tr>
+
+<tr><td><a href="/dashboard/xosDeveloper_datatables/">xosDeveloper_datatables</a></td>
+<td>Demonstrates using xoslib + datatables to render a list of slices</td>
+</tr>
+
+<tr><td><a href="/dashboard/sliceEditor/">sliceEditor</a></td>
+<td>Demonstrates how to commit data back to the data model using xoslib</td>
+</tr>
+</table>
diff --git a/planetstack/core/xoslib/dashboards/sliceEditor.html b/planetstack/core/xoslib/dashboards/sliceEditor.html
new file mode 100644 (file)
index 0000000..bc3fa1b
--- /dev/null
@@ -0,0 +1,40 @@
+<script src="{{ STATIC_URL }}/js/vendor/underscore-min.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.syphon.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.wreqr.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.babysitter.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.marionette.js"></script>
+
+<link rel="stylesheet" type="text/css" href="{% static 'css/sliceEditor.css' %}" media="all">
+
+<script src="{{ STATIC_URL }}/js/xoslib/xos-backbone.js"></script>
+<script src="{{ STATIC_URL }}/js/sliceEditor.js"></script>
+
+<p>This is a demo of modifying objects using xoslib. Pick a slice in the list on
+the left. Then edit any of it's fields on the right, and press the (save)
+button.</p>
+
+<table class="table table-bordered"><tr><td valign=top>
+<div id="sliceEditorList">
+</div>
+</td>
+<td valign=top>
+<div id="sliceEditorDetail">
+</div>
+</td></tr></table>
+
+<script type="text/template" id="sliceeditor-listitem-template">
+  <%= name %>\r
+</script>\r
+\r
+<script type="text/template" id="sliceeditor-sliceedit-template">\r
+  <form>\r
+  <table>\r
+  <tr><td>Slice Name:</td><td><input type="text" name="name" value="<%= name %>" id="foo"></td></tr>\r
+  <tr><td>Description:</td><td><input type="text" name="description" value="<%= description %>"></td></tr>\r
+  <tr><td colspan=2><button class="btn js-submit">Save</button></td></tr>\r
+  </table>\r
+  </form>\r
+\r
+</script>\r
+
diff --git a/planetstack/core/xoslib/dashboards/sliverListTest.html b/planetstack/core/xoslib/dashboards/sliverListTest.html
new file mode 100644 (file)
index 0000000..255cbad
--- /dev/null
@@ -0,0 +1,25 @@
+{% load mustache %}
+{% load straight_include %}
+
+<script src="{{ STATIC_URL }}/js/vendor/underscore-min.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone-min.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/ICanHaz.min.js"></script>
+
+<script src="{{ STATIC_URL }}/js/xoslib/xos-backbone.js"></script>
+<script src="{{ STATIC_URL }}/js/sliverListTest.js"></script>
+
+<script type="text/html" id="sliverTemplate">
+  {% straight_include "mustache/sliverTemplate.mustache" %}
+</script>
+
+<script type="text/html" id="listApp">
+  {% straight_include "mustache/listApp.mustache" %}
+</script>
+
+<script type="text/html" id="detailApp">
+  {% straight_include "mustache/detailApp.mustache" %}
+</script>
+
+<div id="app">
+  {% mustache "mustache/listApp" %}
+</div>
diff --git a/planetstack/core/xoslib/dashboards/xosDeveloper.html b/planetstack/core/xoslib/dashboards/xosDeveloper.html
new file mode 100644 (file)
index 0000000..58f2d08
--- /dev/null
@@ -0,0 +1,31 @@
+<script src="{{ STATIC_URL }}/js/vendor/underscore-min.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.wreqr.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.babysitter.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.marionette.js"></script>
+
+<script src="{{ STATIC_URL }}/js/xoslib/xos-backbone.js"></script>
+<script src="{{ STATIC_URL }}/js/xosDeveloper.js"></script>
+
+<link rel="stylesheet" type="text/css" href="{% static 'css/xosDeveloper.css' %}" media="all">
+
+<div id="developerView">
+</div>
+
+<script type="text/template" id="developer-slicetable-template">
+  <thead>\r
+    <tr class="developer-header">\r
+      <th>Slice <span class="sort" id="sort-asc-name">&#9650;</span><span class="sort" id="sort-desc-name">&#9660;</span></th>\r
+      <th>Privilege<span class="sort" id="sort-asc-sliceInfo.roles">&#9650;</span><span class="sort" id="sort-desc-sliceInfo.roles">&#9660;</span></th>\r
+      <th>Number of Slivers<span class="sort" id="sort-asc-sliceInfo.sliverCount">&#9650;</span><span class="sort" id="sort-desc-sliceInfo.sliverCount">&#9660;</span></th>\r
+      <th>Number of Sites<span class="sort" id="sort-asc-sliceInfo.siteCount">&#9650;</span><span class="sort" id="sort-desc-sliceInfo.siteCount">&#9660;</span></th>\r
+    </tr>\r
+  </thead>\r
+  <tbody>\r
+  </tbody>\r
+</script>
+
+<script type="text/template" id="developer-slicedetail-template">
+  <td><a href="http://{{request.get_host}}/admin/core/slice/<%= id %>/"><%= name %></a></td><td><%= sliceInfo.roles[0] %></td><td><%= sliceInfo.sliverCount %></td><td><%= sliceInfo.siteCount %></td>\r
+</script>\r
+
diff --git a/planetstack/core/xoslib/dashboards/xosDeveloper_datatables.html b/planetstack/core/xoslib/dashboards/xosDeveloper_datatables.html
new file mode 100644 (file)
index 0000000..d40409a
--- /dev/null
@@ -0,0 +1,16 @@
+<script src="{{ STATIC_URL }}/js/vendor/underscore-min.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.wreqr.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.babysitter.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.marionette.js"></script>
+
+<script src="{{ STATIC_URL }}/js/xoslib/xos-backbone.js"></script>
+<script src="{{ STATIC_URL }}/js/xosDeveloper_datatables.js"></script>
+
+<div id="developerView">Loading...
+</div>
+
+<script type="text/template" id="developer-slicedetail-template">
+  <td><a href="http://{{request.get_host}}/admin/core/slice/<%= id %>/"><%= name %></a></td><td><%= sliceInfo.roles[0] %></td><td><%= sliceInfo.sliverCount %></td><td><%= sliceInfo.siteCount %></td>\r
+</script>\r
+
diff --git a/planetstack/core/xoslib/dashboards/xsh.html b/planetstack/core/xoslib/dashboards/xsh.html
new file mode 100644 (file)
index 0000000..65a44da
--- /dev/null
@@ -0,0 +1,21 @@
+  <div id="terminal">
+    <p class="response">XSH - The XOS Shell</p>
+    <br />
+    <p id="terminal_help1" style="display: none;">type "help" for help</p>
+    <p id="terminal_help2" style="display: none;">type "tutorial" to start the tutorial</p>
+
+  </div>
+  <link rel="stylesheet" type="text/css" href="{% static 'shell/opencloud_shell.css' %}" media="all">
+  <script src="{{ STATIC_URL }}/js/vendor/underscore-min.js"></script>
+  <script src="{{ STATIC_URL }}/js/vendor/backbone-min.js"></script>
+  <script src="{{ STATIC_URL }}/js/vendor/ICanHaz.min.js"></script>
+  <script src="{{ STATIC_URL }}/js/xoslib/xos-backbone.js"></script>
+  <script src="{% static 'js/xsh/xsh.js' %}"></script>
+  <script src="{% static 'js/xsh/object_id.js' %}"></script>
+  <script src="{% static 'js/xsh/constants.js' %}"></script>
+  <script src="{% static 'js/xsh/utils.js' %}"></script>
+  <script src="{% static 'js/xsh/shell_utils.js' %}"></script>
+  <script src="{% static 'js/xsh/tokens.js' %}"></script>
+
+
+
diff --git a/planetstack/core/xoslib/methods/__init__.py b/planetstack/core/xoslib/methods/__init__.py
new file mode 100644 (file)
index 0000000..0b891eb
--- /dev/null
@@ -0,0 +1,45 @@
+from django.views.generic import View
+from django.conf.urls import patterns, url
+import os, sys
+import inspect
+import importlib
+
+# XXX based on core/dashboard/views/__init__.py
+
+# Find all modules in the current directory that have descendents of the View
+# object, and add them as globals to this module. Also, build up a list of urls
+# based on the "url" field of the view classes.
+
+urlpatterns=[]
+
+sys_path_save = sys.path
+try:
+    # __import__() and importlib.import_module() both import modules from
+    # sys.path. So we make sure that the path where we can find the views is
+    # the first thing in sys.path.
+    view_dir = os.path.dirname(os.path.abspath(__file__))
+    sys.path = [view_dir] + sys.path
+    view_urls = []
+    for fn in os.listdir(view_dir):
+        pathname = os.path.join(view_dir,fn)
+        if os.path.isfile(pathname) and fn.endswith(".py") and (fn!="__init__.py"):
+            module = __import__(fn[:-3])
+            for classname in dir(module):
+                c = getattr(module, classname, None)
+
+                if inspect.isclass(c) and issubclass(c, View) and (classname not in globals()):
+                    globals()[classname] = c
+
+                    method_kind = getattr(c, "method_kind", None)
+                    method_name = getattr(c, "method_name", None)
+                    if method_kind and method_name:
+                        view_urls.append( (method_kind, method_name, classname, c) )
+
+    for view_url in view_urls:
+        if view_url[0] == "list":
+           urlpatterns.append(url(r'^' + view_url[1] + '/$',  view_url[3].as_view(), name=view_url[1]+'list'))
+        elif view_url[0] == "detail":
+           urlpatterns.append(url(r'^' + view_url[1] + '/(?P<pk>[a-zA-Z0-9\-]+)/$',  view_url[3].as_view(), name=view_url[1]+'detail'))
+
+finally:
+    sys.path = sys_path_save
diff --git a/planetstack/core/xoslib/methods/sliceplus.py b/planetstack/core/xoslib/methods/sliceplus.py
new file mode 100644 (file)
index 0000000..f990275
--- /dev/null
@@ -0,0 +1,65 @@
+from rest_framework.decorators import api_view
+from rest_framework.response import Response\r
+from rest_framework.reverse import reverse\r
+from rest_framework import serializers\r
+from rest_framework import generics\r
+from core.models import *\r
+from django.forms import widgets
+from core.xoslib.objects.sliceplus import SlicePlus
+
+class SlicePlusIdSerializer(serializers.ModelSerializer):
+        id = serializers.Field()\r
+\r
+        sliceInfo = serializers.SerializerMethodField("getSliceInfo")\r
+\r
+        def getSliceInfo(self, slice):\r
+            return slice.getSliceInfo(user=self.context['request'].user)\r
+\r
+        networks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')\r
+        availableNetworks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')\r
+\r
+        class Meta:\r
+            model = SlicePlus\r
+            fields = ('id','created','updated','enacted','name','enabled','omf_friendly','description','slice_url','site','max_slivers','imagePreference','service','network','mountDataSets','serviceClass','creator','networks','availableNetworks','sliceInfo')
+
+class SlicePlusList(generics.ListCreateAPIView):
+    queryset = SlicePlus.objects.select_related().all()
+    serializer_class = SlicePlusIdSerializer
+
+    method_kind = "list"
+    method_name = "slicesplus"
+
+    def get_queryset(self):
+        return SlicePlus.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(SliceList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class SlicePlusDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = SlicePlus.objects.select_related().all()
+    serializer_class = SlicePlusIdSerializer
+
+    method_kind = "detail"
+    method_name = "slicesplus"
+
+    def get_queryset(self):
+        return SlicePlus.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(SlicePlusDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(SlicePlusDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
diff --git a/planetstack/core/xoslib/objects/__init__.py b/planetstack/core/xoslib/objects/__init__.py
new file mode 100644 (file)
index 0000000..8b13789
--- /dev/null
@@ -0,0 +1 @@
+
diff --git a/planetstack/core/xoslib/objects/sliceplus.py b/planetstack/core/xoslib/objects/sliceplus.py
new file mode 100644 (file)
index 0000000..2542fd7
--- /dev/null
@@ -0,0 +1,35 @@
+from core.models.slice import Slice
+
+class SlicePlus(Slice):
+    class Meta:
+        proxy = True
+
+    def getSliceInfo(self, user=None):
+        used_sites = {}
+        used_deployments = {}
+        sliverCount = 0
+        for sliver in self.slivers.all():
+            site = sliver.node.site
+            deployment = sliver.node.deployment
+            used_sites[site.name] = used_sites.get(site.name, 0) + 1
+            used_deployments[deployment.name] = used_deployments.get(deployment.name, 0) + 1
+            sliverCount = sliverCount + 1
+
+        roles = []
+        if (user!=None):
+            roles = [x.role for x in self.slice_privileges.filter(user=user)]
+
+        return {"sitesUsed": used_sites,
+                "deploymentsUsed": used_deployments,
+                "sliverCount": sliverCount,
+                "siteCount": len(used_sites.keys()),
+                "roles": roles}
+
+    @staticmethod
+    def select_by_user(user):
+        if user.is_admin:
+            qs = SlicePlus.objects.all()
+        else:
+            slice_ids = [sp.slice.id for sp in SlicePrivilege.objects.filter(user=user)]
+            qs = SlicePlus.objects.filter(id__in=slice_ids)
+        return qs
diff --git a/planetstack/core/xoslib/static/css/sliceEditor.css b/planetstack/core/xoslib/static/css/sliceEditor.css
new file mode 100644 (file)
index 0000000..9825efc
--- /dev/null
@@ -0,0 +1,3 @@
+.sliceeditor-listitem { cursor: pointer; color: blue; }
+
+.sliceeditor-listitem:hover { font-weight: bold; }
diff --git a/planetstack/core/xoslib/static/css/xosDeveloper.css b/planetstack/core/xoslib/static/css/xosDeveloper.css
new file mode 100644 (file)
index 0000000..1bce877
--- /dev/null
@@ -0,0 +1 @@
+#developerView .sort { cursor: pointer; }
diff --git a/planetstack/core/xoslib/static/js/gentle.js b/planetstack/core/xoslib/static/js/gentle.js
new file mode 100644 (file)
index 0000000..f79bde2
--- /dev/null
@@ -0,0 +1,49 @@
+var ContactManager = new Marionette.Application();
+
+ContactManager.addRegions({
+    mainRegion: "#main-region"
+});
+
+ContactManager.Contact = Backbone.Model.extend({});
+
+ContactManager.ContactCollection = Backbone.Collection.extend({
+    model: ContactManager.Contact
+});
+
+ContactManager.ContactItemView = Marionette.ItemView.extend({
+    tagName: "li",
+    template: "#contact-list-item"
+});
+
+ContactManager.ContactsView = Marionette.CollectionView.extend({
+    tagName: "ul",
+    childView: ContactManager.ContactItemView
+});
+
+ContactManager.on("start", function(){
+    var contacts = new ContactManager.ContactCollection([
+        {
+            firstName: "Bob",
+            lastName: "Brigham",
+            phoneNumber: "555-0163"
+        },
+        {
+            firstName: "Alice",
+            lastName: "Arten",
+            phoneNumber: "555-0184"
+        },
+        {
+            firstName: "Charlie",
+            lastName: "Campbell",
+            phoneNumber: "555-0129"
+        }
+    ]);
+
+    var contactsView = new ContactManager.ContactsView({
+        collection: contacts
+    });
+
+    ContactManager.mainRegion.show(contactsView);
+});
+
+ContactManager.start();
diff --git a/planetstack/core/xoslib/static/js/helloworld.js b/planetstack/core/xoslib/static/js/helloworld.js
new file mode 100644 (file)
index 0000000..1563094
--- /dev/null
@@ -0,0 +1,27 @@
+// helloworld.js
+function updateHelloWorldData() {
+    var html = "<table class='table table-bordered table-striped'>";
+    for (var slicekey in xos.slices.models) {
+        slice = xos.slices.models[slicekey]
+        html = html + "<tr><td>" + slice.get("name") + "</td><td>" + slice.get("description") + "</td></tr>";
+    }
+    html = html + "</table>";
+    $('#dynamicTableOfInterestingThings').html(html);
+}
+
+$(document).ready(function(){
+    xos.slices.on("change", function() { updateHelloWorldData(); });
+    xos.slices.on("remove", function() { updateHelloWorldData(); });
+    xos.slices.on("sort", function() { updateHelloWorldData();  });
+
+    xos.slices.startPolling();
+});
+
+// helloworld.js
+$(document).ready(function() {
+    $('#submitNewDescription').bind('click', function() {
+        newDescription = $("#newDescription").val();
+        xos.slices.models[0].set("description", newDescription);
+        xos.slices.models[0].save();
+    });
+});
diff --git a/planetstack/core/xoslib/static/js/sliceEditor.js b/planetstack/core/xoslib/static/js/sliceEditor.js
new file mode 100644 (file)
index 0000000..c629944
--- /dev/null
@@ -0,0 +1,110 @@
+/* This is a demo of using xoslib with Marionette
+
+   The main window is split into two halves. The left half has a CollectionView
+   (SliceListView) that lists all slices the user has access to. The right half
+   has an ItemView (SliceDetailView) that allows the user to edit the
+   name and description of a slice, as well as a <Save> button to save it.
+*/
+
+SliceEditorApp = new Marionette.Application();
+
+SliceEditorApp.addRegions({
+  sliceList: "#sliceEditorList",
+  sliceDetail: "#sliceEditorDetail",
+});
+
+/* SliceListItemView: This is the item view that is used by SliceListView to
+   display slice names.
+*/
+
+SliceEditorApp.SliceListItemView = Marionette.ItemView.extend({
+  template: "#sliceeditor-listitem-template",\r
+  tagName: 'li',\r
+  className: 'sliceeditor-listitem',\r
+\r
+  events: {"click": "changeSlice"},\r
+\r
+  changeSlice: function(e) {\r
+        e.preventDefault();\r
+        e.stopPropagation();\r
+\r
+        if (SliceEditorApp.sliceDetail.currentView && SliceEditorApp.sliceDetail.currentView.dirty) {\r
+            if (!confirm("discard current changes?")) {\r
+                return;\r
+            }\r
+        }\r
+\r
+        /* create a new SliceDetailView and set the sliceDetail region to\r
+           display it.\r
+        */\r
+\r
+        var sliceDetailView = new SliceEditorApp.SliceDetailView({\r
+            model: this.model,\r
+        });\r
+        SliceEditorApp.sliceDetail.show(sliceDetailView);\r
+  },\r
+});\r
+\r
+/* SliceListView: This displays a list of slice names.\r
+*/\r
+
+SliceEditorApp.SliceListView = Marionette.CollectionView.extend({
+  tagName: "ul",\r
+  childView: SliceEditorApp.SliceListItemView,\r
+\r
+  initialize: function() {\r
+      /* CollectionViews don't automatically listen for change events, but we\r
+         want to, so we pick up changes from the DetailView, and we pick up\r
+         changes from the server.\r
+      */\r
+      this.listenTo(this.collection, 'change', this._renderChildren);\r
+  },\r
+\r
+  attachHtml: function(compositeView, childView, index) {\r
+      // The REST API will let admin users see everything. For the developer\r
+      // view we still want to hide slices we are not members of.\r
+      if (childView.model.get("sliceInfo").roles.length == 0) {\r
+          return;\r
+      }\r
+      SliceEditorApp.SliceListView.__super__.attachHtml(compositeView, childView, index);\r
+  },\r
+});\r
+\r
+/* SliceDetailView: Display the slice and allow it to be edited */\r
+\r
+SliceEditorApp.SliceDetailView = Marionette.ItemView.extend({\r
+    template: "#sliceeditor-sliceedit-template",\r
+    tagName: 'div',\r
+\r
+    events: {"click button.js-submit": "submitClicked",\r
+             "change input": "inputChanged"},\r
+\r
+    /* inputChanged is watching the onChange events of the input controls. We\r
+       do this to track when this view is 'dirty', so we can throw up a warning\r
+       if the user tries to change his slices without saving first.\r
+    */\r
+\r
+    inputChanged: function(e) {\r
+        this.dirty = true;\r
+    },\r
+\r
+    submitClicked: function(e) {\r
+        e.preventDefault();\r
+        var data = Backbone.Syphon.serialize(this);\r
+        this.model.save(data);\r
+        this.dirty = false;\r
+    },\r
+});\r
+
+SliceEditorApp.on("start", function() {
+  var sliceListView = new SliceEditorApp.SliceListView({
+    collection: xos.slicesPlus\r
+  });\r
+  SliceEditorApp.sliceList.show(sliceListView);\r
+  xos.slicesPlus.startPolling();\r
+});
+
+$(document).ready(function(){
+  SliceEditorApp.start();
+});
+
diff --git a/planetstack/core/xoslib/static/js/sliverListTest.js b/planetstack/core/xoslib/static/js/sliverListTest.js
new file mode 100644 (file)
index 0000000..59970d8
--- /dev/null
@@ -0,0 +1,146 @@
+(function(){
+
+window.SliverView = Backbone.View.extend({
+    tagName: 'li',
+    className: 'sliver',
+
+    events: {
+        'click .permalink': 'navigate'
+    },
+
+    initialize: function(){
+        this.model.bind('change', this.render, this);
+    },
+
+    navigate: function(e){
+        this.trigger('navigate', this.model);
+        e.preventDefault();
+    },
+
+    render: function(){
+        $(this.el).html(ich.sliverTemplate(this.model.toJSON()));
+        return this;
+    }
+});
+
+
+window.DetailApp = Backbone.View.extend({
+    events: {
+        'click .home': 'home'
+    },
+
+    home: function(e){
+        this.trigger('home');
+        e.preventDefault();
+    },
+
+    render: function(){
+        $(this.el).html(ich.detailApp(this.model.toJSON()));
+        return this;
+    }
+});
+
+window.ListView = Backbone.View.extend({
+    initialize: function(){
+        _.bindAll(this, 'addOne', 'addAll');
+
+        this.collection.bind('add', this.addOne);
+        this.collection.bind('reset', this.addAll, this);
+        this.views = [];
+    },
+
+    addAll: function(){
+        this.views = [];
+        this.collection.each(this.addOne);
+    },
+
+    addOne: function(sliver){
+        var view = new SliverView({
+            model: sliver
+        });
+        $(this.el).prepend(view.render().el);
+        this.views.push(view);
+        view.bind('all', this.rethrow, this);
+    },
+
+    rethrow: function(){
+        this.trigger.apply(this, arguments);
+    }
+
+});
+
+window.ListApp = Backbone.View.extend({
+    el: "#app",
+
+    rethrow: function(){
+        this.trigger.apply(this, arguments);
+    },
+
+    render: function(){
+        console.log("listApp.render");
+        console.log(this.collection);
+        $(this.el).html(ich.listApp({}));
+        var list = new ListView({
+            collection: this.collection,
+            el: this.$('#slivers')
+        });
+        list.addAll();
+        list.bind('all', this.rethrow, this);
+    }
+});
+
+
+window.Router = Backbone.Router.extend({
+    routes: {
+        '': 'list',
+        ':id/': 'detail'
+    },
+
+    navigate_to: function(model){
+        var path = (model && model.get('id') + '/') || '';
+        console.log("Router.navigate_to");
+        this.navigate(path, true);
+    },
+
+    detail: function(){ console.log("Router.detail"); },
+
+    list: function(){ console.log("Router.list"); }
+});
+
+$(function(){
+    window.app = window.app || {};
+    app.router = new Router();
+    app.slivers = xos.slivers; //new XOSLib.slivers();
+    app.list = new ListApp({
+        el: $("#app"),
+        collection: app.slivers
+    });
+    app.detail = new DetailApp({
+        el: $("#app")
+    });
+    app.router.bind('route:list', function(){
+        app.slivers.maybeFetch({
+            success: _.bind(app.list.render, app.list)
+        });
+    });
+    app.router.bind('route:detail', function(id){
+        app.slivers.getOrFetch(app.slivers.urlRoot + id + '/', {
+            success: function(model){
+                app.detail.model = model;
+                app.detail.render();
+            }
+        });
+    });
+
+    app.slivers.maybeFetch({
+        success: _.bind(app.list.render, app.list)
+    });
+
+    app.list.bind('navigate', app.router.navigate_to, app.router);
+    app.detail.bind('home', app.router.navigate_to, app.router);
+    Backbone.history.start({
+        pushState: true,
+        silent: app.loaded
+    });
+});
+})();
diff --git a/planetstack/core/xoslib/static/js/vendor/ICanHaz.min.js b/planetstack/core/xoslib/static/js/vendor/ICanHaz.min.js
new file mode 100644 (file)
index 0000000..18ef653
--- /dev/null
@@ -0,0 +1,10 @@
+(function(){var m=function(){var f=function(){};f.prototype={otag:"{{",ctag:"}}",pragmas:{},buffer:[],pragmas_implemented:{"IMPLICIT-ITERATOR":true},context:{},render:function(a,b,c,d){if(!d){this.context=b;this.buffer=[]}if(!this.includes("",a))if(d)return a;else{this.send(a);return}a=this.render_pragmas(a);a=this.render_section(a,b,c);if(d)return this.render_tags(a,b,c,d);this.render_tags(a,b,c,d)},send:function(a){a!=""&&this.buffer.push(a)},render_pragmas:function(a){if(!this.includes("%",a))return a;
+var b=this;return a.replace(RegExp(this.otag+"%([\\w-]+) ?([\\w]+=[\\w]+)?"+this.ctag),function(c,d,e){if(!b.pragmas_implemented[d])throw{message:"This implementation of mustache doesn't understand the '"+d+"' pragma"};b.pragmas[d]={};if(e){c=e.split("=");b.pragmas[d][c[0]]=c[1]}return""})},render_partial:function(a,b,c){a=this.trim(a);if(!c||c[a]===undefined)throw{message:"unknown_partial '"+a+"'"};if(typeof b[a]!="object")return this.render(c[a],b,c,true);return this.render(c[a],b[a],c,true)},render_section:function(a,
+b,c){if(!this.includes("#",a)&&!this.includes("^",a))return a;var d=this;return a.replace(RegExp(this.otag+"(\\^|\\#)\\s*(.+)\\s*"+this.ctag+"\n*([\\s\\S]+?)"+this.otag+"\\/\\s*\\2\\s*"+this.ctag+"\\s*","mg"),function(e,i,j,h){e=d.find(j,b);if(i=="^")return!e||d.is_array(e)&&e.length===0?d.render(h,b,c,true):"";else if(i=="#")return d.is_array(e)?d.map(e,function(g){return d.render(h,d.create_context(g),c,true)}).join(""):d.is_object(e)?d.render(h,d.create_context(e),c,true):typeof e==="function"?
+e.call(b,h,function(g){return d.render(g,b,c,true)}):e?d.render(h,b,c,true):""})},render_tags:function(a,b,c,d){var e=this,i=function(){return RegExp(e.otag+"(=|!|>|\\{|%)?([^\\/#\\^]+?)\\1?"+e.ctag+"+","g")},j=i(),h=function(n,l,k){switch(l){case "!":return"";case "=":e.set_delimiters(k);j=i();return"";case ">":return e.render_partial(k,b,c);case "{":return e.find(k,b);default:return e.escape(e.find(k,b))}};a=a.split("\n");for(var g=0;g<a.length;g++){a[g]=a[g].replace(j,h,this);d||this.send(a[g])}if(d)return a.join("\n")},
+set_delimiters:function(a){a=a.split(" ");this.otag=this.escape_regex(a[0]);this.ctag=this.escape_regex(a[1])},escape_regex:function(a){if(!arguments.callee.sRE)arguments.callee.sRE=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\)","g");return a.replace(arguments.callee.sRE,"\\$1")},find:function(a,b){a=this.trim(a);var c;if(b[a]===false||b[a]===0||b[a])c=b[a];else if(this.context[a]===false||this.context[a]===0||this.context[a])c=this.context[a];if(typeof c==="function")return c.apply(b);
+if(c!==undefined)return c;return""},includes:function(a,b){return b.indexOf(this.otag+a)!=-1},escape:function(a){return String(a===null?"":a).replace(/&(?!\w+;)|["<>\\]/g,function(b){switch(b){case "&":return"&amp;";case "\\":return"\\\\";case '"':return'"';case "<":return"&lt;";case ">":return"&gt;";default:return b}})},create_context:function(a){if(this.is_object(a))return a;else{var b=".";if(this.pragmas["IMPLICIT-ITERATOR"])b=this.pragmas["IMPLICIT-ITERATOR"].iterator;var c={};c[b]=a;return c}},
+is_object:function(a){return a&&typeof a=="object"},is_array:function(a){return Object.prototype.toString.call(a)==="[object Array]"},trim:function(a){return a.replace(/^\s*|\s*$/g,"")},map:function(a,b){if(typeof a.map=="function")return a.map(b);else{for(var c=[],d=a.length,e=0;e<d;e++)c.push(b(a[e]));return c}}};return{name:"mustache.js",version:"0.3.0",to_html:function(a,b,c,d){var e=new f;if(d)e.send=d;e.render(a,b,c);if(!d)return e.buffer.join("\n")}}}();(function(){var f={VERSION:"0.9",templates:{},
+$:typeof window!=="undefined"?window.jQuery||window.Zepto||null:null,addTemplate:function(a,b){if(f[a])throw"Invalid name: "+a+".";if(f.templates[a])throw'Template " + name + " exists';f.templates[a]=b;f[a]=function(c,d){c=c||{};var e=m.to_html(f.templates[a],c,f.templates);return f.$&&!d?f.$(e):e}},clearAll:function(){for(var a in f.templates)delete f[a];f.templates={}},refresh:function(){f.clearAll();f.grabTemplates()},grabTemplates:function(){var a,b=document.getElementsByTagName("script"),c=b!==
+undefined?b.length:0,d,e=[];for(a=0;a<c;a++)if((d=b[a])&&d.innerHTML&&d.id&&(d.type==="text/html"||d.type==="text/x-icanhaz")){f.addTemplate(d.id,"".trim?d.innerHTML.trim():s.replace(/^\s+/,"").replace(/\s+$/,""));e.unshift(d)}a=0;for(c=e.length;a<c;a++)e[a].parentNode.removeChild(e[a])}};if(typeof require!=="undefined")module.exports=f;else window.ich=f;if(typeof document!=="undefined")f.$?f.$(function(){f.grabTemplates()}):document.addEventListener("DOMContentLoaded",function(){f.grabTemplates()},
+false)})()})();
diff --git a/planetstack/core/xoslib/static/js/vendor/backbone-min.js b/planetstack/core/xoslib/static/js/vendor/backbone-min.js
new file mode 100644 (file)
index 0000000..8ea4b13
--- /dev/null
@@ -0,0 +1,2 @@
+(function(t,e){if(typeof define==="function"&&define.amd){define(["underscore","jquery","exports"],function(i,r,s){t.Backbone=e(t,s,i,r)})}else if(typeof exports!=="undefined"){var i=require("underscore");e(t,exports,i)}else{t.Backbone=e(t,{},t._,t.jQuery||t.Zepto||t.ender||t.$)}})(this,function(t,e,i,r){var s=t.Backbone;var n=[];var a=n.push;var o=n.slice;var h=n.splice;e.VERSION="1.1.2";e.$=r;e.noConflict=function(){t.Backbone=s;return this};e.emulateHTTP=false;e.emulateJSON=false;var u=e.Events={on:function(t,e,i){if(!c(this,"on",t,[e,i])||!e)return this;this._events||(this._events={});var r=this._events[t]||(this._events[t]=[]);r.push({callback:e,context:i,ctx:i||this});return this},once:function(t,e,r){if(!c(this,"once",t,[e,r])||!e)return this;var s=this;var n=i.once(function(){s.off(t,n);e.apply(this,arguments)});n._callback=e;return this.on(t,n,r)},off:function(t,e,r){var s,n,a,o,h,u,l,f;if(!this._events||!c(this,"off",t,[e,r]))return this;if(!t&&!e&&!r){this._events=void 0;return this}o=t?[t]:i.keys(this._events);for(h=0,u=o.length;h<u;h++){t=o[h];if(a=this._events[t]){this._events[t]=s=[];if(e||r){for(l=0,f=a.length;l<f;l++){n=a[l];if(e&&e!==n.callback&&e!==n.callback._callback||r&&r!==n.context){s.push(n)}}}if(!s.length)delete this._events[t]}}return this},trigger:function(t){if(!this._events)return this;var e=o.call(arguments,1);if(!c(this,"trigger",t,e))return this;var i=this._events[t];var r=this._events.all;if(i)f(i,e);if(r)f(r,arguments);return this},stopListening:function(t,e,r){var s=this._listeningTo;if(!s)return this;var n=!e&&!r;if(!r&&typeof e==="object")r=this;if(t)(s={})[t._listenId]=t;for(var a in s){t=s[a];t.off(e,r,this);if(n||i.isEmpty(t._events))delete this._listeningTo[a]}return this}};var l=/\s+/;var c=function(t,e,i,r){if(!i)return true;if(typeof i==="object"){for(var s in i){t[e].apply(t,[s,i[s]].concat(r))}return false}if(l.test(i)){var n=i.split(l);for(var a=0,o=n.length;a<o;a++){t[e].apply(t,[n[a]].concat(r))}return false}return true};var f=function(t,e){var i,r=-1,s=t.length,n=e[0],a=e[1],o=e[2];switch(e.length){case 0:while(++r<s)(i=t[r]).callback.call(i.ctx);return;case 1:while(++r<s)(i=t[r]).callback.call(i.ctx,n);return;case 2:while(++r<s)(i=t[r]).callback.call(i.ctx,n,a);return;case 3:while(++r<s)(i=t[r]).callback.call(i.ctx,n,a,o);return;default:while(++r<s)(i=t[r]).callback.apply(i.ctx,e);return}};var d={listenTo:"on",listenToOnce:"once"};i.each(d,function(t,e){u[e]=function(e,r,s){var n=this._listeningTo||(this._listeningTo={});var a=e._listenId||(e._listenId=i.uniqueId("l"));n[a]=e;if(!s&&typeof r==="object")s=this;e[t](r,s,this);return this}});u.bind=u.on;u.unbind=u.off;i.extend(e,u);var p=e.Model=function(t,e){var r=t||{};e||(e={});this.cid=i.uniqueId("c");this.attributes={};if(e.collection)this.collection=e.collection;if(e.parse)r=this.parse(r,e)||{};r=i.defaults({},r,i.result(this,"defaults"));this.set(r,e);this.changed={};this.initialize.apply(this,arguments)};i.extend(p.prototype,u,{changed:null,validationError:null,idAttribute:"id",initialize:function(){},toJSON:function(t){return i.clone(this.attributes)},sync:function(){return e.sync.apply(this,arguments)},get:function(t){return this.attributes[t]},escape:function(t){return i.escape(this.get(t))},has:function(t){return this.get(t)!=null},set:function(t,e,r){var s,n,a,o,h,u,l,c;if(t==null)return this;if(typeof t==="object"){n=t;r=e}else{(n={})[t]=e}r||(r={});if(!this._validate(n,r))return false;a=r.unset;h=r.silent;o=[];u=this._changing;this._changing=true;if(!u){this._previousAttributes=i.clone(this.attributes);this.changed={}}c=this.attributes,l=this._previousAttributes;if(this.idAttribute in n)this.id=n[this.idAttribute];for(s in n){e=n[s];if(!i.isEqual(c[s],e))o.push(s);if(!i.isEqual(l[s],e)){this.changed[s]=e}else{delete this.changed[s]}a?delete c[s]:c[s]=e}if(!h){if(o.length)this._pending=r;for(var f=0,d=o.length;f<d;f++){this.trigger("change:"+o[f],this,c[o[f]],r)}}if(u)return this;if(!h){while(this._pending){r=this._pending;this._pending=false;this.trigger("change",this,r)}}this._pending=false;this._changing=false;return this},unset:function(t,e){return this.set(t,void 0,i.extend({},e,{unset:true}))},clear:function(t){var e={};for(var r in this.attributes)e[r]=void 0;return this.set(e,i.extend({},t,{unset:true}))},hasChanged:function(t){if(t==null)return!i.isEmpty(this.changed);return i.has(this.changed,t)},changedAttributes:function(t){if(!t)return this.hasChanged()?i.clone(this.changed):false;var e,r=false;var s=this._changing?this._previousAttributes:this.attributes;for(var n in t){if(i.isEqual(s[n],e=t[n]))continue;(r||(r={}))[n]=e}return r},previous:function(t){if(t==null||!this._previousAttributes)return null;return this._previousAttributes[t]},previousAttributes:function(){return i.clone(this._previousAttributes)},fetch:function(t){t=t?i.clone(t):{};if(t.parse===void 0)t.parse=true;var e=this;var r=t.success;t.success=function(i){if(!e.set(e.parse(i,t),t))return false;if(r)r(e,i,t);e.trigger("sync",e,i,t)};q(this,t);return this.sync("read",this,t)},save:function(t,e,r){var s,n,a,o=this.attributes;if(t==null||typeof t==="object"){s=t;r=e}else{(s={})[t]=e}r=i.extend({validate:true},r);if(s&&!r.wait){if(!this.set(s,r))return false}else{if(!this._validate(s,r))return false}if(s&&r.wait){this.attributes=i.extend({},o,s)}if(r.parse===void 0)r.parse=true;var h=this;var u=r.success;r.success=function(t){h.attributes=o;var e=h.parse(t,r);if(r.wait)e=i.extend(s||{},e);if(i.isObject(e)&&!h.set(e,r)){return false}if(u)u(h,t,r);h.trigger("sync",h,t,r)};q(this,r);n=this.isNew()?"create":r.patch?"patch":"update";if(n==="patch")r.attrs=s;a=this.sync(n,this,r);if(s&&r.wait)this.attributes=o;return a},destroy:function(t){t=t?i.clone(t):{};var e=this;var r=t.success;var s=function(){e.trigger("destroy",e,e.collection,t)};t.success=function(i){if(t.wait||e.isNew())s();if(r)r(e,i,t);if(!e.isNew())e.trigger("sync",e,i,t)};if(this.isNew()){t.success();return false}q(this,t);var n=this.sync("delete",this,t);if(!t.wait)s();return n},url:function(){var t=i.result(this,"urlRoot")||i.result(this.collection,"url")||M();if(this.isNew())return t;return t.replace(/([^\/])$/,"$1/")+encodeURIComponent(this.id)},parse:function(t,e){return t},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return!this.has(this.idAttribute)},isValid:function(t){return this._validate({},i.extend(t||{},{validate:true}))},_validate:function(t,e){if(!e.validate||!this.validate)return true;t=i.extend({},this.attributes,t);var r=this.validationError=this.validate(t,e)||null;if(!r)return true;this.trigger("invalid",this,r,i.extend(e,{validationError:r}));return false}});var v=["keys","values","pairs","invert","pick","omit"];i.each(v,function(t){p.prototype[t]=function(){var e=o.call(arguments);e.unshift(this.attributes);return i[t].apply(i,e)}});var g=e.Collection=function(t,e){e||(e={});if(e.model)this.model=e.model;if(e.comparator!==void 0)this.comparator=e.comparator;this._reset();this.initialize.apply(this,arguments);if(t)this.reset(t,i.extend({silent:true},e))};var m={add:true,remove:true,merge:true};var y={add:true,remove:false};i.extend(g.prototype,u,{model:p,initialize:function(){},toJSON:function(t){return this.map(function(e){return e.toJSON(t)})},sync:function(){return e.sync.apply(this,arguments)},add:function(t,e){return this.set(t,i.extend({merge:false},e,y))},remove:function(t,e){var r=!i.isArray(t);t=r?[t]:i.clone(t);e||(e={});var s,n,a,o;for(s=0,n=t.length;s<n;s++){o=t[s]=this.get(t[s]);if(!o)continue;delete this._byId[o.id];delete this._byId[o.cid];a=this.indexOf(o);this.models.splice(a,1);this.length--;if(!e.silent){e.index=a;o.trigger("remove",o,this,e)}this._removeReference(o,e)}return r?t[0]:t},set:function(t,e){e=i.defaults({},e,m);if(e.parse)t=this.parse(t,e);var r=!i.isArray(t);t=r?t?[t]:[]:i.clone(t);var s,n,a,o,h,u,l;var c=e.at;var f=this.model;var d=this.comparator&&c==null&&e.sort!==false;var v=i.isString(this.comparator)?this.comparator:null;var g=[],y=[],_={};var b=e.add,w=e.merge,x=e.remove;var E=!d&&b&&x?[]:false;for(s=0,n=t.length;s<n;s++){h=t[s]||{};if(h instanceof p){a=o=h}else{a=h[f.prototype.idAttribute||"id"]}if(u=this.get(a)){if(x)_[u.cid]=true;if(w){h=h===o?o.attributes:h;if(e.parse)h=u.parse(h,e);u.set(h,e);if(d&&!l&&u.hasChanged(v))l=true}t[s]=u}else if(b){o=t[s]=this._prepareModel(h,e);if(!o)continue;g.push(o);this._addReference(o,e)}o=u||o;if(E&&(o.isNew()||!_[o.id]))E.push(o);_[o.id]=true}if(x){for(s=0,n=this.length;s<n;++s){if(!_[(o=this.models[s]).cid])y.push(o)}if(y.length)this.remove(y,e)}if(g.length||E&&E.length){if(d)l=true;this.length+=g.length;if(c!=null){for(s=0,n=g.length;s<n;s++){this.models.splice(c+s,0,g[s])}}else{if(E)this.models.length=0;var k=E||g;for(s=0,n=k.length;s<n;s++){this.models.push(k[s])}}}if(l)this.sort({silent:true});if(!e.silent){for(s=0,n=g.length;s<n;s++){(o=g[s]).trigger("add",o,this,e)}if(l||E&&E.length)this.trigger("sort",this,e)}return r?t[0]:t},reset:function(t,e){e||(e={});for(var r=0,s=this.models.length;r<s;r++){this._removeReference(this.models[r],e)}e.previousModels=this.models;this._reset();t=this.add(t,i.extend({silent:true},e));if(!e.silent)this.trigger("reset",this,e);return t},push:function(t,e){return this.add(t,i.extend({at:this.length},e))},pop:function(t){var e=this.at(this.length-1);this.remove(e,t);return e},unshift:function(t,e){return this.add(t,i.extend({at:0},e))},shift:function(t){var e=this.at(0);this.remove(e,t);return e},slice:function(){return o.apply(this.models,arguments)},get:function(t){if(t==null)return void 0;return this._byId[t]||this._byId[t.id]||this._byId[t.cid]},at:function(t){return this.models[t]},where:function(t,e){if(i.isEmpty(t))return e?void 0:[];return this[e?"find":"filter"](function(e){for(var i in t){if(t[i]!==e.get(i))return false}return true})},findWhere:function(t){return this.where(t,true)},sort:function(t){if(!this.comparator)throw new Error("Cannot sort a set without a comparator");t||(t={});if(i.isString(this.comparator)||this.comparator.length===1){this.models=this.sortBy(this.comparator,this)}else{this.models.sort(i.bind(this.comparator,this))}if(!t.silent)this.trigger("sort",this,t);return this},pluck:function(t){return i.invoke(this.models,"get",t)},fetch:function(t){t=t?i.clone(t):{};if(t.parse===void 0)t.parse=true;var e=t.success;var r=this;t.success=function(i){var s=t.reset?"reset":"set";r[s](i,t);if(e)e(r,i,t);r.trigger("sync",r,i,t)};q(this,t);return this.sync("read",this,t)},create:function(t,e){e=e?i.clone(e):{};if(!(t=this._prepareModel(t,e)))return false;if(!e.wait)this.add(t,e);var r=this;var s=e.success;e.success=function(t,i){if(e.wait)r.add(t,e);if(s)s(t,i,e)};t.save(null,e);return t},parse:function(t,e){return t},clone:function(){return new this.constructor(this.models)},_reset:function(){this.length=0;this.models=[];this._byId={}},_prepareModel:function(t,e){if(t instanceof p)return t;e=e?i.clone(e):{};e.collection=this;var r=new this.model(t,e);if(!r.validationError)return r;this.trigger("invalid",this,r.validationError,e);return false},_addReference:function(t,e){this._byId[t.cid]=t;if(t.id!=null)this._byId[t.id]=t;if(!t.collection)t.collection=this;t.on("all",this._onModelEvent,this)},_removeReference:function(t,e){if(this===t.collection)delete t.collection;t.off("all",this._onModelEvent,this)},_onModelEvent:function(t,e,i,r){if((t==="add"||t==="remove")&&i!==this)return;if(t==="destroy")this.remove(e,r);if(e&&t==="change:"+e.idAttribute){delete this._byId[e.previous(e.idAttribute)];if(e.id!=null)this._byId[e.id]=e}this.trigger.apply(this,arguments)}});var _=["forEach","each","map","collect","reduce","foldl","inject","reduceRight","foldr","find","detect","filter","select","reject","every","all","some","any","include","contains","invoke","max","min","toArray","size","first","head","take","initial","rest","tail","drop","last","without","difference","indexOf","shuffle","lastIndexOf","isEmpty","chain","sample"];i.each(_,function(t){g.prototype[t]=function(){var e=o.call(arguments);e.unshift(this.models);return i[t].apply(i,e)}});var b=["groupBy","countBy","sortBy","indexBy"];i.each(b,function(t){g.prototype[t]=function(e,r){var s=i.isFunction(e)?e:function(t){return t.get(e)};return i[t](this.models,s,r)}});var w=e.View=function(t){this.cid=i.uniqueId("view");t||(t={});i.extend(this,i.pick(t,E));this._ensureElement();this.initialize.apply(this,arguments);this.delegateEvents()};var x=/^(\S+)\s*(.*)$/;var E=["model","collection","el","id","attributes","className","tagName","events"];i.extend(w.prototype,u,{tagName:"div",$:function(t){return this.$el.find(t)},initialize:function(){},render:function(){return this},remove:function(){this.$el.remove();this.stopListening();return this},setElement:function(t,i){if(this.$el)this.undelegateEvents();this.$el=t instanceof e.$?t:e.$(t);this.el=this.$el[0];if(i!==false)this.delegateEvents();return this},delegateEvents:function(t){if(!(t||(t=i.result(this,"events"))))return this;this.undelegateEvents();for(var e in t){var r=t[e];if(!i.isFunction(r))r=this[t[e]];if(!r)continue;var s=e.match(x);var n=s[1],a=s[2];r=i.bind(r,this);n+=".delegateEvents"+this.cid;if(a===""){this.$el.on(n,r)}else{this.$el.on(n,a,r)}}return this},undelegateEvents:function(){this.$el.off(".delegateEvents"+this.cid);return this},_ensureElement:function(){if(!this.el){var t=i.extend({},i.result(this,"attributes"));if(this.id)t.id=i.result(this,"id");if(this.className)t["class"]=i.result(this,"className");var r=e.$("<"+i.result(this,"tagName")+">").attr(t);this.setElement(r,false)}else{this.setElement(i.result(this,"el"),false)}}});e.sync=function(t,r,s){var n=T[t];i.defaults(s||(s={}),{emulateHTTP:e.emulateHTTP,emulateJSON:e.emulateJSON});var a={type:n,dataType:"json"};if(!s.url){a.url=i.result(r,"url")||M()}if(s.data==null&&r&&(t==="create"||t==="update"||t==="patch")){a.contentType="application/json";a.data=JSON.stringify(s.attrs||r.toJSON(s))}if(s.emulateJSON){a.contentType="application/x-www-form-urlencoded";a.data=a.data?{model:a.data}:{}}if(s.emulateHTTP&&(n==="PUT"||n==="DELETE"||n==="PATCH")){a.type="POST";if(s.emulateJSON)a.data._method=n;var o=s.beforeSend;s.beforeSend=function(t){t.setRequestHeader("X-HTTP-Method-Override",n);if(o)return o.apply(this,arguments)}}if(a.type!=="GET"&&!s.emulateJSON){a.processData=false}if(a.type==="PATCH"&&k){a.xhr=function(){return new ActiveXObject("Microsoft.XMLHTTP")}}var h=s.xhr=e.ajax(i.extend(a,s));r.trigger("request",r,h,s);return h};var k=typeof window!=="undefined"&&!!window.ActiveXObject&&!(window.XMLHttpRequest&&(new XMLHttpRequest).dispatchEvent);var T={create:"POST",update:"PUT",patch:"PATCH","delete":"DELETE",read:"GET"};e.ajax=function(){return e.$.ajax.apply(e.$,arguments)};var $=e.Router=function(t){t||(t={});if(t.routes)this.routes=t.routes;this._bindRoutes();this.initialize.apply(this,arguments)};var S=/\((.*?)\)/g;var H=/(\(\?)?:\w+/g;var A=/\*\w+/g;var I=/[\-{}\[\]+?.,\\\^$|#\s]/g;i.extend($.prototype,u,{initialize:function(){},route:function(t,r,s){if(!i.isRegExp(t))t=this._routeToRegExp(t);if(i.isFunction(r)){s=r;r=""}if(!s)s=this[r];var n=this;e.history.route(t,function(i){var a=n._extractParameters(t,i);n.execute(s,a);n.trigger.apply(n,["route:"+r].concat(a));n.trigger("route",r,a);e.history.trigger("route",n,r,a)});return this},execute:function(t,e){if(t)t.apply(this,e)},navigate:function(t,i){e.history.navigate(t,i);return this},_bindRoutes:function(){if(!this.routes)return;this.routes=i.result(this,"routes");var t,e=i.keys(this.routes);while((t=e.pop())!=null){this.route(t,this.routes[t])}},_routeToRegExp:function(t){t=t.replace(I,"\\$&").replace(S,"(?:$1)?").replace(H,function(t,e){return e?t:"([^/?]+)"}).replace(A,"([^?]*?)");return new RegExp("^"+t+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(t,e){var r=t.exec(e).slice(1);return i.map(r,function(t,e){if(e===r.length-1)return t||null;return t?decodeURIComponent(t):null})}});var N=e.History=function(){this.handlers=[];i.bindAll(this,"checkUrl");if(typeof window!=="undefined"){this.location=window.location;this.history=window.history}};var R=/^[#\/]|\s+$/g;var O=/^\/+|\/+$/g;var P=/msie [\w.]+/;var C=/\/$/;var j=/#.*$/;N.started=false;i.extend(N.prototype,u,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root},getHash:function(t){var e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:""},getFragment:function(t,e){if(t==null){if(this._hasPushState||!this._wantsHashChange||e){t=decodeURI(this.location.pathname+this.location.search);var i=this.root.replace(C,"");if(!t.indexOf(i))t=t.slice(i.length)}else{t=this.getHash()}}return t.replace(R,"")},start:function(t){if(N.started)throw new Error("Backbone.history has already been started");N.started=true;this.options=i.extend({root:"/"},this.options,t);this.root=this.options.root;this._wantsHashChange=this.options.hashChange!==false;this._wantsPushState=!!this.options.pushState;this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);var r=this.getFragment();var s=document.documentMode;var n=P.exec(navigator.userAgent.toLowerCase())&&(!s||s<=7);this.root=("/"+this.root+"/").replace(O,"/");if(n&&this._wantsHashChange){var a=e.$('<iframe src="javascript:0" tabindex="-1">');this.iframe=a.hide().appendTo("body")[0].contentWindow;this.navigate(r)}if(this._hasPushState){e.$(window).on("popstate",this.checkUrl)}else if(this._wantsHashChange&&"onhashchange"in window&&!n){e.$(window).on("hashchange",this.checkUrl)}else if(this._wantsHashChange){this._checkUrlInterval=setInterval(this.checkUrl,this.interval)}this.fragment=r;var o=this.location;if(this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){this.fragment=this.getFragment(null,true);this.location.replace(this.root+"#"+this.fragment);return true}else if(this._hasPushState&&this.atRoot()&&o.hash){this.fragment=this.getHash().replace(R,"");this.history.replaceState({},document.title,this.root+this.fragment)}}if(!this.options.silent)return this.loadUrl()},stop:function(){e.$(window).off("popstate",this.checkUrl).off("hashchange",this.checkUrl);if(this._checkUrlInterval)clearInterval(this._checkUrlInterval);N.started=false},route:function(t,e){this.handlers.unshift({route:t,callback:e})},checkUrl:function(t){var e=this.getFragment();if(e===this.fragment&&this.iframe){e=this.getFragment(this.getHash(this.iframe))}if(e===this.fragment)return false;if(this.iframe)this.navigate(e);this.loadUrl()},loadUrl:function(t){t=this.fragment=this.getFragment(t);return i.any(this.handlers,function(e){if(e.route.test(t)){e.callback(t);return true}})},navigate:function(t,e){if(!N.started)return false;if(!e||e===true)e={trigger:!!e};var i=this.root+(t=this.getFragment(t||""));t=t.replace(j,"");if(this.fragment===t)return;this.fragment=t;if(t===""&&i!=="/")i=i.slice(0,-1);if(this._hasPushState){this.history[e.replace?"replaceState":"pushState"]({},document.title,i)}else if(this._wantsHashChange){this._updateHash(this.location,t,e.replace);if(this.iframe&&t!==this.getFragment(this.getHash(this.iframe))){if(!e.replace)this.iframe.document.open().close();this._updateHash(this.iframe.location,t,e.replace)}}else{return this.location.assign(i)}if(e.trigger)return this.loadUrl(t)},_updateHash:function(t,e,i){if(i){var r=t.href.replace(/(javascript:|#).*$/,"");t.replace(r+"#"+e)}else{t.hash="#"+e}}});e.history=new N;var U=function(t,e){var r=this;var s;if(t&&i.has(t,"constructor")){s=t.constructor}else{s=function(){return r.apply(this,arguments)}}i.extend(s,r,e);var n=function(){this.constructor=s};n.prototype=r.prototype;s.prototype=new n;if(t)i.extend(s.prototype,t);s.__super__=r.prototype;return s};p.extend=g.extend=$.extend=w.extend=N.extend=U;var M=function(){throw new Error('A "url" property or function must be specified')};var q=function(t,e){var i=e.error;e.error=function(r){if(i)i(t,r,e);t.trigger("error",t,r,e)}};return e});
+//# sourceMappingURL=backbone-min.map
\ No newline at end of file
diff --git a/planetstack/core/xoslib/static/js/vendor/backbone-tastypie.js b/planetstack/core/xoslib/static/js/vendor/backbone-tastypie.js
new file mode 100644 (file)
index 0000000..69a4d56
--- /dev/null
@@ -0,0 +1,95 @@
+/**
+ * Backbone-tastypie.js 0.1
+ * (c) 2011 Paul Uithol
+ * 
+ * Backbone-tastypie may be freely distributed under the MIT license.
+ * Add or override Backbone.js functionality, for compatibility with django-tastypie.
+ */
+(function( undefined ) {
+       var Backbone = this.Backbone;
+       
+       /**
+        * Override Backbone's sync function, to do a GET upon receiving a HTTP CREATED.
+        * This requires 2 requests to do a create, so you may want to use some other method in production.
+        * Modified from http://joshbohde.com/blog/backbonejs-and-django
+        */
+       Backbone.oldSync = Backbone.sync;
+       Backbone.sync = function( method, model, options ) {
+               if ( method === 'create' ) {
+                       var dfd = new $.Deferred();
+                       
+                       // Set up 'success' handling
+                       dfd.done( options.success );
+                       options.success = function( resp, status, xhr ) {
+                               // If create is successful but doesn't return a response, fire an extra GET.
+                               // Otherwise, resolve the deferred (which triggers the original 'success' callbacks).
+                               if ( xhr.status === 201 && !resp ) { // 201 CREATED; response null or empty.
+                                       var location = xhr.getResponseHeader( 'Location' );
+                                       return $.ajax( {
+                                                  url: location,
+                                                  success: dfd.resolve,
+                                                  error: dfd.reject
+                                               });
+                               }
+                               else {
+                                       return dfd.resolveWith( options.context || options, [ resp, status, xhr ] );
+                               }
+                       };
+                       
+                       // Set up 'error' handling
+                       dfd.fail( options.error );
+                       options.error = dfd.reject;
+                       
+                       // Make the request, make it accessibly by assigning it to the 'request' property on the deferred 
+                       dfd.request = Backbone.oldSync( method, model, options );
+                       return dfd;
+               }
+               
+               return Backbone.oldSync( method, model, options );
+       };
+
+       Backbone.Model.prototype.idAttribute = 'resource_uri';
+       
+       Backbone.Model.prototype.url = function() {
+               // Use the id if possible
+               var url = this.id;
+               
+               // If there's no idAttribute, try to have the collection construct a url. Fallback to 'urlRoot'.
+               if ( !url ) {
+                       url = this.collection && ( _.isFunction( this.collection.url ) ? this.collection.url() : this.collection.url );
+                       url = url || this.urlRoot;
+               }
+               
+               url && ( url += ( url.length > 0 && url.charAt( url.length - 1 ) === '/' ) ? '' : '/' );
+               
+               return url;
+       };
+       
+       /**
+        * Return 'data.objects' if it exists and is an array, or else just plain 'data'.
+        */
+       Backbone.Model.prototype.parse = function( data ) {
+               return data && data.objects && ( _.isArray( data.objects ) ? data.objects[ 0 ] : data.objects ) || data;
+       };
+       
+       Backbone.Collection.prototype.parse = function( data ) {
+               return data && data.objects;
+       };
+       
+       Backbone.Collection.prototype.url = function( models ) {
+               var url = this.urlRoot || ( models && models.length && models[0].urlRoot );
+               url && ( url += ( url.length > 0 && url.charAt( url.length - 1 ) === '/' ) ? '' : '/' );
+               
+               // Build a url to retrieve a set of models. This assume the last part of each model's idAttribute
+               // (set to 'resource_uri') contains the model's id.
+               if ( models && models.length ) {
+                       var ids = _.map( models, function( model ) {
+                                       var parts = _.compact( model.id.split('/') );
+                                       return parts[ parts.length - 1 ];
+                               });
+                       url += 'set/' + ids.join(';') + '/';
+               }
+               
+               return url;
+       };
+})();
diff --git a/planetstack/core/xoslib/static/js/vendor/backbone.babysitter.js b/planetstack/core/xoslib/static/js/vendor/backbone.babysitter.js
new file mode 100644 (file)
index 0000000..eeb92a2
--- /dev/null
@@ -0,0 +1,190 @@
+// Backbone.BabySitter
+// -------------------
+// v0.1.4
+//
+// Copyright (c)2014 Derick Bailey, Muted Solutions, LLC.
+// Distributed under MIT license
+//
+// http://github.com/marionettejs/backbone.babysitter
+
+(function(root, factory) {
+
+  if (typeof define === 'function' && define.amd) {
+    define(['backbone', 'underscore'], function(Backbone, _) {
+      return factory(Backbone, _);
+    });
+  } else if (typeof exports !== 'undefined') {
+    var Backbone = require('backbone');
+    var _ = require('underscore');
+    module.exports = factory(Backbone, _);
+  } else {
+    factory(root.Backbone, root._);
+  }
+
+}(this, function(Backbone, _) {
+  'use strict';
+
+  var previousChildViewContainer = Backbone.ChildViewContainer;
+
+  // BabySitter.ChildViewContainer
+  // -----------------------------
+  //
+  // Provide a container to store, retrieve and
+  // shut down child views.
+  
+  Backbone.ChildViewContainer = (function (Backbone, _) {
+  
+    // Container Constructor
+    // ---------------------
+  
+    var Container = function(views){
+      this._views = {};
+      this._indexByModel = {};
+      this._indexByCustom = {};
+      this._updateLength();
+  
+      _.each(views, this.add, this);
+    };
+  
+    // Container Methods
+    // -----------------
+  
+    _.extend(Container.prototype, {
+  
+      // Add a view to this container. Stores the view
+      // by `cid` and makes it searchable by the model
+      // cid (and model itself). Optionally specify
+      // a custom key to store an retrieve the view.
+      add: function(view, customIndex){
+        var viewCid = view.cid;
+  
+        // store the view
+        this._views[viewCid] = view;
+  
+        // index it by model
+        if (view.model){
+          this._indexByModel[view.model.cid] = viewCid;
+        }
+  
+        // index by custom
+        if (customIndex){
+          this._indexByCustom[customIndex] = viewCid;
+        }
+  
+        this._updateLength();
+        return this;
+      },
+  
+      // Find a view by the model that was attached to
+      // it. Uses the model's `cid` to find it.
+      findByModel: function(model){
+        return this.findByModelCid(model.cid);
+      },
+  
+      // Find a view by the `cid` of the model that was attached to
+      // it. Uses the model's `cid` to find the view `cid` and
+      // retrieve the view using it.
+      findByModelCid: function(modelCid){
+        var viewCid = this._indexByModel[modelCid];
+        return this.findByCid(viewCid);
+      },
+  
+      // Find a view by a custom indexer.
+      findByCustom: function(index){
+        var viewCid = this._indexByCustom[index];
+        return this.findByCid(viewCid);
+      },
+  
+      // Find by index. This is not guaranteed to be a
+      // stable index.
+      findByIndex: function(index){
+        return _.values(this._views)[index];
+      },
+  
+      // retrieve a view by its `cid` directly
+      findByCid: function(cid){
+        return this._views[cid];
+      },
+  
+      // Remove a view
+      remove: function(view){
+        var viewCid = view.cid;
+  
+        // delete model index
+        if (view.model){
+          delete this._indexByModel[view.model.cid];
+        }
+  
+        // delete custom index
+        _.any(this._indexByCustom, function(cid, key) {
+          if (cid === viewCid) {
+            delete this._indexByCustom[key];
+            return true;
+          }
+        }, this);
+  
+        // remove the view from the container
+        delete this._views[viewCid];
+  
+        // update the length
+        this._updateLength();
+        return this;
+      },
+  
+      // Call a method on every view in the container,
+      // passing parameters to the call method one at a
+      // time, like `function.call`.
+      call: function(method){
+        this.apply(method, _.tail(arguments));
+      },
+  
+      // Apply a method on every view in the container,
+      // passing parameters to the call method one at a
+      // time, like `function.apply`.
+      apply: function(method, args){
+        _.each(this._views, function(view){
+          if (_.isFunction(view[method])){
+            view[method].apply(view, args || []);
+          }
+        });
+      },
+  
+      // Update the `.length` attribute on this container
+      _updateLength: function(){
+        this.length = _.size(this._views);
+      }
+    });
+  
+    // Borrowing this code from Backbone.Collection:
+    // http://backbonejs.org/docs/backbone.html#section-106
+    //
+    // Mix in methods from Underscore, for iteration, and other
+    // collection related features.
+    var methods = ['forEach', 'each', 'map', 'find', 'detect', 'filter',
+      'select', 'reject', 'every', 'all', 'some', 'any', 'include',
+      'contains', 'invoke', 'toArray', 'first', 'initial', 'rest',
+      'last', 'without', 'isEmpty', 'pluck'];
+  
+    _.each(methods, function(method) {
+      Container.prototype[method] = function() {
+        var views = _.values(this._views);
+        var args = [views].concat(_.toArray(arguments));
+        return _[method].apply(_, args);
+      };
+    });
+  
+    // return the public API
+    return Container;
+  })(Backbone, _);
+  
+
+  Backbone.ChildViewContainer.VERSION = '0.1.4';
+
+  Backbone.ChildViewContainer.noConflict = function () {
+    Backbone.ChildViewContainer = previousChildViewContainer;
+    return this;
+  };
+
+  return Backbone.ChildViewContainer;
+
+}));
diff --git a/planetstack/core/xoslib/static/js/vendor/backbone.js b/planetstack/core/xoslib/static/js/vendor/backbone.js
new file mode 100644 (file)
index 0000000..24a550a
--- /dev/null
@@ -0,0 +1,1608 @@
+//     Backbone.js 1.1.2
+
+//     (c) 2010-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+//     Backbone may be freely distributed under the MIT license.
+//     For all details and documentation:
+//     http://backbonejs.org
+
+(function(root, factory) {
+
+  // Set up Backbone appropriately for the environment. Start with AMD.
+  if (typeof define === 'function' && define.amd) {
+    define(['underscore', 'jquery', 'exports'], function(_, $, exports) {
+      // Export global even in AMD case in case this script is loaded with
+      // others that may still expect a global Backbone.
+      root.Backbone = factory(root, exports, _, $);
+    });
+
+  // Next for Node.js or CommonJS. jQuery may not be needed as a module.
+  } else if (typeof exports !== 'undefined') {
+    var _ = require('underscore');
+    factory(root, exports, _);
+
+  // Finally, as a browser global.
+  } else {
+    root.Backbone = factory(root, {}, root._, (root.jQuery || root.Zepto || root.ender || root.$));
+  }
+
+}(this, function(root, Backbone, _, $) {
+
+  // Initial Setup
+  // -------------
+
+  // Save the previous value of the `Backbone` variable, so that it can be
+  // restored later on, if `noConflict` is used.
+  var previousBackbone = root.Backbone;
+
+  // Create local references to array methods we'll want to use later.
+  var array = [];
+  var push = array.push;
+  var slice = array.slice;
+  var splice = array.splice;
+
+  // Current version of the library. Keep in sync with `package.json`.
+  Backbone.VERSION = '1.1.2';
+
+  // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns
+  // the `$` variable.
+  Backbone.$ = $;
+
+  // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable
+  // to its previous owner. Returns a reference to this Backbone object.
+  Backbone.noConflict = function() {
+    root.Backbone = previousBackbone;
+    return this;
+  };
+
+  // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option
+  // will fake `"PATCH"`, `"PUT"` and `"DELETE"` requests via the `_method` parameter and
+  // set a `X-Http-Method-Override` header.
+  Backbone.emulateHTTP = false;
+
+  // Turn on `emulateJSON` to support legacy servers that can't deal with direct
+  // `application/json` requests ... will encode the body as
+  // `application/x-www-form-urlencoded` instead and will send the model in a
+  // form param named `model`.
+  Backbone.emulateJSON = false;
+
+  // Backbone.Events
+  // ---------------
+
+  // A module that can be mixed in to *any object* in order to provide it with
+  // custom events. You may bind with `on` or remove with `off` callback
+  // functions to an event; `trigger`-ing an event fires all callbacks in
+  // succession.
+  //
+  //     var object = {};
+  //     _.extend(object, Backbone.Events);
+  //     object.on('expand', function(){ alert('expanded'); });
+  //     object.trigger('expand');
+  //
+  var Events = Backbone.Events = {
+
+    // Bind an event to a `callback` function. Passing `"all"` will bind
+    // the callback to all events fired.
+    on: function(name, callback, context) {
+      if (!eventsApi(this, 'on', name, [callback, context]) || !callback) return this;
+      this._events || (this._events = {});
+      var events = this._events[name] || (this._events[name] = []);
+      events.push({callback: callback, context: context, ctx: context || this});
+      return this;
+    },
+
+    // Bind an event to only be triggered a single time. After the first time
+    // the callback is invoked, it will be removed.
+    once: function(name, callback, context) {
+      if (!eventsApi(this, 'once', name, [callback, context]) || !callback) return this;
+      var self = this;
+      var once = _.once(function() {
+        self.off(name, once);
+        callback.apply(this, arguments);
+      });
+      once._callback = callback;
+      return this.on(name, once, context);
+    },
+
+    // Remove one or many callbacks. If `context` is null, removes all
+    // callbacks with that function. If `callback` is null, removes all
+    // callbacks for the event. If `name` is null, removes all bound
+    // callbacks for all events.
+    off: function(name, callback, context) {
+      var retain, ev, events, names, i, l, j, k;
+      if (!this._events || !eventsApi(this, 'off', name, [callback, context])) return this;
+      if (!name && !callback && !context) {
+        this._events = void 0;
+        return this;
+      }
+      names = name ? [name] : _.keys(this._events);
+      for (i = 0, l = names.length; i < l; i++) {
+        name = names[i];
+        if (events = this._events[name]) {
+          this._events[name] = retain = [];
+          if (callback || context) {
+            for (j = 0, k = events.length; j < k; j++) {
+              ev = events[j];
+              if ((callback && callback !== ev.callback && callback !== ev.callback._callback) ||
+                  (context && context !== ev.context)) {
+                retain.push(ev);
+              }
+            }
+          }
+          if (!retain.length) delete this._events[name];
+        }
+      }
+
+      return this;
+    },
+
+    // Trigger one or many events, firing all bound callbacks. Callbacks are
+    // passed the same arguments as `trigger` is, apart from the event name
+    // (unless you're listening on `"all"`, which will cause your callback to
+    // receive the true name of the event as the first argument).
+    trigger: function(name) {
+      if (!this._events) return this;
+      var args = slice.call(arguments, 1);
+      if (!eventsApi(this, 'trigger', name, args)) return this;
+      var events = this._events[name];
+      var allEvents = this._events.all;
+      if (events) triggerEvents(events, args);
+      if (allEvents) triggerEvents(allEvents, arguments);
+      return this;
+    },
+
+    // Tell this object to stop listening to either specific events ... or
+    // to every object it's currently listening to.
+    stopListening: function(obj, name, callback) {
+      var listeningTo = this._listeningTo;
+      if (!listeningTo) return this;
+      var remove = !name && !callback;
+      if (!callback && typeof name === 'object') callback = this;
+      if (obj) (listeningTo = {})[obj._listenId] = obj;
+      for (var id in listeningTo) {
+        obj = listeningTo[id];
+        obj.off(name, callback, this);
+        if (remove || _.isEmpty(obj._events)) delete this._listeningTo[id];
+      }
+      return this;
+    }
+
+  };
+
+  // Regular expression used to split event strings.
+  var eventSplitter = /\s+/;
+
+  // Implement fancy features of the Events API such as multiple event
+  // names `"change blur"` and jQuery-style event maps `{change: action}`
+  // in terms of the existing API.
+  var eventsApi = function(obj, action, name, rest) {
+    if (!name) return true;
+
+    // Handle event maps.
+    if (typeof name === 'object') {
+      for (var key in name) {
+        obj[action].apply(obj, [key, name[key]].concat(rest));
+      }
+      return false;
+    }
+
+    // Handle space separated event names.
+    if (eventSplitter.test(name)) {
+      var names = name.split(eventSplitter);
+      for (var i = 0, l = names.length; i < l; i++) {
+        obj[action].apply(obj, [names[i]].concat(rest));
+      }
+      return false;
+    }
+
+    return true;
+  };
+
+  // A difficult-to-believe, but optimized internal dispatch function for
+  // triggering events. Tries to keep the usual cases speedy (most internal
+  // Backbone events have 3 arguments).
+  var triggerEvents = function(events, args) {
+    var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];
+    switch (args.length) {
+      case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;
+      case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;
+      case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;
+      case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;
+      default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;
+    }
+  };
+
+  var listenMethods = {listenTo: 'on', listenToOnce: 'once'};
+
+  // Inversion-of-control versions of `on` and `once`. Tell *this* object to
+  // listen to an event in another object ... keeping track of what it's
+  // listening to.
+  _.each(listenMethods, function(implementation, method) {
+    Events[method] = function(obj, name, callback) {
+      var listeningTo = this._listeningTo || (this._listeningTo = {});
+      var id = obj._listenId || (obj._listenId = _.uniqueId('l'));
+      listeningTo[id] = obj;
+      if (!callback && typeof name === 'object') callback = this;
+      obj[implementation](name, callback, this);
+      return this;
+    };
+  });
+
+  // Aliases for backwards compatibility.
+  Events.bind   = Events.on;
+  Events.unbind = Events.off;
+
+  // Allow the `Backbone` object to serve as a global event bus, for folks who
+  // want global "pubsub" in a convenient place.
+  _.extend(Backbone, Events);
+
+  // Backbone.Model
+  // --------------
+
+  // Backbone **Models** are the basic data object in the framework --
+  // frequently representing a row in a table in a database on your server.
+  // A discrete chunk of data and a bunch of useful, related methods for
+  // performing computations and transformations on that data.
+
+  // Create a new model with the specified attributes. A client id (`cid`)
+  // is automatically generated and assigned for you.
+  var Model = Backbone.Model = function(attributes, options) {
+    var attrs = attributes || {};
+    options || (options = {});
+    this.cid = _.uniqueId('c');
+    this.attributes = {};
+    if (options.collection) this.collection = options.collection;
+    if (options.parse) attrs = this.parse(attrs, options) || {};
+    attrs = _.defaults({}, attrs, _.result(this, 'defaults'));
+    this.set(attrs, options);
+    this.changed = {};
+    this.initialize.apply(this, arguments);
+  };
+
+  // Attach all inheritable methods to the Model prototype.
+  _.extend(Model.prototype, Events, {
+
+    // A hash of attributes whose current and previous value differ.
+    changed: null,
+
+    // The value returned during the last failed validation.
+    validationError: null,
+
+    // The default name for the JSON `id` attribute is `"id"`. MongoDB and
+    // CouchDB users may want to set this to `"_id"`.
+    idAttribute: 'id',
+
+    // Initialize is an empty function by default. Override it with your own
+    // initialization logic.
+    initialize: function(){},
+
+    // Return a copy of the model's `attributes` object.
+    toJSON: function(options) {
+      return _.clone(this.attributes);
+    },
+
+    // Proxy `Backbone.sync` by default -- but override this if you need
+    // custom syncing semantics for *this* particular model.
+    sync: function() {
+      return Backbone.sync.apply(this, arguments);
+    },
+
+    // Get the value of an attribute.
+    get: function(attr) {
+      return this.attributes[attr];
+    },
+
+    // Get the HTML-escaped value of an attribute.
+    escape: function(attr) {
+      return _.escape(this.get(attr));
+    },
+
+    // Returns `true` if the attribute contains a value that is not null
+    // or undefined.
+    has: function(attr) {
+      return this.get(attr) != null;
+    },
+
+    // Set a hash of model attributes on the object, firing `"change"`. This is
+    // the core primitive operation of a model, updating the data and notifying
+    // anyone who needs to know about the change in state. The heart of the beast.
+    set: function(key, val, options) {
+      var attr, attrs, unset, changes, silent, changing, prev, current;
+      if (key == null) return this;
+
+      // Handle both `"key", value` and `{key: value}` -style arguments.
+      if (typeof key === 'object') {
+        attrs = key;
+        options = val;
+      } else {
+        (attrs = {})[key] = val;
+      }
+
+      options || (options = {});
+
+      // Run validation.
+      if (!this._validate(attrs, options)) return false;
+
+      // Extract attributes and options.
+      unset           = options.unset;
+      silent          = options.silent;
+      changes         = [];
+      changing        = this._changing;
+      this._changing  = true;
+
+      if (!changing) {
+        this._previousAttributes = _.clone(this.attributes);
+        this.changed = {};
+      }
+      current = this.attributes, prev = this._previousAttributes;
+
+      // Check for changes of `id`.
+      if (this.idAttribute in attrs) this.id = attrs[this.idAttribute];
+
+      // For each `set` attribute, update or delete the current value.
+      for (attr in attrs) {
+        val = attrs[attr];
+        if (!_.isEqual(current[attr], val)) changes.push(attr);
+        if (!_.isEqual(prev[attr], val)) {
+          this.changed[attr] = val;
+        } else {
+          delete this.changed[attr];
+        }
+        unset ? delete current[attr] : current[attr] = val;
+      }
+
+      // Trigger all relevant attribute changes.
+      if (!silent) {
+        if (changes.length) this._pending = options;
+        for (var i = 0, l = changes.length; i < l; i++) {
+          this.trigger('change:' + changes[i], this, current[changes[i]], options);
+        }
+      }
+
+      // You might be wondering why there's a `while` loop here. Changes can
+      // be recursively nested within `"change"` events.
+      if (changing) return this;
+      if (!silent) {
+        while (this._pending) {
+          options = this._pending;
+          this._pending = false;
+          this.trigger('change', this, options);
+        }
+      }
+      this._pending = false;
+      this._changing = false;
+      return this;
+    },
+
+    // Remove an attribute from the model, firing `"change"`. `unset` is a noop
+    // if the attribute doesn't exist.
+    unset: function(attr, options) {
+      return this.set(attr, void 0, _.extend({}, options, {unset: true}));
+    },
+
+    // Clear all attributes on the model, firing `"change"`.
+    clear: function(options) {
+      var attrs = {};
+      for (var key in this.attributes) attrs[key] = void 0;
+      return this.set(attrs, _.extend({}, options, {unset: true}));
+    },
+
+    // Determine if the model has changed since the last `"change"` event.
+    // If you specify an attribute name, determine if that attribute has changed.
+    hasChanged: function(attr) {
+      if (attr == null) return !_.isEmpty(this.changed);
+      return _.has(this.changed, attr);
+    },
+
+    // Return an object containing all the attributes that have changed, or
+    // false if there are no changed attributes. Useful for determining what
+    // parts of a view need to be updated and/or what attributes need to be
+    // persisted to the server. Unset attributes will be set to undefined.
+    // You can also pass an attributes object to diff against the model,
+    // determining if there *would be* a change.
+    changedAttributes: function(diff) {
+      if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;
+      var val, changed = false;
+      var old = this._changing ? this._previousAttributes : this.attributes;
+      for (var attr in diff) {
+        if (_.isEqual(old[attr], (val = diff[attr]))) continue;
+        (changed || (changed = {}))[attr] = val;
+      }
+      return changed;
+    },
+
+    // Get the previous value of an attribute, recorded at the time the last
+    // `"change"` event was fired.
+    previous: function(attr) {
+      if (attr == null || !this._previousAttributes) return null;
+      return this._previousAttributes[attr];
+    },
+
+    // Get all of the attributes of the model at the time of the previous
+    // `"change"` event.
+    previousAttributes: function() {
+      return _.clone(this._previousAttributes);
+    },
+
+    // Fetch the model from the server. If the server's representation of the
+    // model differs from its current attributes, they will be overridden,
+    // triggering a `"change"` event.
+    fetch: function(options) {
+      options = options ? _.clone(options) : {};
+      if (options.parse === void 0) options.parse = true;
+      var model = this;
+      var success = options.success;
+      options.success = function(resp) {
+        if (!model.set(model.parse(resp, options), options)) return false;
+        if (success) success(model, resp, options);
+        model.trigger('sync', model, resp, options);
+      };
+      wrapError(this, options);
+      return this.sync('read', this, options);
+    },
+
+    // Set a hash of model attributes, and sync the model to the server.
+    // If the server returns an attributes hash that differs, the model's
+    // state will be `set` again.
+    save: function(key, val, options) {
+      var attrs, method, xhr, attributes = this.attributes;
+
+      // Handle both `"key", value` and `{key: value}` -style arguments.
+      if (key == null || typeof key === 'object') {
+        attrs = key;
+        options = val;
+      } else {
+        (attrs = {})[key] = val;
+      }
+
+      options = _.extend({validate: true}, options);
+
+      // If we're not waiting and attributes exist, save acts as
+      // `set(attr).save(null, opts)` with validation. Otherwise, check if
+      // the model will be valid when the attributes, if any, are set.
+      if (attrs && !options.wait) {
+        if (!this.set(attrs, options)) return false;
+      } else {
+        if (!this._validate(attrs, options)) return false;
+      }
+
+      // Set temporary attributes if `{wait: true}`.
+      if (attrs && options.wait) {
+        this.attributes = _.extend({}, attributes, attrs);
+      }
+
+      // After a successful server-side save, the client is (optionally)
+      // updated with the server-side state.
+      if (options.parse === void 0) options.parse = true;
+      var model = this;
+      var success = options.success;
+      options.success = function(resp) {
+        // Ensure attributes are restored during synchronous saves.
+        model.attributes = attributes;
+        var serverAttrs = model.parse(resp, options);
+        if (options.wait) serverAttrs = _.extend(attrs || {}, serverAttrs);
+        if (_.isObject(serverAttrs) && !model.set(serverAttrs, options)) {
+          return false;
+        }
+        if (success) success(model, resp, options);
+        model.trigger('sync', model, resp, options);
+      };
+      wrapError(this, options);
+
+      method = this.isNew() ? 'create' : (options.patch ? 'patch' : 'update');
+      if (method === 'patch') options.attrs = attrs;
+      xhr = this.sync(method, this, options);
+
+      // Restore attributes.
+      if (attrs && options.wait) this.attributes = attributes;
+
+      return xhr;
+    },
+
+    // Destroy this model on the server if it was already persisted.
+    // Optimistically removes the model from its collection, if it has one.
+    // If `wait: true` is passed, waits for the server to respond before removal.
+    destroy: function(options) {
+      options = options ? _.clone(options) : {};
+      var model = this;
+      var success = options.success;
+
+      var destroy = function() {
+        model.trigger('destroy', model, model.collection, options);
+      };
+
+      options.success = function(resp) {
+        if (options.wait || model.isNew()) destroy();
+        if (success) success(model, resp, options);
+        if (!model.isNew()) model.trigger('sync', model, resp, options);
+      };
+
+      if (this.isNew()) {
+        options.success();
+        return false;
+      }
+      wrapError(this, options);
+
+      var xhr = this.sync('delete', this, options);
+      if (!options.wait) destroy();
+      return xhr;
+    },
+
+    // Default URL for the model's representation on the server -- if you're
+    // using Backbone's restful methods, override this to change the endpoint
+    // that will be called.
+    url: function() {
+      var base =
+        _.result(this, 'urlRoot') ||
+        _.result(this.collection, 'url') ||
+        urlError();
+      if (this.isNew()) return base;
+      return base.replace(/([^\/])$/, '$1/') + encodeURIComponent(this.id);
+    },
+
+    // **parse** converts a response into the hash of attributes to be `set` on
+    // the model. The default implementation is just to pass the response along.
+    parse: function(resp, options) {
+      return resp;
+    },
+
+    // Create a new model with identical attributes to this one.
+    clone: function() {
+      return new this.constructor(this.attributes);
+    },
+
+    // A model is new if it has never been saved to the server, and lacks an id.
+    isNew: function() {
+      return !this.has(this.idAttribute);
+    },
+
+    // Check if the model is currently in a valid state.
+    isValid: function(options) {
+      return this._validate({}, _.extend(options || {}, { validate: true }));
+    },
+
+    // Run validation against the next complete set of model attributes,
+    // returning `true` if all is well. Otherwise, fire an `"invalid"` event.
+    _validate: function(attrs, options) {
+      if (!options.validate || !this.validate) return true;
+      attrs = _.extend({}, this.attributes, attrs);
+      var error = this.validationError = this.validate(attrs, options) || null;
+      if (!error) return true;
+      this.trigger('invalid', this, error, _.extend(options, {validationError: error}));
+      return false;
+    }
+
+  });
+
+  // Underscore methods that we want to implement on the Model.
+  var modelMethods = ['keys', 'values', 'pairs', 'invert', 'pick', 'omit'];
+
+  // Mix in each Underscore method as a proxy to `Model#attributes`.
+  _.each(modelMethods, function(method) {
+    Model.prototype[method] = function() {
+      var args = slice.call(arguments);
+      args.unshift(this.attributes);
+      return _[method].apply(_, args);
+    };
+  });
+
+  // Backbone.Collection
+  // -------------------
+
+  // If models tend to represent a single row of data, a Backbone Collection is
+  // more analagous to a table full of data ... or a small slice or page of that
+  // table, or a collection of rows that belong together for a particular reason
+  // -- all of the messages in this particular folder, all of the documents
+  // belonging to this particular author, and so on. Collections maintain
+  // indexes of their models, both in order, and for lookup by `id`.
+
+  // Create a new **Collection**, perhaps to contain a specific type of `model`.
+  // If a `comparator` is specified, the Collection will maintain
+  // its models in sort order, as they're added and removed.
+  var Collection = Backbone.Collection = function(models, options) {
+    options || (options = {});
+    if (options.model) this.model = options.model;
+    if (options.comparator !== void 0) this.comparator = options.comparator;
+    this._reset();
+    this.initialize.apply(this, arguments);
+    if (models) this.reset(models, _.extend({silent: true}, options));
+  };
+
+  // Default options for `Collection#set`.
+  var setOptions = {add: true, remove: true, merge: true};
+  var addOptions = {add: true, remove: false};
+
+  // Define the Collection's inheritable methods.
+  _.extend(Collection.prototype, Events, {
+
+    // The default model for a collection is just a **Backbone.Model**.
+    // This should be overridden in most cases.
+    model: Model,
+
+    // Initialize is an empty function by default. Override it with your own
+    // initialization logic.
+    initialize: function(){},
+
+    // The JSON representation of a Collection is an array of the
+    // models' attributes.
+    toJSON: function(options) {
+      return this.map(function(model){ return model.toJSON(options); });
+    },
+
+    // Proxy `Backbone.sync` by default.
+    sync: function() {
+      return Backbone.sync.apply(this, arguments);
+    },
+
+    // Add a model, or list of models to the set.
+    add: function(models, options) {
+      return this.set(models, _.extend({merge: false}, options, addOptions));
+    },
+
+    // Remove a model, or a list of models from the set.
+    remove: function(models, options) {
+      var singular = !_.isArray(models);
+      models = singular ? [models] : _.clone(models);
+      options || (options = {});
+      var i, l, index, model;
+      for (i = 0, l = models.length; i < l; i++) {
+        model = models[i] = this.get(models[i]);
+        if (!model) continue;
+        delete this._byId[model.id];
+        delete this._byId[model.cid];
+        index = this.indexOf(model);
+        this.models.splice(index, 1);
+        this.length--;
+        if (!options.silent) {
+          options.index = index;
+          model.trigger('remove', model, this, options);
+        }
+        this._removeReference(model, options);
+      }
+      return singular ? models[0] : models;
+    },
+
+    // Update a collection by `set`-ing a new list of models, adding new ones,
+    // removing models that are no longer present, and merging models that
+    // already exist in the collection, as necessary. Similar to **Model#set**,
+    // the core operation for updating the data contained by the collection.
+    set: function(models, options) {
+      options = _.defaults({}, options, setOptions);
+      if (options.parse) models = this.parse(models, options);
+      var singular = !_.isArray(models);
+      models = singular ? (models ? [models] : []) : _.clone(models);
+      var i, l, id, model, attrs, existing, sort;
+      var at = options.at;
+      var targetModel = this.model;
+      var sortable = this.comparator && (at == null) && options.sort !== false;
+      var sortAttr = _.isString(this.comparator) ? this.comparator : null;
+      var toAdd = [], toRemove = [], modelMap = {};
+      var add = options.add, merge = options.merge, remove = options.remove;
+      var order = !sortable && add && remove ? [] : false;
+
+      // Turn bare objects into model references, and prevent invalid models
+      // from being added.
+      for (i = 0, l = models.length; i < l; i++) {
+        attrs = models[i] || {};
+        if (attrs instanceof Model) {
+          id = model = attrs;
+        } else {
+          id = attrs[targetModel.prototype.idAttribute || 'id'];
+        }
+
+        // If a duplicate is found, prevent it from being added and
+        // optionally merge it into the existing model.
+        if (existing = this.get(id)) {
+          if (remove) modelMap[existing.cid] = true;
+          if (merge) {
+            attrs = attrs === model ? model.attributes : attrs;
+            if (options.parse) attrs = existing.parse(attrs, options);
+            existing.set(attrs, options);
+            if (sortable && !sort && existing.hasChanged(sortAttr)) sort = true;
+          }
+          models[i] = existing;
+
+        // If this is a new, valid model, push it to the `toAdd` list.
+        } else if (add) {
+          model = models[i] = this._prepareModel(attrs, options);
+          if (!model) continue;
+          toAdd.push(model);
+          this._addReference(model, options);
+        }
+
+        // Do not add multiple models with the same `id`.
+        model = existing || model;
+        if (order && (model.isNew() || !modelMap[model.id])) order.push(model);
+        modelMap[model.id] = true;
+      }
+
+      // Remove nonexistent models if appropriate.
+      if (remove) {
+        for (i = 0, l = this.length; i < l; ++i) {
+          if (!modelMap[(model = this.models[i]).cid]) toRemove.push(model);
+        }
+        if (toRemove.length) this.remove(toRemove, options);
+      }
+
+      // See if sorting is needed, update `length` and splice in new models.
+      if (toAdd.length || (order && order.length)) {
+        if (sortable) sort = true;
+        this.length += toAdd.length;
+        if (at != null) {
+          for (i = 0, l = toAdd.length; i < l; i++) {
+            this.models.splice(at + i, 0, toAdd[i]);
+          }
+        } else {
+          if (order) this.models.length = 0;
+          var orderedModels = order || toAdd;
+          for (i = 0, l = orderedModels.length; i < l; i++) {
+            this.models.push(orderedModels[i]);
+          }
+        }
+      }
+
+      // Silently sort the collection if appropriate.
+      if (sort) this.sort({silent: true});
+
+      // Unless silenced, it's time to fire all appropriate add/sort events.
+      if (!options.silent) {
+        for (i = 0, l = toAdd.length; i < l; i++) {
+          (model = toAdd[i]).trigger('add', model, this, options);
+        }
+        if (sort || (order && order.length)) this.trigger('sort', this, options);
+      }
+
+      // Return the added (or merged) model (or models).
+      return singular ? models[0] : models;
+    },
+
+    // When you have more items than you want to add or remove individually,
+    // you can reset the entire set with a new list of models, without firing
+    // any granular `add` or `remove` events. Fires `reset` when finished.
+    // Useful for bulk operations and optimizations.
+    reset: function(models, options) {
+      options || (options = {});
+      for (var i = 0, l = this.models.length; i < l; i++) {
+        this._removeReference(this.models[i], options);
+      }
+      options.previousModels = this.models;
+      this._reset();
+      models = this.add(models, _.extend({silent: true}, options));
+      if (!options.silent) this.trigger('reset', this, options);
+      return models;
+    },
+
+    // Add a model to the end of the collection.
+    push: function(model, options) {
+      return this.add(model, _.extend({at: this.length}, options));
+    },
+
+    // Remove a model from the end of the collection.
+    pop: function(options) {
+      var model = this.at(this.length - 1);
+      this.remove(model, options);
+      return model;
+    },
+
+    // Add a model to the beginning of the collection.
+    unshift: function(model, options) {
+      return this.add(model, _.extend({at: 0}, options));
+    },
+
+    // Remove a model from the beginning of the collection.
+    shift: function(options) {
+      var model = this.at(0);
+      this.remove(model, options);
+      return model;
+    },
+
+    // Slice out a sub-array of models from the collection.
+    slice: function() {
+      return slice.apply(this.models, arguments);
+    },
+
+    // Get a model from the set by id.
+    get: function(obj) {
+      if (obj == null) return void 0;
+      return this._byId[obj] || this._byId[obj.id] || this._byId[obj.cid];
+    },
+
+    // Get the model at the given index.
+    at: function(index) {
+      return this.models[index];
+    },
+
+    // Return models with matching attributes. Useful for simple cases of
+    // `filter`.
+    where: function(attrs, first) {
+      if (_.isEmpty(attrs)) return first ? void 0 : [];
+      return this[first ? 'find' : 'filter'](function(model) {
+        for (var key in attrs) {
+          if (attrs[key] !== model.get(key)) return false;
+        }
+        return true;
+      });
+    },
+
+    // Return the first model with matching attributes. Useful for simple cases
+    // of `find`.
+    findWhere: function(attrs) {
+      return this.where(attrs, true);
+    },
+
+    // Force the collection to re-sort itself. You don't need to call this under
+    // normal circumstances, as the set will maintain sort order as each item
+    // is added.
+    sort: function(options) {
+      if (!this.comparator) throw new Error('Cannot sort a set without a comparator');
+      options || (options = {});
+
+      // Run sort based on type of `comparator`.
+      if (_.isString(this.comparator) || this.comparator.length === 1) {
+        this.models = this.sortBy(this.comparator, this);
+      } else {
+        this.models.sort(_.bind(this.comparator, this));
+      }
+
+      if (!options.silent) this.trigger('sort', this, options);
+      return this;
+    },
+
+    // Pluck an attribute from each model in the collection.
+    pluck: function(attr) {
+      return _.invoke(this.models, 'get', attr);
+    },
+
+    // Fetch the default set of models for this collection, resetting the
+    // collection when they arrive. If `reset: true` is passed, the response
+    // data will be passed through the `reset` method instead of `set`.
+    fetch: function(options) {
+      options = options ? _.clone(options) : {};
+      if (options.parse === void 0) options.parse = true;
+      var success = options.success;
+      var collection = this;
+      options.success = function(resp) {
+        var method = options.reset ? 'reset' : 'set';
+        collection[method](resp, options);
+        if (success) success(collection, resp, options);
+        collection.trigger('sync', collection, resp, options);
+      };
+      wrapError(this, options);
+      return this.sync('read', this, options);
+    },
+
+    // Create a new instance of a model in this collection. Add the model to the
+    // collection immediately, unless `wait: true` is passed, in which case we
+    // wait for the server to agree.
+    create: function(model, options) {
+      options = options ? _.clone(options) : {};
+      if (!(model = this._prepareModel(model, options))) return false;
+      if (!options.wait) this.add(model, options);
+      var collection = this;
+      var success = options.success;
+      options.success = function(model, resp) {
+        if (options.wait) collection.add(model, options);
+        if (success) success(model, resp, options);
+      };
+      model.save(null, options);
+      return model;
+    },
+
+    // **parse** converts a response into a list of models to be added to the
+    // collection. The default implementation is just to pass it through.
+    parse: function(resp, options) {
+      return resp;
+    },
+
+    // Create a new collection with an identical list of models as this one.
+    clone: function() {
+      return new this.constructor(this.models);
+    },
+
+    // Private method to reset all internal state. Called when the collection
+    // is first initialized or reset.
+    _reset: function() {
+      this.length = 0;
+      this.models = [];
+      this._byId  = {};
+    },
+
+    // Prepare a hash of attributes (or other model) to be added to this
+    // collection.
+    _prepareModel: function(attrs, options) {
+      if (attrs instanceof Model) return attrs;
+      options = options ? _.clone(options) : {};
+      options.collection = this;
+      var model = new this.model(attrs, options);
+      if (!model.validationError) return model;
+      this.trigger('invalid', this, model.validationError, options);
+      return false;
+    },
+
+    // Internal method to create a model's ties to a collection.
+    _addReference: function(model, options) {
+      this._byId[model.cid] = model;
+      if (model.id != null) this._byId[model.id] = model;
+      if (!model.collection) model.collection = this;
+      model.on('all', this._onModelEvent, this);
+    },
+
+    // Internal method to sever a model's ties to a collection.
+    _removeReference: function(model, options) {
+      if (this === model.collection) delete model.collection;
+      model.off('all', this._onModelEvent, this);
+    },
+
+    // Internal method called every time a model in the set fires an event.
+    // Sets need to update their indexes when models change ids. All other
+    // events simply proxy through. "add" and "remove" events that originate
+    // in other collections are ignored.
+    _onModelEvent: function(event, model, collection, options) {
+      if ((event === 'add' || event === 'remove') && collection !== this) return;
+      if (event === 'destroy') this.remove(model, options);
+      if (model && event === 'change:' + model.idAttribute) {
+        delete this._byId[model.previous(model.idAttribute)];
+        if (model.id != null) this._byId[model.id] = model;
+      }
+      this.trigger.apply(this, arguments);
+    }
+
+  });
+
+  // Underscore methods that we want to implement on the Collection.
+  // 90% of the core usefulness of Backbone Collections is actually implemented
+  // right here:
+  var methods = ['forEach', 'each', 'map', 'collect', 'reduce', 'foldl',
+    'inject', 'reduceRight', 'foldr', 'find', 'detect', 'filter', 'select',
+    'reject', 'every', 'all', 'some', 'any', 'include', 'contains', 'invoke',
+    'max', 'min', 'toArray', 'size', 'first', 'head', 'take', 'initial', 'rest',
+    'tail', 'drop', 'last', 'without', 'difference', 'indexOf', 'shuffle',
+    'lastIndexOf', 'isEmpty', 'chain', 'sample'];
+
+  // Mix in each Underscore method as a proxy to `Collection#models`.
+  _.each(methods, function(method) {
+    Collection.prototype[method] = function() {
+      var args = slice.call(arguments);
+      args.unshift(this.models);
+      return _[method].apply(_, args);
+    };
+  });
+
+  // Underscore methods that take a property name as an argument.
+  var attributeMethods = ['groupBy', 'countBy', 'sortBy', 'indexBy'];
+
+  // Use attributes instead of properties.
+  _.each(attributeMethods, function(method) {
+    Collection.prototype[method] = function(value, context) {
+      var iterator = _.isFunction(value) ? value : function(model) {
+        return model.get(value);
+      };
+      return _[method](this.models, iterator, context);
+    };
+  });
+
+  // Backbone.View
+  // -------------
+
+  // Backbone Views are almost more convention than they are actual code. A View
+  // is simply a JavaScript object that represents a logical chunk of UI in the
+  // DOM. This might be a single item, an entire list, a sidebar or panel, or
+  // even the surrounding frame which wraps your whole app. Defining a chunk of
+  // UI as a **View** allows you to define your DOM events declaratively, without
+  // having to worry about render order ... and makes it easy for the view to
+  // react to specific changes in the state of your models.
+
+  // Creating a Backbone.View creates its initial element outside of the DOM,
+  // if an existing element is not provided...
+  var View = Backbone.View = function(options) {
+    this.cid = _.uniqueId('view');
+    options || (options = {});
+    _.extend(this, _.pick(options, viewOptions));
+    this._ensureElement();
+    this.initialize.apply(this, arguments);
+    this.delegateEvents();
+  };
+
+  // Cached regex to split keys for `delegate`.
+  var delegateEventSplitter = /^(\S+)\s*(.*)$/;
+
+  // List of view options to be merged as properties.
+  var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];
+
+  // Set up all inheritable **Backbone.View** properties and methods.
+  _.extend(View.prototype, Events, {
+
+    // The default `tagName` of a View's element is `"div"`.
+    tagName: 'div',
+
+    // jQuery delegate for element lookup, scoped to DOM elements within the
+    // current view. This should be preferred to global lookups where possible.
+    $: function(selector) {
+      return this.$el.find(selector);
+    },
+
+    // Initialize is an empty function by default. Override it with your own
+    // initialization logic.
+    initialize: function(){},
+
+    // **render** is the core function that your view should override, in order
+    // to populate its element (`this.el`), with the appropriate HTML. The
+    // convention is for **render** to always return `this`.
+    render: function() {
+      return this;
+    },
+
+    // Remove this view by taking the element out of the DOM, and removing any
+    // applicable Backbone.Events listeners.
+    remove: function() {
+      this.$el.remove();
+      this.stopListening();
+      return this;
+    },
+
+    // Change the view's element (`this.el` property), including event
+    // re-delegation.
+    setElement: function(element, delegate) {
+      if (this.$el) this.undelegateEvents();
+      this.$el = element instanceof Backbone.$ ? element : Backbone.$(element);
+      this.el = this.$el[0];
+      if (delegate !== false) this.delegateEvents();
+      return this;
+    },
+
+    // Set callbacks, where `this.events` is a hash of
+    //
+    // *{"event selector": "callback"}*
+    //
+    //     {
+    //       'mousedown .title':  'edit',
+    //       'click .button':     'save',
+    //       'click .open':       function(e) { ... }
+    //     }
+    //
+    // pairs. Callbacks will be bound to the view, with `this` set properly.
+    // Uses event delegation for efficiency.
+    // Omitting the selector binds the event to `this.el`.
+    // This only works for delegate-able events: not `focus`, `blur`, and
+    // not `change`, `submit`, and `reset` in Internet Explorer.
+    delegateEvents: function(events) {
+      if (!(events || (events = _.result(this, 'events')))) return this;
+      this.undelegateEvents();
+      for (var key in events) {
+        var method = events[key];
+        if (!_.isFunction(method)) method = this[events[key]];
+        if (!method) continue;
+
+        var match = key.match(delegateEventSplitter);
+        var eventName = match[1], selector = match[2];
+        method = _.bind(method, this);
+        eventName += '.delegateEvents' + this.cid;
+        if (selector === '') {
+          this.$el.on(eventName, method);
+        } else {
+          this.$el.on(eventName, selector, method);
+        }
+      }
+      return this;
+    },
+
+    // Clears all callbacks previously bound to the view with `delegateEvents`.
+    // You usually don't need to use this, but may wish to if you have multiple
+    // Backbone views attached to the same DOM element.
+    undelegateEvents: function() {
+      this.$el.off('.delegateEvents' + this.cid);
+      return this;
+    },
+
+    // Ensure that the View has a DOM element to render into.
+    // If `this.el` is a string, pass it through `$()`, take the first
+    // matching element, and re-assign it to `el`. Otherwise, create
+    // an element from the `id`, `className` and `tagName` properties.
+    _ensureElement: function() {
+      if (!this.el) {
+        var attrs = _.extend({}, _.result(this, 'attributes'));
+        if (this.id) attrs.id = _.result(this, 'id');
+        if (this.className) attrs['class'] = _.result(this, 'className');
+        var $el = Backbone.$('<' + _.result(this, 'tagName') + '>').attr(attrs);
+        this.setElement($el, false);
+      } else {
+        this.setElement(_.result(this, 'el'), false);
+      }
+    }
+
+  });
+
+  // Backbone.sync
+  // -------------
+
+  // Override this function to change the manner in which Backbone persists
+  // models to the server. You will be passed the type of request, and the
+  // model in question. By default, makes a RESTful Ajax request
+  // to the model's `url()`. Some possible customizations could be:
+  //
+  // * Use `setTimeout` to batch rapid-fire updates into a single request.
+  // * Send up the models as XML instead of JSON.
+  // * Persist models via WebSockets instead of Ajax.
+  //
+  // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests
+  // as `POST`, with a `_method` parameter containing the true HTTP method,
+  // as well as all requests with the body as `application/x-www-form-urlencoded`
+  // instead of `application/json` with the model in a param named `model`.
+  // Useful when interfacing with server-side languages like **PHP** that make
+  // it difficult to read the body of `PUT` requests.
+  Backbone.sync = function(method, model, options) {
+    var type = methodMap[method];
+
+    // Default options, unless specified.
+    _.defaults(options || (options = {}), {
+      emulateHTTP: Backbone.emulateHTTP,
+      emulateJSON: Backbone.emulateJSON
+    });
+
+    // Default JSON-request options.
+    var params = {type: type, dataType: 'json'};
+
+    // Ensure that we have a URL.
+    if (!options.url) {
+      params.url = _.result(model, 'url') || urlError();
+    }
+
+    // Ensure that we have the appropriate request data.
+    if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {
+      params.contentType = 'application/json';
+      params.data = JSON.stringify(options.attrs || model.toJSON(options));
+    }
+
+    // For older servers, emulate JSON by encoding the request into an HTML-form.
+    if (options.emulateJSON) {
+      params.contentType = 'application/x-www-form-urlencoded';
+      params.data = params.data ? {model: params.data} : {};
+    }
+
+    // For older servers, emulate HTTP by mimicking the HTTP method with `_method`
+    // And an `X-HTTP-Method-Override` header.
+    if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {
+      params.type = 'POST';
+      if (options.emulateJSON) params.data._method = type;
+      var beforeSend = options.beforeSend;
+      options.beforeSend = function(xhr) {
+        xhr.setRequestHeader('X-HTTP-Method-Override', type);
+        if (beforeSend) return beforeSend.apply(this, arguments);
+      };
+    }
+
+    // Don't process data on a non-GET request.
+    if (params.type !== 'GET' && !options.emulateJSON) {
+      params.processData = false;
+    }
+
+    // If we're sending a `PATCH` request, and we're in an old Internet Explorer
+    // that still has ActiveX enabled by default, override jQuery to use that
+    // for XHR instead. Remove this line when jQuery supports `PATCH` on IE8.
+    if (params.type === 'PATCH' && noXhrPatch) {
+      params.xhr = function() {
+        return new ActiveXObject("Microsoft.XMLHTTP");
+      };
+    }
+
+    // Make the request, allowing the user to override any Ajax options.
+    var xhr = options.xhr = Backbone.ajax(_.extend(params, options));
+    model.trigger('request', model, xhr, options);
+    return xhr;
+  };
+
+  var noXhrPatch =
+    typeof window !== 'undefined' && !!window.ActiveXObject &&
+      !(window.XMLHttpRequest && (new XMLHttpRequest).dispatchEvent);
+
+  // Map from CRUD to HTTP for our default `Backbone.sync` implementation.
+  var methodMap = {
+    'create': 'POST',
+    'update': 'PUT',
+    'patch':  'PATCH',
+    'delete': 'DELETE',
+    'read':   'GET'
+  };
+
+  // Set the default implementation of `Backbone.ajax` to proxy through to `$`.
+  // Override this if you'd like to use a different library.
+  Backbone.ajax = function() {
+    return Backbone.$.ajax.apply(Backbone.$, arguments);
+  };
+
+  // Backbone.Router
+  // ---------------
+
+  // Routers map faux-URLs to actions, and fire events when routes are
+  // matched. Creating a new one sets its `routes` hash, if not set statically.
+  var Router = Backbone.Router = function(options) {
+    options || (options = {});
+    if (options.routes) this.routes = options.routes;
+    this._bindRoutes();
+    this.initialize.apply(this, arguments);
+  };
+
+  // Cached regular expressions for matching named param parts and splatted
+  // parts of route strings.
+  var optionalParam = /\((.*?)\)/g;
+  var namedParam    = /(\(\?)?:\w+/g;
+  var splatParam    = /\*\w+/g;
+  var escapeRegExp  = /[\-{}\[\]+?.,\\\^$|#\s]/g;
+
+  // Set up all inheritable **Backbone.Router** properties and methods.
+  _.extend(Router.prototype, Events, {
+
+    // Initialize is an empty function by default. Override it with your own
+    // initialization logic.
+    initialize: function(){},
+
+    // Manually bind a single named route to a callback. For example:
+    //
+    //     this.route('search/:query/p:num', 'search', function(query, num) {
+    //       ...
+    //     });
+    //
+    route: function(route, name, callback) {
+      if (!_.isRegExp(route)) route = this._routeToRegExp(route);
+      if (_.isFunction(name)) {
+        callback = name;
+        name = '';
+      }
+      if (!callback) callback = this[name];
+      var router = this;
+      Backbone.history.route(route, function(fragment) {
+        var args = router._extractParameters(route, fragment);
+        router.execute(callback, args);
+        router.trigger.apply(router, ['route:' + name].concat(args));
+        router.trigger('route', name, args);
+        Backbone.history.trigger('route', router, name, args);
+      });
+      return this;
+    },
+
+    // Execute a route handler with the provided parameters.  This is an
+    // excellent place to do pre-route setup or post-route cleanup.
+    execute: function(callback, args) {
+      if (callback) callback.apply(this, args);
+    },
+
+    // Simple proxy to `Backbone.history` to save a fragment into the history.
+    navigate: function(fragment, options) {
+      Backbone.history.navigate(fragment, options);
+      return this;
+    },
+
+    // Bind all defined routes to `Backbone.history`. We have to reverse the
+    // order of the routes here to support behavior where the most general
+    // routes can be defined at the bottom of the route map.
+    _bindRoutes: function() {
+      if (!this.routes) return;
+      this.routes = _.result(this, 'routes');
+      var route, routes = _.keys(this.routes);
+      while ((route = routes.pop()) != null) {
+        this.route(route, this.routes[route]);
+      }
+    },
+
+    // Convert a route string into a regular expression, suitable for matching
+    // against the current location hash.
+    _routeToRegExp: function(route) {
+      route = route.replace(escapeRegExp, '\\$&')
+                   .replace(optionalParam, '(?:$1)?')
+                   .replace(namedParam, function(match, optional) {
+                     return optional ? match : '([^/?]+)';
+                   })
+                   .replace(splatParam, '([^?]*?)');
+      return new RegExp('^' + route + '(?:\\?([\\s\\S]*))?$');
+    },
+
+    // Given a route, and a URL fragment that it matches, return the array of
+    // extracted decoded parameters. Empty or unmatched parameters will be
+    // treated as `null` to normalize cross-browser behavior.
+    _extractParameters: function(route, fragment) {
+      var params = route.exec(fragment).slice(1);
+      return _.map(params, function(param, i) {
+        // Don't decode the search params.
+        if (i === params.length - 1) return param || null;
+        return param ? decodeURIComponent(param) : null;
+      });
+    }
+
+  });
+
+  // Backbone.History
+  // ----------------
+
+  // Handles cross-browser history management, based on either
+  // [pushState](http://diveintohtml5.info/history.html) and real URLs, or
+  // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)
+  // and URL fragments. If the browser supports neither (old IE, natch),
+  // falls back to polling.
+  var History = Backbone.History = function() {
+    this.handlers = [];
+    _.bindAll(this, 'checkUrl');
+
+    // Ensure that `History` can be used outside of the browser.
+    if (typeof window !== 'undefined') {
+      this.location = window.location;
+      this.history = window.history;
+    }
+  };
+
+  // Cached regex for stripping a leading hash/slash and trailing space.
+  var routeStripper = /^[#\/]|\s+$/g;
+
+  // Cached regex for stripping leading and trailing slashes.
+  var rootStripper = /^\/+|\/+$/g;
+
+  // Cached regex for detecting MSIE.
+  var isExplorer = /msie [\w.]+/;
+
+  // Cached regex for removing a trailing slash.
+  var trailingSlash = /\/$/;
+
+  // Cached regex for stripping urls of hash.
+  var pathStripper = /#.*$/;
+
+  // Has the history handling already been started?
+  History.started = false;
+
+  // Set up all inheritable **Backbone.History** properties and methods.
+  _.extend(History.prototype, Events, {
+
+    // The default interval to poll for hash changes, if necessary, is
+    // twenty times a second.
+    interval: 50,
+
+    // Are we at the app root?
+    atRoot: function() {
+      return this.location.pathname.replace(/[^\/]$/, '$&/') === this.root;
+    },
+
+    // Gets the true hash value. Cannot use location.hash directly due to bug
+    // in Firefox where location.hash will always be decoded.
+    getHash: function(window) {
+      var match = (window || this).location.href.match(/#(.*)$/);
+      return match ? match[1] : '';
+    },
+
+    // Get the cross-browser normalized URL fragment, either from the URL,
+    // the hash, or the override.
+    getFragment: function(fragment, forcePushState) {
+      if (fragment == null) {
+        if (this._hasPushState || !this._wantsHashChange || forcePushState) {
+          fragment = decodeURI(this.location.pathname + this.location.search);
+          var root = this.root.replace(trailingSlash, '');
+          if (!fragment.indexOf(root)) fragment = fragment.slice(root.length);
+        } else {
+          fragment = this.getHash();
+        }
+      }
+      return fragment.replace(routeStripper, '');
+    },
+
+    // Start the hash change handling, returning `true` if the current URL matches
+    // an existing route, and `false` otherwise.
+    start: function(options) {
+      if (History.started) throw new Error("Backbone.history has already been started");
+      History.started = true;
+
+      // Figure out the initial configuration. Do we need an iframe?
+      // Is pushState desired ... is it available?
+      this.options          = _.extend({root: '/'}, this.options, options);
+      this.root             = this.options.root;
+      this._wantsHashChange = this.options.hashChange !== false;
+      this._wantsPushState  = !!this.options.pushState;
+      this._hasPushState    = !!(this.options.pushState && this.history && this.history.pushState);
+      var fragment          = this.getFragment();
+      var docMode           = document.documentMode;
+      var oldIE             = (isExplorer.exec(navigator.userAgent.toLowerCase()) && (!docMode || docMode <= 7));
+
+      // Normalize root to always include a leading and trailing slash.
+      this.root = ('/' + this.root + '/').replace(rootStripper, '/');
+
+      if (oldIE && this._wantsHashChange) {
+        var frame = Backbone.$('<iframe src="javascript:0" tabindex="-1">');
+        this.iframe = frame.hide().appendTo('body')[0].contentWindow;
+        this.navigate(fragment);
+      }
+
+      // Depending on whether we're using pushState or hashes, and whether
+      // 'onhashchange' is supported, determine how we check the URL state.
+      if (this._hasPushState) {
+        Backbone.$(window).on('popstate', this.checkUrl);
+      } else if (this._wantsHashChange && ('onhashchange' in window) && !oldIE) {
+        Backbone.$(window).on('hashchange', this.checkUrl);
+      } else if (this._wantsHashChange) {
+        this._checkUrlInterval = setInterval(this.checkUrl, this.interval);
+      }
+
+      // Determine if we need to change the base url, for a pushState link
+      // opened by a non-pushState browser.
+      this.fragment = fragment;
+      var loc = this.location;
+
+      // Transition from hashChange to pushState or vice versa if both are
+      // requested.
+      if (this._wantsHashChange && this._wantsPushState) {
+
+        // If we've started off with a route from a `pushState`-enabled
+        // browser, but we're currently in a browser that doesn't support it...
+        if (!this._hasPushState && !this.atRoot()) {
+          this.fragment = this.getFragment(null, true);
+          this.location.replace(this.root + '#' + this.fragment);
+          // Return immediately as browser will do redirect to new url
+          return true;
+
+        // Or if we've started out with a hash-based route, but we're currently
+        // in a browser where it could be `pushState`-based instead...
+        } else if (this._hasPushState && this.atRoot() && loc.hash) {
+          this.fragment = this.getHash().replace(routeStripper, '');
+          this.history.replaceState({}, document.title, this.root + this.fragment);
+        }
+
+      }
+
+      if (!this.options.silent) return this.loadUrl();
+    },
+
+    // Disable Backbone.history, perhaps temporarily. Not useful in a real app,
+    // but possibly useful for unit testing Routers.
+    stop: function() {
+      Backbone.$(window).off('popstate', this.checkUrl).off('hashchange', this.checkUrl);
+      if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);
+      History.started = false;
+    },
+
+    // Add a route to be tested when the fragment changes. Routes added later
+    // may override previous routes.
+    route: function(route, callback) {
+      this.handlers.unshift({route: route, callback: callback});
+    },
+
+    // Checks the current URL to see if it has changed, and if it has,
+    // calls `loadUrl`, normalizing across the hidden iframe.
+    checkUrl: function(e) {
+      var current = this.getFragment();
+      if (current === this.fragment && this.iframe) {
+        current = this.getFragment(this.getHash(this.iframe));
+      }
+      if (current === this.fragment) return false;
+      if (this.iframe) this.navigate(current);
+      this.loadUrl();
+    },
+
+    // Attempt to load the current URL fragment. If a route succeeds with a
+    // match, returns `true`. If no defined routes matches the fragment,
+    // returns `false`.
+    loadUrl: function(fragment) {
+      fragment = this.fragment = this.getFragment(fragment);
+      return _.any(this.handlers, function(handler) {
+        if (handler.route.test(fragment)) {
+          handler.callback(fragment);
+          return true;
+        }
+      });
+    },
+
+    // Save a fragment into the hash history, or replace the URL state if the
+    // 'replace' option is passed. You are responsible for properly URL-encoding
+    // the fragment in advance.
+    //
+    // The options object can contain `trigger: true` if you wish to have the
+    // route callback be fired (not usually desirable), or `replace: true`, if
+    // you wish to modify the current URL without adding an entry to the history.
+    navigate: function(fragment, options) {
+      if (!History.started) return false;
+      if (!options || options === true) options = {trigger: !!options};
+
+      var url = this.root + (fragment = this.getFragment(fragment || ''));
+
+      // Strip the hash for matching.
+      fragment = fragment.replace(pathStripper, '');
+
+      if (this.fragment === fragment) return;
+      this.fragment = fragment;
+
+      // Don't include a trailing slash on the root.
+      if (fragment === '' && url !== '/') url = url.slice(0, -1);
+
+      // If pushState is available, we use it to set the fragment as a real URL.
+      if (this._hasPushState) {
+        this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);
+
+      // If hash changes haven't been explicitly disabled, update the hash
+      // fragment to store history.
+      } else if (this._wantsHashChange) {
+        this._updateHash(this.location, fragment, options.replace);
+        if (this.iframe && (fragment !== this.getFragment(this.getHash(this.iframe)))) {
+          // Opening and closing the iframe tricks IE7 and earlier to push a
+          // history entry on hash-tag change.  When replace is true, we don't
+          // want this.
+          if(!options.replace) this.iframe.document.open().close();
+          this._updateHash(this.iframe.location, fragment, options.replace);
+        }
+
+      // If you've told us that you explicitly don't want fallback hashchange-
+      // based history, then `navigate` becomes a page refresh.
+      } else {
+        return this.location.assign(url);
+      }
+      if (options.trigger) return this.loadUrl(fragment);
+    },
+
+    // Update the hash location, either replacing the current entry, or adding
+    // a new one to the browser history.
+    _updateHash: function(location, fragment, replace) {
+      if (replace) {
+        var href = location.href.replace(/(javascript:|#).*$/, '');
+        location.replace(href + '#' + fragment);
+      } else {
+        // Some browsers require that `hash` contains a leading #.
+        location.hash = '#' + fragment;
+      }
+    }
+
+  });
+
+  // Create the default Backbone.history.
+  Backbone.history = new History;
+
+  // Helpers
+  // -------
+
+  // Helper function to correctly set up the prototype chain, for subclasses.
+  // Similar to `goog.inherits`, but uses a hash of prototype properties and
+  // class properties to be extended.
+  var extend = function(protoProps, staticProps) {
+    var parent = this;
+    var child;
+
+    // The constructor function for the new subclass is either defined by you
+    // (the "constructor" property in your `extend` definition), or defaulted
+    // by us to simply call the parent's constructor.
+    if (protoProps && _.has(protoProps, 'constructor')) {
+      child = protoProps.constructor;
+    } else {
+      child = function(){ return parent.apply(this, arguments); };
+    }
+
+    // Add static properties to the constructor function, if supplied.
+    _.extend(child, parent, staticProps);
+
+    // Set the prototype chain to inherit from `parent`, without calling
+    // `parent`'s constructor function.
+    var Surrogate = function(){ this.constructor = child; };
+    Surrogate.prototype = parent.prototype;
+    child.prototype = new Surrogate;
+
+    // Add prototype properties (instance properties) to the subclass,
+    // if supplied.
+    if (protoProps) _.extend(child.prototype, protoProps);
+
+    // Set a convenience property in case the parent's prototype is needed
+    // later.
+    child.__super__ = parent.prototype;
+
+    return child;
+  };
+
+  // Set up inheritance for the model, collection, router, view and history.
+  Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;
+
+  // Throw an error when a URL is needed, and none is supplied.
+  var urlError = function() {
+    throw new Error('A "url" property or function must be specified');
+  };
+
+  // Wrap an optional error callback with a fallback error event.
+  var wrapError = function(model, options) {
+    var error = options.error;
+    options.error = function(resp) {
+      if (error) error(model, resp, options);
+      model.trigger('error', model, resp, options);
+    };
+  };
+
+  return Backbone;
+
+}));
diff --git a/planetstack/core/xoslib/static/js/vendor/backbone.marionette.js b/planetstack/core/xoslib/static/js/vendor/backbone.marionette.js
new file mode 100644 (file)
index 0000000..cebd22b
--- /dev/null
@@ -0,0 +1,2793 @@
+// MarionetteJS (Backbone.Marionette)
+// ----------------------------------
+// v2.0.1
+//
+// Copyright (c)2014 Derick Bailey, Muted Solutions, LLC.
+// Distributed under MIT license
+//
+// http://marionettejs.com
+
+(function(root, factory) {
+
+  if (typeof define === 'function' && define.amd) {
+    define(['backbone', 'underscore', 'backbone.wreqr', 'backbone.babysitter'], function(Backbone, _) {
+      return (root.Marionette = factory(root, Backbone, _));
+    });
+  } else if (typeof exports !== 'undefined') {
+    var Backbone = require('backbone');
+    var _ = require('underscore');
+    var Wreqr = require('backbone.wreqr');
+    var BabySitter = require('backbone.babysitter');
+    module.exports = factory(root, Backbone, _);
+  } else {
+    root.Marionette = factory(root, root.Backbone, root._);
+  }
+
+}(this, function(root, Backbone, _) {
+  'use strict';
+
+  var previousMarionette = root.Marionette;
+
+  var Marionette = Backbone.Marionette = {};
+
+  Marionette.VERSION = '2.0.1';
+
+  Marionette.noConflict = function() {
+    root.Marionette = previousMarionette;
+    return this;
+  };
+
+  // Get the Deferred creator for later use
+  Marionette.Deferred = Backbone.$.Deferred;
+
+  /* jshint unused: false */
+  
+  // Helpers
+  // -------
+  
+  // For slicing `arguments` in functions
+  var slice = Array.prototype.slice;
+  
+  function throwError(message, name) {
+    var error = new Error(message);
+    error.name = name || 'Error';
+    throw error;
+  }
+  
+  // Marionette.extend
+  // -----------------
+  
+  // Borrow the Backbone `extend` method so we can use it as needed
+  Marionette.extend = Backbone.Model.extend;
+  
+  // Marionette.getOption
+  // --------------------
+  
+  // Retrieve an object, function or other value from a target
+  // object or its `options`, with `options` taking precedence.
+  Marionette.getOption = function(target, optionName) {
+    if (!target || !optionName) { return; }
+    var value;
+  
+    if (target.options && (target.options[optionName] !== undefined)) {
+      value = target.options[optionName];
+    } else {
+      value = target[optionName];
+    }
+  
+    return value;
+  };
+  
+  // Proxy `Marionette.getOption`
+  Marionette.proxyGetOption = function(optionName) {
+    return Marionette.getOption(this, optionName);
+  };
+  
+  // Marionette.normalizeMethods
+  // ----------------------
+  
+  // Pass in a mapping of events => functions or function names
+  // and return a mapping of events => functions
+  Marionette.normalizeMethods = function(hash) {
+    var normalizedHash = {}, method;
+    _.each(hash, function(fn, name) {
+      method = fn;
+      if (!_.isFunction(method)) {
+        method = this[method];
+      }
+      if (!method) {
+        return;
+      }
+      normalizedHash[name] = method;
+    }, this);
+    return normalizedHash;
+  };
+  
+  
+  // allows for the use of the @ui. syntax within
+  // a given key for triggers and events
+  // swaps the @ui with the associated selector
+  Marionette.normalizeUIKeys = function(hash, ui) {
+    if (typeof(hash) === 'undefined') {
+      return;
+    }
+  
+    _.each(_.keys(hash), function(v) {
+      var pattern = /@ui.[a-zA-Z_$0-9]*/g;
+      if (v.match(pattern)) {
+        hash[v.replace(pattern, function(r) {
+          return ui[r.slice(4)];
+        })] = hash[v];
+        delete hash[v];
+      }
+    });
+  
+    return hash;
+  };
+  
+  // Mix in methods from Underscore, for iteration, and other
+  // collection related features.
+  // Borrowing this code from Backbone.Collection:
+  // http://backbonejs.org/docs/backbone.html#section-106
+  Marionette.actAsCollection = function(object, listProperty) {
+    var methods = ['forEach', 'each', 'map', 'find', 'detect', 'filter',
+      'select', 'reject', 'every', 'all', 'some', 'any', 'include',
+      'contains', 'invoke', 'toArray', 'first', 'initial', 'rest',
+      'last', 'without', 'isEmpty', 'pluck'];
+  
+    _.each(methods, function(method) {
+      object[method] = function() {
+        var list = _.values(_.result(this, listProperty));
+        var args = [list].concat(_.toArray(arguments));
+        return _[method].apply(_, args);
+      };
+    });
+  };
+  
+  // Trigger an event and/or a corresponding method name. Examples:
+  //
+  // `this.triggerMethod("foo")` will trigger the "foo" event and
+  // call the "onFoo" method.
+  //
+  // `this.triggerMethod("foo:bar")` will trigger the "foo:bar" event and
+  // call the "onFooBar" method.
+  Marionette.triggerMethod = (function() {
+  
+    // split the event name on the ":"
+    var splitter = /(^|:)(\w)/gi;
+  
+    // take the event section ("section1:section2:section3")
+    // and turn it in to uppercase name
+    function getEventName(match, prefix, eventName) {
+      return eventName.toUpperCase();
+    }
+  
+    // actual triggerMethod implementation
+    var triggerMethod = function(event) {
+      // get the method name from the event name
+      var methodName = 'on' + event.replace(splitter, getEventName);
+      var method = this[methodName];
+      var result;
+  
+      // call the onMethodName if it exists
+      if (_.isFunction(method)) {
+        // pass all arguments, except the event name
+        result = method.apply(this, _.tail(arguments));
+      }
+  
+      // trigger the event, if a trigger method exists
+      if (_.isFunction(this.trigger)) {
+        this.trigger.apply(this, arguments);
+      }
+  
+      return result;
+    };
+  
+    return triggerMethod;
+  })();
+  
+  // DOMRefresh
+  // ----------
+  //
+  // Monitor a view's state, and after it has been rendered and shown
+  // in the DOM, trigger a "dom:refresh" event every time it is
+  // re-rendered.
+  
+  Marionette.MonitorDOMRefresh = (function(documentElement) {
+    // track when the view has been shown in the DOM,
+    // using a Marionette.Region (or by other means of triggering "show")
+    function handleShow(view) {
+      view._isShown = true;
+      triggerDOMRefresh(view);
+    }
+  
+    // track when the view has been rendered
+    function handleRender(view) {
+      view._isRendered = true;
+      triggerDOMRefresh(view);
+    }
+  
+    // Trigger the "dom:refresh" event and corresponding "onDomRefresh" method
+    function triggerDOMRefresh(view) {
+      if (view._isShown && view._isRendered && isInDOM(view)) {
+        if (_.isFunction(view.triggerMethod)) {
+          view.triggerMethod('dom:refresh');
+        }
+      }
+    }
+  
+    function isInDOM(view) {
+      return documentElement.contains(view.el);
+    }
+  
+    // Export public API
+    return function(view) {
+      view.listenTo(view, 'show', function() {
+        handleShow(view);
+      });
+  
+      view.listenTo(view, 'render', function() {
+        handleRender(view);
+      });
+    };
+  })(document.documentElement);
+  
+
+  /* jshint maxparams: 5 */
+  
+  // Marionette.bindEntityEvents & unbindEntityEvents
+  // ---------------------------
+  //
+  // These methods are used to bind/unbind a backbone "entity" (collection/model)
+  // to methods on a target object.
+  //
+  // The first parameter, `target`, must have a `listenTo` method from the
+  // EventBinder object.
+  //
+  // The second parameter is the entity (Backbone.Model or Backbone.Collection)
+  // to bind the events from.
+  //
+  // The third parameter is a hash of { "event:name": "eventHandler" }
+  // configuration. Multiple handlers can be separated by a space. A
+  // function can be supplied instead of a string handler name.
+  
+  (function(Marionette) {
+    'use strict';
+  
+    // Bind the event to handlers specified as a string of
+    // handler names on the target object
+    function bindFromStrings(target, entity, evt, methods) {
+      var methodNames = methods.split(/\s+/);
+  
+      _.each(methodNames, function(methodName) {
+  
+        var method = target[methodName];
+        if (!method) {
+          throwError('Method "' + methodName +
+            '" was configured as an event handler, but does not exist.');
+        }
+  
+        target.listenTo(entity, evt, method);
+      });
+    }
+  
+    // Bind the event to a supplied callback function
+    function bindToFunction(target, entity, evt, method) {
+      target.listenTo(entity, evt, method);
+    }
+  
+    // Bind the event to handlers specified as a string of
+    // handler names on the target object
+    function unbindFromStrings(target, entity, evt, methods) {
+      var methodNames = methods.split(/\s+/);
+  
+      _.each(methodNames, function(methodName) {
+        var method = target[methodName];
+        target.stopListening(entity, evt, method);
+      });
+    }
+  
+    // Bind the event to a supplied callback function
+    function unbindToFunction(target, entity, evt, method) {
+      target.stopListening(entity, evt, method);
+    }
+  
+  
+    // generic looping function
+    function iterateEvents(target, entity, bindings, functionCallback, stringCallback) {
+      if (!entity || !bindings) { return; }
+  
+      // allow the bindings to be a function
+      if (_.isFunction(bindings)) {
+        bindings = bindings.call(target);
+      }
+  
+      // iterate the bindings and bind them
+      _.each(bindings, function(methods, evt) {
+  
+        // allow for a function as the handler,
+        // or a list of event names as a string
+        if (_.isFunction(methods)) {
+          functionCallback(target, entity, evt, methods);
+        } else {
+          stringCallback(target, entity, evt, methods);
+        }
+  
+      });
+    }
+  
+    // Export Public API
+    Marionette.bindEntityEvents = function(target, entity, bindings) {
+      iterateEvents(target, entity, bindings, bindToFunction, bindFromStrings);
+    };
+  
+    Marionette.unbindEntityEvents = function(target, entity, bindings) {
+      iterateEvents(target, entity, bindings, unbindToFunction, unbindFromStrings);
+    };
+  
+    // Proxy `bindEntityEvents`
+    Marionette.proxyBindEntityEvents = function(entity, bindings) {
+      return Marionette.bindEntityEvents(this, entity, bindings);
+    };
+  
+    // Proxy `unbindEntityEvents`
+    Marionette.proxyUnbindEntityEvents = function(entity, bindings) {
+      return Marionette.unbindEntityEvents(this, entity, bindings);
+    };
+  })(Marionette);
+  
+
+  // Callbacks
+  // ---------
+  
+  // A simple way of managing a collection of callbacks
+  // and executing them at a later point in time, using jQuery's
+  // `Deferred` object.
+  Marionette.Callbacks = function() {
+    this._deferred = Marionette.Deferred();
+    this._callbacks = [];
+  };
+  
+  _.extend(Marionette.Callbacks.prototype, {
+  
+    // Add a callback to be executed. Callbacks added here are
+    // guaranteed to execute, even if they are added after the
+    // `run` method is called.
+    add: function(callback, contextOverride) {
+      var promise = _.result(this._deferred, 'promise');
+  
+      this._callbacks.push({cb: callback, ctx: contextOverride});
+  
+      promise.then(function(args) {
+        if (contextOverride){ args.context = contextOverride; }
+        callback.call(args.context, args.options);
+      });
+    },
+  
+    // Run all registered callbacks with the context specified.
+    // Additional callbacks can be added after this has been run
+    // and they will still be executed.
+    run: function(options, context) {
+      this._deferred.resolve({
+        options: options,
+        context: context
+      });
+    },
+  
+    // Resets the list of callbacks to be run, allowing the same list
+    // to be run multiple times - whenever the `run` method is called.
+    reset: function() {
+      var callbacks = this._callbacks;
+      this._deferred = Marionette.Deferred();
+      this._callbacks = [];
+  
+      _.each(callbacks, function(cb) {
+        this.add(cb.cb, cb.ctx);
+      }, this);
+    }
+  });
+  
+  // Marionette Controller
+  // ---------------------
+  //
+  // A multi-purpose object to use as a controller for
+  // modules and routers, and as a mediator for workflow
+  // and coordination of other objects, views, and more.
+  Marionette.Controller = function(options) {
+    this.triggerMethod = Marionette.triggerMethod;
+    this.options = options || {};
+  
+    if (_.isFunction(this.initialize)) {
+      this.initialize(this.options);
+    }
+  };
+  
+  Marionette.Controller.extend = Marionette.extend;
+  
+  // Controller Methods
+  // --------------
+  
+  // Ensure it can trigger events with Backbone.Events
+  _.extend(Marionette.Controller.prototype, Backbone.Events, {
+    destroy: function() {
+      var args = Array.prototype.slice.call(arguments);
+      this.triggerMethod.apply(this, ['before:destroy'].concat(args));
+      this.triggerMethod.apply(this, ['destroy'].concat(args));
+  
+      this.stopListening();
+      this.off();
+    },
+  
+    // import the `triggerMethod` to trigger events with corresponding
+    // methods if the method exists
+    triggerMethod: Marionette.triggerMethod,
+  
+    // Proxy `getOption` to enable getting options from this or this.options by name.
+    getOption: Marionette.proxyGetOption
+  
+  });
+  
+  /* jshint maxcomplexity: 10, maxstatements: 27 */
+  
+  // Region
+  // ------
+  //
+  // Manage the visual regions of your composite application. See
+  // http://lostechies.com/derickbailey/2011/12/12/composite-js-apps-regions-and-region-managers/
+  
+  Marionette.Region = function(options) {
+    this.options = options || {};
+    this.el = this.getOption('el');
+  
+    // Handle when this.el is passed in as a $ wrapped element.
+    this.el = this.el instanceof Backbone.$ ? this.el[0] : this.el;
+  
+    if (!this.el) {
+      throwError('An "el" must be specified for a region.', 'NoElError');
+    }
+  
+    this.$el = this.getEl(this.el);
+  
+    if (this.initialize) {
+      var args = Array.prototype.slice.apply(arguments);
+      this.initialize.apply(this, args);
+    }
+  };
+  
+  
+  // Region Class methods
+  // -------------------
+  
+  _.extend(Marionette.Region, {
+  
+    // Build an instance of a region by passing in a configuration object
+    // and a default region class to use if none is specified in the config.
+    //
+    // The config object should either be a string as a jQuery DOM selector,
+    // a Region class directly, or an object literal that specifies both
+    // a selector and regionClass:
+    //
+    // ```js
+    // {
+    //   selector: "#foo",
+    //   regionClass: MyCustomRegion
+    // }
+    // ```
+    //
+    buildRegion: function(regionConfig, defaultRegionClass) {
+      var regionIsString = _.isString(regionConfig);
+      var regionSelectorIsString = _.isString(regionConfig.selector);
+      var regionClassIsUndefined = _.isUndefined(regionConfig.regionClass);
+      var regionIsClass = _.isFunction(regionConfig);
+  
+      if (!regionIsClass && !regionIsString && !regionSelectorIsString) {
+        throwError('Region must be specified as a Region class,' +
+          'a selector string or an object with selector property');
+      }
+  
+      var selector, RegionClass;
+  
+      // get the selector for the region
+  
+      if (regionIsString) {
+        selector = regionConfig;
+      }
+  
+      if (regionConfig.selector) {
+        selector = regionConfig.selector;
+        delete regionConfig.selector;
+      }
+  
+      // get the class for the region
+  
+      if (regionIsClass) {
+        RegionClass = regionConfig;
+      }
+  
+      if (!regionIsClass && regionClassIsUndefined) {
+        RegionClass = defaultRegionClass;
+      }
+  
+      if (regionConfig.regionClass) {
+        RegionClass = regionConfig.regionClass;
+        delete regionConfig.regionClass;
+      }
+  
+      if (regionIsString || regionIsClass) {
+        regionConfig = {};
+      }
+  
+      regionConfig.el = selector;
+  
+      // build the region instance
+      var region = new RegionClass(regionConfig);
+  
+      // override the `getEl` function if we have a parentEl
+      // this must be overridden to ensure the selector is found
+      // on the first use of the region. if we try to assign the
+      // region's `el` to `parentEl.find(selector)` in the object
+      // literal to build the region, the element will not be
+      // guaranteed to be in the DOM already, and will cause problems
+      if (regionConfig.parentEl) {
+        region.getEl = function(el) {
+          if (_.isObject(el)) {
+            return Backbone.$(el);
+          }
+          var parentEl = regionConfig.parentEl;
+          if (_.isFunction(parentEl)) {
+            parentEl = parentEl();
+          }
+          return parentEl.find(el);
+        };
+      }
+  
+      return region;
+    }
+  
+  });
+  
+  // Region Instance Methods
+  // -----------------------
+  
+  _.extend(Marionette.Region.prototype, Backbone.Events, {
+  
+    // Displays a backbone view instance inside of the region.
+    // Handles calling the `render` method for you. Reads content
+    // directly from the `el` attribute. Also calls an optional
+    // `onShow` and `onDestroy` method on your view, just after showing
+    // or just before destroying the view, respectively.
+    // The `preventDestroy` option can be used to prevent a view from
+    // the old view being destroyed on show.
+    // The `forceShow` option can be used to force a view to be
+    // re-rendered if it's already shown in the region.
+  
+    show: function(view, options){
+      this._ensureElement();
+  
+      var showOptions = options || {};
+      var isDifferentView = view !== this.currentView;
+      var preventDestroy =  !!showOptions.preventDestroy;
+      var forceShow = !!showOptions.forceShow;
+  
+      // we are only changing the view if there is a view to change to begin with
+      var isChangingView = !!this.currentView;
+  
+      // only destroy the view if we don't want to preventDestroy and the view is different
+      var _shouldDestroyView = !preventDestroy && isDifferentView;
+  
+      if (_shouldDestroyView) {
+        this.empty();
+      }
+  
+      // show the view if the view is different or if you want to re-show the view
+      var _shouldShowView = isDifferentView || forceShow;
+  
+      if (_shouldShowView) {
+        view.render();
+  
+        if (isChangingView) {
+          this.triggerMethod('before:swap', view);
+        }
+  
+        this.triggerMethod('before:show', view);
+        this.triggerMethod.call(view, 'before:show');
+  
+        this.attachHtml(view);
+        this.currentView = view;
+  
+        if (isChangingView) {
+          this.triggerMethod('swap', view);
+        }
+  
+        this.triggerMethod('show', view);
+  
+        if (_.isFunction(view.triggerMethod)) {
+          view.triggerMethod('show');
+        } else {
+          this.triggerMethod.call(view, 'show');
+        }
+  
+        return this;
+      }
+  
+      return this;
+    },
+  
+    _ensureElement: function(){
+      if (!_.isObject(this.el)) {
+        this.$el = this.getEl(this.el);
+        this.el = this.$el[0];
+      }
+  
+      if (!this.$el || this.$el.length === 0) {
+        throwError('An "el" ' + this.$el.selector + ' must exist in DOM');
+      }
+    },
+  
+    // Override this method to change how the region finds the
+    // DOM element that it manages. Return a jQuery selector object.
+    getEl: function(el) {
+      return Backbone.$(el);
+    },
+  
+    // Override this method to change how the new view is
+    // appended to the `$el` that the region is managing
+    attachHtml: function(view) {
+      // empty the node and append new view
+      this.el.innerHTML='';
+      this.el.appendChild(view.el);
+    },
+  
+    // Destroy the current view, if there is one. If there is no
+    // current view, it does nothing and returns immediately.
+    empty: function() {
+      var view = this.currentView;
+      if (!view || view.isDestroyed) { return; }
+  
+      this.triggerMethod('before:empty', view);
+  
+      // call 'destroy' or 'remove', depending on which is found
+      if (view.destroy) { view.destroy(); }
+      else if (view.remove) { view.remove(); }
+  
+      this.triggerMethod('empty', view);
+  
+      delete this.currentView;
+    },
+  
+    // Attach an existing view to the region. This
+    // will not call `render` or `onShow` for the new view,
+    // and will not replace the current HTML for the `el`
+    // of the region.
+    attachView: function(view) {
+      this.currentView = view;
+    },
+  
+    // Reset the region by destroying any existing view and
+    // clearing out the cached `$el`. The next time a view
+    // is shown via this region, the region will re-query the
+    // DOM for the region's `el`.
+    reset: function() {
+      this.empty();
+  
+      if (this.$el) {
+        this.el = this.$el.selector;
+      }
+  
+      delete this.$el;
+    },
+  
+    // Proxy `getOption` to enable getting options from this or this.options by name.
+    getOption: Marionette.proxyGetOption,
+  
+    // import the `triggerMethod` to trigger events with corresponding
+    // methods if the method exists
+    triggerMethod: Marionette.triggerMethod
+  });
+  
+  // Copy the `extend` function used by Backbone's classes
+  Marionette.Region.extend = Marionette.extend;
+  
+  // Marionette.RegionManager
+  // ------------------------
+  //
+  // Manage one or more related `Marionette.Region` objects.
+  Marionette.RegionManager = (function(Marionette) {
+  
+    var RegionManager = Marionette.Controller.extend({
+      constructor: function(options) {
+        this._regions = {};
+        Marionette.Controller.call(this, options);
+      },
+  
+      // Add multiple regions using an object literal, where
+      // each key becomes the region name, and each value is
+      // the region definition.
+      addRegions: function(regionDefinitions, defaults) {
+        var regions = {};
+  
+        _.each(regionDefinitions, function(definition, name) {
+          if (_.isString(definition)) {
+            definition = {selector: definition};
+          }
+  
+          if (definition.selector) {
+            definition = _.defaults({}, definition, defaults);
+          }
+  
+          var region = this.addRegion(name, definition);
+          regions[name] = region;
+        }, this);
+  
+        return regions;
+      },
+  
+      // Add an individual region to the region manager,
+      // and return the region instance
+      addRegion: function(name, definition) {
+        var region;
+  
+        var isObject = _.isObject(definition);
+        var isString = _.isString(definition);
+        var hasSelector = !!definition.selector;
+  
+        if (isString || (isObject && hasSelector)) {
+          region = Marionette.Region.buildRegion(definition, Marionette.Region);
+        } else if (_.isFunction(definition)) {
+          region = Marionette.Region.buildRegion(definition, Marionette.Region);
+        } else {
+          region = definition;
+        }
+  
+        this.triggerMethod('before:add:region', name, region);
+  
+        this._store(name, region);
+  
+        this.triggerMethod('add:region', name, region);
+        return region;
+      },
+  
+      // Get a region by name
+      get: function(name) {
+        return this._regions[name];
+      },
+  
+      // Gets all the regions contained within
+      // the `regionManager` instance.
+      getRegions: function(){
+        return _.clone(this._regions);
+      },
+  
+      // Remove a region by name
+      removeRegion: function(name) {
+        var region = this._regions[name];
+        this._remove(name, region);
+      },
+  
+      // Empty all regions in the region manager, and
+      // remove them
+      removeRegions: function() {
+        _.each(this._regions, function(region, name) {
+          this._remove(name, region);
+        }, this);
+      },
+  
+      // Empty all regions in the region manager, but
+      // leave them attached
+      emptyRegions: function() {
+        _.each(this._regions, function(region) {
+          region.empty();
+        }, this);
+      },
+  
+      // Destroy all regions and shut down the region
+      // manager entirely
+      destroy: function() {
+        this.removeRegions();
+        Marionette.Controller.prototype.destroy.apply(this, arguments);
+      },
+  
+      // internal method to store regions
+      _store: function(name, region) {
+        this._regions[name] = region;
+        this._setLength();
+      },
+  
+      // internal method to remove a region
+      _remove: function(name, region) {
+        this.triggerMethod('before:remove:region', name, region);
+        region.empty();
+        region.stopListening();
+        delete this._regions[name];
+        this._setLength();
+        this.triggerMethod('remove:region', name, region);
+      },
+  
+      // set the number of regions current held
+      _setLength: function() {
+        this.length = _.size(this._regions);
+      }
+  
+    });
+  
+    Marionette.actAsCollection(RegionManager.prototype, '_regions');
+  
+    return RegionManager;
+  })(Marionette);
+  
+
+  // Template Cache
+  // --------------
+  
+  // Manage templates stored in `<script>` blocks,
+  // caching them for faster access.
+  Marionette.TemplateCache = function(templateId) {
+    this.templateId = templateId;
+  };
+  
+  // TemplateCache object-level methods. Manage the template
+  // caches from these method calls instead of creating
+  // your own TemplateCache instances
+  _.extend(Marionette.TemplateCache, {
+    templateCaches: {},
+  
+    // Get the specified template by id. Either
+    // retrieves the cached version, or loads it
+    // from the DOM.
+    get: function(templateId) {
+      var cachedTemplate = this.templateCaches[templateId];
+  
+      if (!cachedTemplate) {
+        cachedTemplate = new Marionette.TemplateCache(templateId);
+        this.templateCaches[templateId] = cachedTemplate;
+      }
+  
+      return cachedTemplate.load();
+    },
+  
+    // Clear templates from the cache. If no arguments
+    // are specified, clears all templates:
+    // `clear()`
+    //
+    // If arguments are specified, clears each of the
+    // specified templates from the cache:
+    // `clear("#t1", "#t2", "...")`
+    clear: function() {
+      var i;
+      var args = slice.call(arguments);
+      var length = args.length;
+  
+      if (length > 0) {
+        for (i = 0; i < length; i++) {
+          delete this.templateCaches[args[i]];
+        }
+      } else {
+        this.templateCaches = {};
+      }
+    }
+  });
+  
+  // TemplateCache instance methods, allowing each
+  // template cache object to manage its own state
+  // and know whether or not it has been loaded
+  _.extend(Marionette.TemplateCache.prototype, {
+  
+    // Internal method to load the template
+    load: function() {
+      // Guard clause to prevent loading this template more than once
+      if (this.compiledTemplate) {
+        return this.compiledTemplate;
+      }
+  
+      // Load the template and compile it
+      var template = this.loadTemplate(this.templateId);
+      this.compiledTemplate = this.compileTemplate(template);
+  
+      return this.compiledTemplate;
+    },
+  
+    // Load a template from the DOM, by default. Override
+    // this method to provide your own template retrieval
+    // For asynchronous loading with AMD/RequireJS, consider
+    // using a template-loader plugin as described here:
+    // https://github.com/marionettejs/backbone.marionette/wiki/Using-marionette-with-requirejs
+    loadTemplate: function(templateId) {
+      var template = Backbone.$(templateId).html();
+  
+      if (!template || template.length === 0) {
+        throwError('Could not find template: "' + templateId + '"', 'NoTemplateError');
+      }
+  
+      return template;
+    },
+  
+    // Pre-compile the template before caching it. Override
+    // this method if you do not need to pre-compile a template
+    // (JST / RequireJS for example) or if you want to change
+    // the template engine used (Handebars, etc).
+    compileTemplate: function(rawTemplate) {
+      return _.template(rawTemplate);
+    }
+  });
+  
+  // Renderer
+  // --------
+  
+  // Render a template with data by passing in the template
+  // selector and the data to render.
+  Marionette.Renderer = {
+  
+    // Render a template with data. The `template` parameter is
+    // passed to the `TemplateCache` object to retrieve the
+    // template function. Override this method to provide your own
+    // custom rendering and template handling for all of Marionette.
+    render: function(template, data) {
+      if (!template) {
+        throwError('Cannot render the template since its false, null or undefined.',
+          'TemplateNotFoundError');
+      }
+  
+      var templateFunc;
+      if (typeof template === 'function') {
+        templateFunc = template;
+      } else {
+        templateFunc = Marionette.TemplateCache.get(template);
+      }
+  
+      return templateFunc(data);
+    }
+  };
+  
+
+  /* jshint maxlen: 114, nonew: false */
+  // Marionette.View
+  // ---------------
+  
+  // The core view class that other Marionette views extend from.
+  Marionette.View = Backbone.View.extend({
+  
+    constructor: function(options) {
+      _.bindAll(this, 'render');
+  
+      // this exposes view options to the view initializer
+      // this is a backfill since backbone removed the assignment
+      // of this.options
+      // at some point however this may be removed
+      this.options = _.extend({}, _.result(this, 'options'), _.isFunction(options) ? options.call(this) : options);
+      // parses out the @ui DSL for events
+      this.events = this.normalizeUIKeys(_.result(this, 'events'));
+  
+      if (_.isObject(this.behaviors)) {
+        new Marionette.Behaviors(this);
+      }
+  
+      Backbone.View.apply(this, arguments);
+  
+      Marionette.MonitorDOMRefresh(this);
+      this.listenTo(this, 'show', this.onShowCalled);
+    },
+  
+    // Get the template for this view
+    // instance. You can set a `template` attribute in the view
+    // definition or pass a `template: "whatever"` parameter in
+    // to the constructor options.
+    getTemplate: function() {
+      return this.getOption('template');
+    },
+  
+    // Mix in template helper methods. Looks for a
+    // `templateHelpers` attribute, which can either be an
+    // object literal, or a function that returns an object
+    // literal. All methods and attributes from this object
+    // are copies to the object passed in.
+    mixinTemplateHelpers: function(target) {
+      target = target || {};
+      var templateHelpers = this.getOption('templateHelpers');
+      if (_.isFunction(templateHelpers)) {
+        templateHelpers = templateHelpers.call(this);
+      }
+      return _.extend(target, templateHelpers);
+    },
+  
+  
+    normalizeUIKeys: function(hash) {
+      var ui = _.result(this, 'ui');
+      var uiBindings = _.result(this, '_uiBindings');
+      return Marionette.normalizeUIKeys(hash, uiBindings || ui);
+    },
+  
+    // Configure `triggers` to forward DOM events to view
+    // events. `triggers: {"click .foo": "do:foo"}`
+    configureTriggers: function() {
+      if (!this.triggers) { return; }
+  
+      var triggerEvents = {};
+  
+      // Allow `triggers` to be configured as a function
+      var triggers = this.normalizeUIKeys(_.result(this, 'triggers'));
+  
+      // Configure the triggers, prevent default
+      // action and stop propagation of DOM events
+      _.each(triggers, function(value, key) {
+  
+        var hasOptions = _.isObject(value);
+        var eventName = hasOptions ? value.event : value;
+  
+        // build the event handler function for the DOM event
+        triggerEvents[key] = function(e) {
+  
+          // stop the event in its tracks
+          if (e) {
+            var prevent = e.preventDefault;
+            var stop = e.stopPropagation;
+  
+            var shouldPrevent = hasOptions ? value.preventDefault : prevent;
+            var shouldStop = hasOptions ? value.stopPropagation : stop;
+  
+            if (shouldPrevent && prevent) { prevent.apply(e); }
+            if (shouldStop && stop) { stop.apply(e); }
+          }
+  
+          // build the args for the event
+          var args = {
+            view: this,
+            model: this.model,
+            collection: this.collection
+          };
+  
+          // trigger the event
+          this.triggerMethod(eventName, args);
+        };
+  
+      }, this);
+  
+      return triggerEvents;
+    },
+  
+    // Overriding Backbone.View's delegateEvents to handle
+    // the `triggers`, `modelEvents`, and `collectionEvents` configuration
+    delegateEvents: function(events) {
+      this._delegateDOMEvents(events);
+      this.bindEntityEvents(this.model, this.getOption('modelEvents'));
+      this.bindEntityEvents(this.collection, this.getOption('collectionEvents'));
+    },
+  
+    // internal method to delegate DOM events and triggers
+    _delegateDOMEvents: function(events) {
+      events = events || this.events;
+      if (_.isFunction(events)) { events = events.call(this); }
+  
+      // normalize ui keys
+      events = this.normalizeUIKeys(events);
+  
+      var combinedEvents = {};
+  
+      // look up if this view has behavior events
+      var behaviorEvents = _.result(this, 'behaviorEvents') || {};
+      var triggers = this.configureTriggers();
+  
+      // behavior events will be overriden by view events and or triggers
+      _.extend(combinedEvents, behaviorEvents, events, triggers);
+  
+      Backbone.View.prototype.delegateEvents.call(this, combinedEvents);
+    },
+  
+    // Overriding Backbone.View's undelegateEvents to handle unbinding
+    // the `triggers`, `modelEvents`, and `collectionEvents` config
+    undelegateEvents: function() {
+      var args = Array.prototype.slice.call(arguments);
+      Backbone.View.prototype.undelegateEvents.apply(this, args);
+      this.unbindEntityEvents(this.model, this.getOption('modelEvents'));
+      this.unbindEntityEvents(this.collection, this.getOption('collectionEvents'));
+    },
+  
+    // Internal method, handles the `show` event.
+    onShowCalled: function() {},
+  
+    // Internal helper method to verify whether the view hasn't been destroyed
+    _ensureViewIsIntact: function() {
+      if (this.isDestroyed) {
+        var err = new Error('Cannot use a view thats already been destroyed.');
+        err.name = 'ViewDestroyedError';
+        throw err;
+      }
+    },
+  
+    // Default `destroy` implementation, for removing a view from the
+    // DOM and unbinding it. Regions will call this method
+    // for you. You can specify an `onDestroy` method in your view to
+    // add custom code that is called after the view is destroyed.
+    destroy: function() {
+      if (this.isDestroyed) { return; }
+  
+      var args = Array.prototype.slice.call(arguments);
+  
+      this.triggerMethod.apply(this, ['before:destroy'].concat(args));
+  
+      // mark as destroyed before doing the actual destroy, to
+      // prevent infinite loops within "destroy" event handlers
+      // that are trying to destroy other views
+      this.isDestroyed = true;
+      this.triggerMethod.apply(this, ['destroy'].concat(args));
+  
+      // unbind UI elements
+      this.unbindUIElements();
+  
+      // remove the view from the DOM
+      this.remove();
+    },
+  
+    // This method binds the elements specified in the "ui" hash inside the view's code with
+    // the associated jQuery selectors.
+    bindUIElements: function() {
+      if (!this.ui) { return; }
+  
+      // store the ui hash in _uiBindings so they can be reset later
+      // and so re-rendering the view will be able to find the bindings
+      if (!this._uiBindings) {
+        this._uiBindings = this.ui;
+      }
+  
+      // get the bindings result, as a function or otherwise
+      var bindings = _.result(this, '_uiBindings');
+  
+      // empty the ui so we don't have anything to start with
+      this.ui = {};
+  
+      // bind each of the selectors
+      _.each(_.keys(bindings), function(key) {
+        var selector = bindings[key];
+        this.ui[key] = this.$(selector);
+      }, this);
+    },
+  
+    // This method unbinds the elements specified in the "ui" hash
+    unbindUIElements: function() {
+      if (!this.ui || !this._uiBindings) { return; }
+  
+      // delete all of the existing ui bindings
+      _.each(this.ui, function($el, name) {
+        delete this.ui[name];
+      }, this);
+  
+      // reset the ui element to the original bindings configuration
+      this.ui = this._uiBindings;
+      delete this._uiBindings;
+    },
+  
+    // import the `triggerMethod` to trigger events with corresponding
+    // methods if the method exists
+    triggerMethod: Marionette.triggerMethod,
+  
+    // Imports the "normalizeMethods" to transform hashes of
+    // events=>function references/names to a hash of events=>function references
+    normalizeMethods: Marionette.normalizeMethods,
+  
+    // Proxy `getOption` to enable getting options from this or this.options by name.
+    getOption: Marionette.proxyGetOption,
+  
+    // Proxy `unbindEntityEvents` to enable binding view's events from another entity.
+    bindEntityEvents: Marionette.proxyBindEntityEvents,
+  
+    // Proxy `unbindEntityEvents` to enable unbinding view's events from another entity.
+    unbindEntityEvents: Marionette.proxyUnbindEntityEvents
+  });
+  
+  // Item View
+  // ---------
+  
+  // A single item view implementation that contains code for rendering
+  // with underscore.js templates, serializing the view's model or collection,
+  // and calling several methods on extended views, such as `onRender`.
+  Marionette.ItemView = Marionette.View.extend({
+  
+    // Setting up the inheritance chain which allows changes to
+    // Marionette.View.prototype.constructor which allows overriding
+    constructor: function() {
+      Marionette.View.apply(this, arguments);
+    },
+  
+    // Serialize the model or collection for the view. If a model is
+    // found, `.toJSON()` is called. If a collection is found, `.toJSON()`
+    // is also called, but is used to populate an `items` array in the
+    // resulting data. If both are found, defaults to the model.
+    // You can override the `serializeData` method in your own view
+    // definition, to provide custom serialization for your view's data.
+    serializeData: function() {
+      var data = {};
+  
+      if (this.model) {
+        data = this.model.toJSON();
+      }
+      else if (this.collection) {
+        data = {items: this.collection.toJSON()};
+      }
+  
+      return data;
+    },
+  
+    // Render the view, defaulting to underscore.js templates.
+    // You can override this in your view definition to provide
+    // a very specific rendering for your view. In general, though,
+    // you should override the `Marionette.Renderer` object to
+    // change how Marionette renders views.
+    render: function() {
+      this._ensureViewIsIntact();
+  
+      this.triggerMethod('before:render', this);
+  
+      var data = this.serializeData();
+      data = this.mixinTemplateHelpers(data);
+  
+      var template = this.getTemplate();
+      var html = Marionette.Renderer.render(template, data);
+      this.attachElContent(html);
+      this.bindUIElements();
+  
+      this.triggerMethod('render', this);
+  
+      return this;
+    },
+  
+    // Attaches the content of a given view.
+    // This method can be overriden to optimize rendering,
+    // or to render in a non standard way.
+    //
+    // For example, using `innerHTML` instead of `$el.html`
+    //
+    // ```js
+    // attachElContent: function(html) {
+    //   this.el.innerHTML = html;
+    //   return this;
+    // }
+    // ```
+    attachElContent: function(html) {
+      this.$el.html(html);
+  
+      return this;
+    },
+  
+    // Override the default destroy event to add a few
+    // more events that are triggered.
+    destroy: function() {
+      if (this.isDestroyed) { return; }
+  
+      Marionette.View.prototype.destroy.apply(this, arguments);
+    }
+  });
+  
+  /* jshint maxstatements: 14 */
+  
+  // Collection View
+  // ---------------
+  
+  // A view that iterates over a Backbone.Collection
+  // and renders an individual child view for each model.
+  Marionette.CollectionView = Marionette.View.extend({
+  
+    // used as the prefix for child view events
+    // that are forwarded through the collectionview
+    childViewEventPrefix: 'childview',
+  
+    // constructor
+    // option to pass `{sort: false}` to prevent the `CollectionView` from
+    // maintaining the sorted order of the collection.
+    // This will fallback onto appending childView's to the end.
+    constructor: function(options){
+      var initOptions = options || {};
+      this.sort = _.isUndefined(initOptions.sort) ? true : initOptions.sort;
+  
+      this._initChildViewStorage();
+  
+      Marionette.View.apply(this, arguments);
+  
+      this._initialEvents();
+      this.initRenderBuffer();
+    },
+  
+    // Instead of inserting elements one by one into the page,
+    // it's much more performant to insert elements into a document
+    // fragment and then insert that document fragment into the page
+    initRenderBuffer: function() {
+      this.elBuffer = document.createDocumentFragment();
+      this._bufferedChildren = [];
+    },
+  
+    startBuffering: function() {
+      this.initRenderBuffer();
+      this.isBuffering = true;
+    },
+  
+    endBuffering: function() {
+      this.isBuffering = false;
+      this._triggerBeforeShowBufferedChildren();
+      this.attachBuffer(this, this.elBuffer);
+      this._triggerShowBufferedChildren();
+      this.initRenderBuffer();
+    },
+  
+    _triggerBeforeShowBufferedChildren: function() {
+      if (this._isShown) {
+        _.invoke(this._bufferedChildren, 'triggerMethod', 'before:show');
+      }
+    },
+  
+    _triggerShowBufferedChildren: function() {
+      if (this._isShown) {
+        _.each(this._bufferedChildren, function (child) {
+          if (_.isFunction(child.triggerMethod)) {
+            child.triggerMethod('show');
+          } else {
+            Marionette.triggerMethod.call(child, 'show');
+          }
+        });
+        this._bufferedChildren = [];
+      }
+    },
+  
+    // Configured the initial events that the collection view
+    // binds to.
+    _initialEvents: function() {
+      if (this.collection) {
+        this.listenTo(this.collection, 'add', this._onCollectionAdd);
+        this.listenTo(this.collection, 'remove', this._onCollectionRemove);
+        this.listenTo(this.collection, 'reset', this.render);
+  
+        if (this.sort) {
+          this.listenTo(this.collection, 'sort', this._sortViews);
+        }
+      }
+    },
+  
+    // Handle a child added to the collection
+    _onCollectionAdd: function(child, collection, options) {
+      this.destroyEmptyView();
+      var ChildView = this.getChildView(child);
+      var index = this.collection.indexOf(child);
+      this.addChild(child, ChildView, index);
+    },
+  
+    // get the child view by model it holds, and remove it
+    _onCollectionRemove: function(model) {
+      var view = this.children.findByModel(model);
+      this.removeChildView(view);
+      this.checkEmpty();
+    },
+  
+    // Override from `Marionette.View` to trigger show on child views
+    onShowCalled: function(){
+      this.children.each(function(child){
+        if (_.isFunction(child.triggerMethod)) {
+          child.triggerMethod('show');
+        } else {
+          Marionette.triggerMethod.call(child, 'show');
+        }
+      });
+    },
+  
+    // Render children views. Override this method to
+    // provide your own implementation of a render function for
+    // the collection view.
+    render: function() {
+      this._ensureViewIsIntact();
+      this.triggerMethod('before:render', this);
+      this._renderChildren();
+      this.triggerMethod('render', this);
+      return this;
+    },
+  
+    // Internal method. This checks for any changes in the order of the collection.
+    // If the index of any view doesn't match, it will render.
+    _sortViews: function(){
+      // check for any changes in sort order of views
+      var orderChanged = this.collection.find(function(item, index){
+        var view = this.children.findByModel(item);
+        return view && view._index !== index;
+      }, this);
+  
+      if (orderChanged) {
+        this.render();
+      }
+    },
+  
+    // Internal method. Separated so that CompositeView can have
+    // more control over events being triggered, around the rendering
+    // process
+    _renderChildren: function() {
+      this.startBuffering();
+  
+      this.destroyEmptyView();
+      this.destroyChildren();
+  
+      if (!this.isEmpty(this.collection)) {
+        this.triggerMethod('before:render:collection', this);
+        this.showCollection();
+        this.triggerMethod('render:collection', this);
+      } else {
+        this.showEmptyView();
+      }
+  
+      this.endBuffering();
+    },
+  
+    // Internal method to loop through collection and show each child view.
+    showCollection: function() {
+      var ChildView;
+      this.collection.each(function(child, index) {
+        ChildView = this.getChildView(child);
+        this.addChild(child, ChildView, index);
+      }, this);
+    },
+  
+    // Internal method to show an empty view in place of
+    // a collection of child views, when the collection is empty
+    showEmptyView: function() {
+      var EmptyView = this.getEmptyView();
+  
+      if (EmptyView && !this._showingEmptyView) {
+        this.triggerMethod('before:render:empty');
+  
+        this._showingEmptyView = true;
+        var model = new Backbone.Model();
+        this.addEmptyView(model, EmptyView);
+  
+        this.triggerMethod('render:empty');
+      }
+    },
+  
+    // Internal method to destroy an existing emptyView instance
+    // if one exists. Called when a collection view has been
+    // rendered empty, and then a child is added to the collection.
+    destroyEmptyView: function() {
+      if (this._showingEmptyView) {
+        this.destroyChildren();
+        delete this._showingEmptyView;
+      }
+    },
+  
+    // Retrieve the empty view class
+    getEmptyView: function() {
+      return this.getOption('emptyView');
+    },
+  
+    // Render and show the emptyView. Similar to addChild method
+    // but "child:added" events are not fired, and the event from
+    // emptyView are not forwarded
+    addEmptyView: function(child, EmptyView){
+  
+      // get the emptyViewOptions, falling back to childViewOptions
+      var emptyViewOptions = this.getOption('emptyViewOptions') ||
+                            this.getOption('childViewOptions');
+  
+      if (_.isFunction(emptyViewOptions)){
+        emptyViewOptions = emptyViewOptions.call(this);
+      }
+  
+      // build the empty view
+      var view = this.buildChildView(child, EmptyView, emptyViewOptions);
+  
+      // trigger the 'before:show' event on `view` if the collection view
+      // has already been shown
+      if (this._isShown){
+        this.triggerMethod.call(view, 'before:show');
+      }
+  
+      // Store the `emptyView` like a `childView` so we can properly
+      // remove and/or close it later
+      this.children.add(view);
+  
+      // Render it and show it
+      this.renderChildView(view, -1);
+  
+      // call the 'show' method if the collection view
+      // has already been shown
+      if (this._isShown){
+        this.triggerMethod.call(view, 'show');
+      }
+    },
+  
+    // Retrieve the childView class, either from `this.options.childView`
+    // or from the `childView` in the object definition. The "options"
+    // takes precedence.
+    getChildView: function(child) {
+      var childView = this.getOption('childView');
+  
+      if (!childView) {
+        throwError('A "childView" must be specified', 'NoChildViewError');
+      }
+  
+      return childView;
+    },
+  
+    // Render the child's view and add it to the
+    // HTML for the collection view at a given index.
+    // This will also update the indices of later views in the collection
+    // in order to keep the children in sync with the collection.
+    addChild: function(child, ChildView, index) {
+      var childViewOptions = this.getOption('childViewOptions');
+      if (_.isFunction(childViewOptions)) {
+        childViewOptions = childViewOptions.call(this, child, index);
+      }
+  
+      var view = this.buildChildView(child, ChildView, childViewOptions);
+  
+      // increment indices of views after this one
+      this._updateIndices(view, true, index);
+  
+      this._addChildView(view, index);
+  
+      return view;
+    },
+  
+    // Internal method. This decrements or increments the indices of views after the
+    // added/removed view to keep in sync with the collection.
+    _updateIndices: function(view, increment, index) {
+      if (!this.sort) {
+        return;
+      }
+  
+      if (increment) {
+        // assign the index to the view
+        view._index = index;
+  
+        // increment the index of views after this one
+        this.children.each(function (laterView) {
+          if (laterView._index >= view._index) {
+            laterView._index++;
+          }
+        });
+      }
+      else {
+        // decrement the index of views after this one
+        this.children.each(function (laterView) {
+          if (laterView._index >= view._index) {
+            laterView._index--;
+          }
+        });
+      }
+    },
+  
+  
+    // Internal Method. Add the view to children and render it at
+    // the given index.
+    _addChildView: function(view, index) {
+      // set up the child view event forwarding
+      this.proxyChildEvents(view);
+  
+      this.triggerMethod('before:add:child', view);
+  
+      // Store the child view itself so we can properly
+      // remove and/or destroy it later
+      this.children.add(view);
+      this.renderChildView(view, index);
+  
+      if (this._isShown && !this.isBuffering){
+        if (_.isFunction(view.triggerMethod)) {
+          view.triggerMethod('show');
+        } else {
+          Marionette.triggerMethod.call(view, 'show');
+        }
+      }
+  
+      this.triggerMethod('add:child', view);
+    },
+  
+    // render the child view
+    renderChildView: function(view, index) {
+      view.render();
+      this.attachHtml(this, view, index);
+    },
+  
+    // Build a `childView` for a model in the collection.
+    buildChildView: function(child, ChildViewClass, childViewOptions) {
+      var options = _.extend({model: child}, childViewOptions);
+      return new ChildViewClass(options);
+    },
+  
+    // Remove the child view and destroy it.
+    // This function also updates the indices of
+    // later views in the collection in order to keep
+    // the children in sync with the collection.
+    removeChildView: function(view) {
+  
+      if (view) {
+        this.triggerMethod('before:remove:child', view);
+        // call 'destroy' or 'remove', depending on which is found
+        if (view.destroy) { view.destroy(); }
+        else if (view.remove) { view.remove(); }
+  
+        this.stopListening(view);
+        this.children.remove(view);
+        this.triggerMethod('remove:child', view);
+  
+        // decrement the index of views after this one
+        this._updateIndices(view, false);
+      }
+  
+    },
+  
+    // check if the collection is empty
+    isEmpty: function(collection) {
+      return !this.collection || this.collection.length === 0;
+    },
+  
+    // If empty, show the empty view
+    checkEmpty: function() {
+      if (this.isEmpty(this.collection)) {
+        this.showEmptyView();
+      }
+    },
+  
+    // You might need to override this if you've overridden attachHtml
+    attachBuffer: function(collectionView, buffer) {
+      collectionView.$el.append(buffer);
+    },
+  
+    // Append the HTML to the collection's `el`.
+    // Override this method to do something other
+    // than `.append`.
+    attachHtml: function(collectionView, childView, index) {
+      if (collectionView.isBuffering) {
+        // buffering happens on reset events and initial renders
+        // in order to reduce the number of inserts into the
+        // document, which are expensive.
+        collectionView.elBuffer.appendChild(childView.el);
+        collectionView._bufferedChildren.push(childView);
+      }
+      else {
+        // If we've already rendered the main collection, append
+        // the new child into the correct order if we need to. Otherwise
+        // append to the end.
+        if (!collectionView._insertBefore(childView, index)){
+          collectionView._insertAfter(childView);
+        }
+      }
+    },
+  
+    // Internal method. Check whether we need to insert the view into
+    // the correct position.
+    _insertBefore: function(childView, index) {
+      var currentView;
+      var findPosition = this.sort && (index < this.children.length - 1);
+      if (findPosition) {
+        // Find the view after this one
+        currentView = this.children.find(function (view) {
+          return view._index === index + 1;
+        });
+      }
+  
+      if (currentView) {
+        currentView.$el.before(childView.el);
+        return true;
+      }
+  
+      return false;
+    },
+  
+    // Internal method. Append a view to the end of the $el
+    _insertAfter: function(childView) {
+      this.$el.append(childView.el);
+    },
+  
+    // Internal method to set up the `children` object for
+    // storing all of the child views
+    _initChildViewStorage: function() {
+      this.children = new Backbone.ChildViewContainer();
+    },
+  
+    // Handle cleanup and other destroying needs for the collection of views
+    destroy: function() {
+      if (this.isDestroyed) { return; }
+  
+      this.triggerMethod('before:destroy:collection');
+      this.destroyChildren();
+      this.triggerMethod('destroy:collection');
+  
+      Marionette.View.prototype.destroy.apply(this, arguments);
+    },
+  
+    // Destroy the child views that this collection view
+    // is holding on to, if any
+    destroyChildren: function() {
+      this.children.each(this.removeChildView, this);
+      this.checkEmpty();
+    },
+  
+    // Set up the child view event forwarding. Uses a "childview:"
+    // prefix in front of all forwarded events.
+    proxyChildEvents: function(view) {
+      var prefix = this.getOption('childViewEventPrefix');
+  
+      // Forward all child view events through the parent,
+      // prepending "childview:" to the event name
+      this.listenTo(view, 'all', function() {
+        var args = Array.prototype.slice.call(arguments);
+        var rootEvent = args[0];
+        var childEvents = this.normalizeMethods(_.result(this, 'childEvents'));
+  
+        args[0] = prefix + ':' + rootEvent;
+        args.splice(1, 0, view);
+  
+        // call collectionView childEvent if defined
+        if (typeof childEvents !== 'undefined' && _.isFunction(childEvents[rootEvent])) {
+          childEvents[rootEvent].apply(this, args.slice(1));
+        }
+  
+        this.triggerMethod.apply(this, args);
+      }, this);
+    }
+  });
+  
+  /* jshint maxstatements: 17, maxlen: 117 */
+  
+  // Composite View
+  // --------------
+  
+  // Used for rendering a branch-leaf, hierarchical structure.
+  // Extends directly from CollectionView and also renders an
+  // a child view as `modelView`, for the top leaf
+  Marionette.CompositeView = Marionette.CollectionView.extend({
+  
+    // Setting up the inheritance chain which allows changes to
+    // Marionette.CollectionView.prototype.constructor which allows overriding
+    // option to pass '{sort: false}' to prevent the CompositeView from
+    // maintaining the sorted order of the collection.
+    // This will fallback onto appending childView's to the end.
+    constructor: function() {
+      Marionette.CollectionView.apply(this, arguments);
+    },
+  
+    // Configured the initial events that the composite view
+    // binds to. Override this method to prevent the initial
+    // events, or to add your own initial events.
+    _initialEvents: function() {
+  
+      // Bind only after composite view is rendered to avoid adding child views
+      // to nonexistent childViewContainer
+      this.once('render', function() {
+        if (this.collection) {
+          this.listenTo(this.collection, 'add', this._onCollectionAdd);
+          this.listenTo(this.collection, 'remove', this._onCollectionRemove);
+          this.listenTo(this.collection, 'reset', this._renderChildren);
+  
+          if (this.sort) {
+            this.listenTo(this.collection, 'sort', this._sortViews);
+          }
+        }
+      });
+  
+    },
+  
+    // Retrieve the `childView` to be used when rendering each of
+    // the items in the collection. The default is to return
+    // `this.childView` or Marionette.CompositeView if no `childView`
+    // has been defined
+    getChildView: function(child) {
+      var childView = this.getOption('childView') || this.constructor;
+  
+      if (!childView) {
+        throwError('A "childView" must be specified', 'NoChildViewError');
+      }
+  
+      return childView;
+    },
+  
+    // Serialize the collection for the view.
+    // You can override the `serializeData` method in your own view
+    // definition, to provide custom serialization for your view's data.
+    serializeData: function() {
+      var data = {};
+  
+      if (this.model) {
+        data = this.model.toJSON();
+      }
+  
+      return data;
+    },
+  
+    // Renders the model once, and the collection once. Calling
+    // this again will tell the model's view to re-render itself
+    // but the collection will not re-render.
+    render: function() {
+      this._ensureViewIsIntact();
+      this.isRendered = true;
+      this.resetChildViewContainer();
+  
+      this.triggerMethod('before:render', this);
+  
+      this._renderRoot();
+      this._renderChildren();
+  
+      this.triggerMethod('render', this);
+      return this;
+    },
+  
+    _renderChildren: function() {
+      if (this.isRendered) {
+        Marionette.CollectionView.prototype._renderChildren.call(this);
+      }
+    },
+  
+    // Render the root template that the children
+    // views are appended to
+    _renderRoot: function() {
+      var data = {};
+      data = this.serializeData();
+      data = this.mixinTemplateHelpers(data);
+  
+      this.triggerMethod('before:render:template');
+  
+      var template = this.getTemplate();
+      var html = Marionette.Renderer.render(template, data);
+      this.attachElContent(html);
+  
+      // the ui bindings is done here and not at the end of render since they
+      // will not be available until after the model is rendered, but should be
+      // available before the collection is rendered.
+      this.bindUIElements();
+      this.triggerMethod('render:template');
+    },
+  
+    // Attaches the content of the root.
+    // This method can be overriden to optimize rendering,
+    // or to render in a non standard way.
+    //
+    // For example, using `innerHTML` instead of `$el.html`
+    //
+    // ```js
+    // attachElContent: function(html) {
+    //   this.el.innerHTML = html;
+    //   return this;
+    // }
+    // ```
+    attachElContent: function(html) {
+      this.$el.html(html);
+  
+      return this;
+    },
+  
+    // You might need to override this if you've overridden attachHtml
+    attachBuffer: function(compositeView, buffer) {
+      var $container = this.getChildViewContainer(compositeView);
+      $container.append(buffer);
+    },
+  
+    // Internal method. Append a view to the end of the $el.
+    // Overidden from CollectionView to ensure view is appended to
+    // childViewContainer
+    _insertAfter: function (childView) {
+      var $container = this.getChildViewContainer(this);
+      $container.append(childView.el);
+    },
+  
+    // Internal method to ensure an `$childViewContainer` exists, for the
+    // `attachHtml` method to use.
+    getChildViewContainer: function(containerView) {
+      if ('$childViewContainer' in containerView) {
+        return containerView.$childViewContainer;
+      }
+  
+      var container;
+      var childViewContainer = Marionette.getOption(containerView, 'childViewContainer');
+      if (childViewContainer) {
+  
+        var selector = _.isFunction(childViewContainer) ? childViewContainer.call(containerView) : childViewContainer;
+  
+        if (selector.charAt(0) === '@' && containerView.ui) {
+          container = containerView.ui[selector.substr(4)];
+        } else {
+          container = containerView.$(selector);
+        }
+  
+        if (container.length <= 0) {
+          throwError('The specified "childViewContainer" was not found: ' +
+            containerView.childViewContainer, 'ChildViewContainerMissingError');
+        }
+  
+      } else {
+        container = containerView.$el;
+      }
+  
+      containerView.$childViewContainer = container;
+      return container;
+    },
+  
+    // Internal method to reset the `$childViewContainer` on render
+    resetChildViewContainer: function() {
+      if (this.$childViewContainer) {
+        delete this.$childViewContainer;
+      }
+    }
+  });
+  
+  // LayoutView
+  // ----------
+  
+  // Used for managing application layoutViews, nested layoutViews and
+  // multiple regions within an application or sub-application.
+  //
+  // A specialized view class that renders an area of HTML and then
+  // attaches `Region` instances to the specified `regions`.
+  // Used for composite view management and sub-application areas.
+  Marionette.LayoutView = Marionette.ItemView.extend({
+    regionClass: Marionette.Region,
+  
+    // Ensure the regions are available when the `initialize` method
+    // is called.
+    constructor: function(options) {
+      options = options || {};
+  
+      this._firstRender = true;
+      this._initializeRegions(options);
+  
+      Marionette.ItemView.call(this, options);
+    },
+  
+    // LayoutView's render will use the existing region objects the
+    // first time it is called. Subsequent calls will destroy the
+    // views that the regions are showing and then reset the `el`
+    // for the regions to the newly rendered DOM elements.
+    render: function() {
+      this._ensureViewIsIntact();
+  
+      if (this._firstRender) {
+        // if this is the first render, don't do anything to
+        // reset the regions
+        this._firstRender = false;
+      } else {
+        // If this is not the first render call, then we need to
+        // re-initialize the `el` for each region
+        this._reInitializeRegions();
+      }
+  
+      return Marionette.ItemView.prototype.render.apply(this, arguments);
+    },
+  
+    // Handle destroying regions, and then destroy the view itself.
+    destroy: function() {
+      if (this.isDestroyed) { return; }
+  
+      this.regionManager.destroy();
+      Marionette.ItemView.prototype.destroy.apply(this, arguments);
+    },
+  
+    // Add a single region, by name, to the layoutView
+    addRegion: function(name, definition) {
+      this.triggerMethod('before:region:add', name);
+      var regions = {};
+      regions[name] = definition;
+      return this._buildRegions(regions)[name];
+    },
+  
+    // Add multiple regions as a {name: definition, name2: def2} object literal
+    addRegions: function(regions) {
+      this.regions = _.extend({}, this.regions, regions);
+      return this._buildRegions(regions);
+    },
+  
+    // Remove a single region from the LayoutView, by name
+    removeRegion: function(name) {
+      this.triggerMethod('before:region:remove', name);
+      delete this.regions[name];
+      return this.regionManager.removeRegion(name);
+    },
+  
+    // Provides alternative access to regions
+    // Accepts the region name
+    // getRegion('main')
+    getRegion: function(region) {
+      return this.regionManager.get(region);
+    },
+  
+    // Get all regions
+    getRegions: function(){
+      return this.regionManager.getRegions();
+    },
+  
+    // internal method to build regions
+    _buildRegions: function(regions) {
+      var that = this;
+  
+      var defaults = {
+        regionClass: this.getOption('regionClass'),
+        parentEl: function() { return that.$el; }
+      };
+  
+      return this.regionManager.addRegions(regions, defaults);
+    },
+  
+    // Internal method to initialize the regions that have been defined in a
+    // `regions` attribute on this layoutView.
+    _initializeRegions: function(options) {
+      var regions;
+      this._initRegionManager();
+  
+      if (_.isFunction(this.regions)) {
+        regions = this.regions(options);
+      } else {
+        regions = this.regions || {};
+      }
+  
+      // Enable users to define `regions` as instance options.
+      var regionOptions = this.getOption.call(options, 'regions');
+  
+      // enable region options to be a function
+      if (_.isFunction(regionOptions)) {
+        regionOptions = regionOptions.call(this, options);
+      }
+  
+      _.extend(regions, regionOptions);
+  
+      this.addRegions(regions);
+    },
+  
+    // Internal method to re-initialize all of the regions by updating the `el` that
+    // they point to
+    _reInitializeRegions: function() {
+      this.regionManager.emptyRegions();
+      this.regionManager.each(function(region) {
+        region.reset();
+      });
+    },
+  
+    // Enable easy overiding of the default `RegionManager`
+    // for customized region interactions and buisness specific
+    // view logic for better control over single regions.
+    getRegionManager: function() {
+      return new Marionette.RegionManager();
+    },
+  
+    // Internal method to initialize the region manager
+    // and all regions in it
+    _initRegionManager: function() {
+      this.regionManager = this.getRegionManager();
+  
+      this.listenTo(this.regionManager, 'before:add:region', function(name) {
+        this.triggerMethod('before:add:region', name);
+      });
+  
+      this.listenTo(this.regionManager, 'add:region', function(name, region) {
+        this[name] = region;
+        this.triggerMethod('add:region', name, region);
+      });
+  
+      this.listenTo(this.regionManager, 'before:remove:region', function(name) {
+        this.triggerMethod('before:remove:region', name);
+      });
+  
+      this.listenTo(this.regionManager, 'remove:region', function(name, region) {
+        delete this[name];
+        this.triggerMethod('remove:region', name, region);
+      });
+    }
+  });
+  
+
+  // Behavior
+  // -----------
+  
+  // A Behavior is an isolated set of DOM /
+  // user interactions that can be mixed into any View.
+  // Behaviors allow you to blackbox View specific interactions
+  // into portable logical chunks, keeping your views simple and your code DRY.
+  
+  Marionette.Behavior = (function(_, Backbone) {
+    function Behavior(options, view) {
+      // Setup reference to the view.
+      // this comes in handle when a behavior
+      // wants to directly talk up the chain
+      // to the view.
+      this.view = view;
+      this.defaults = _.result(this, 'defaults') || {};
+      this.options  = _.extend({}, this.defaults, options);
+  
+      // proxy behavior $ method to the view
+      // this is useful for doing jquery DOM lookups
+      // scoped to behaviors view.
+      this.$ = function() {
+        return this.view.$.apply(this.view, arguments);
+      };
+  
+      // Call the initialize method passing
+      // the arguments from the instance constructor
+      this.initialize.apply(this, arguments);
+    }
+  
+    _.extend(Behavior.prototype, Backbone.Events, {
+      initialize: function() {},
+  
+      // stopListening to behavior `onListen` events.
+      destroy: function() {
+        this.stopListening();
+      },
+  
+      // import the `triggerMethod` to trigger events with corresponding
+      // methods if the method exists
+      triggerMethod: Marionette.triggerMethod,
+  
+      // Proxy `getOption` to enable getting options from this or this.options by name.
+      getOption: Marionette.proxyGetOption,
+  
+      // Proxy `unbindEntityEvents` to enable binding view's events from another entity.
+      bindEntityEvents: Marionette.proxyBindEntityEvents,
+  
+      // Proxy `unbindEntityEvents` to enable unbinding view's events from another entity.
+      unbindEntityEvents: Marionette.proxyUnbindEntityEvents
+    });
+  
+    // Borrow Backbones extend implementation
+    // this allows us to setup a proper
+    // inheritence pattern that follow in suite
+    // with the rest of Marionette views.
+    Behavior.extend = Marionette.extend;
+  
+    return Behavior;
+  })(_, Backbone);
+  
+  /* jshint maxlen: 143, nonew: false */
+  // Marionette.Behaviors
+  // --------
+  
+  // Behaviors is a utility class that takes care of
+  // glueing your behavior instances to their given View.
+  // The most important part of this class is that you
+  // **MUST** override the class level behaviorsLookup
+  // method for things to work properly.
+  
+  Marionette.Behaviors = (function(Marionette, _) {
+  
+    function Behaviors(view, behaviors) {
+      // Behaviors defined on a view can be a flat object literal
+      // or it can be a function that returns an object.
+      behaviors = Behaviors.parseBehaviors(view, behaviors || _.result(view, 'behaviors'));
+  
+      // Wraps several of the view's methods
+      // calling the methods first on each behavior
+      // and then eventually calling the method on the view.
+      Behaviors.wrap(view, behaviors, [
+        'bindUIElements', 'unbindUIElements',
+        'delegateEvents', 'undelegateEvents',
+        'behaviorEvents', 'triggerMethod',
+        'setElement', 'destroy'
+      ]);
+    }
+  
+    var methods = {
+      setElement: function(setElement, behaviors) {
+        setElement.apply(this, _.tail(arguments, 2));
+  
+        // proxy behavior $el to the view's $el.
+        // This is needed because a view's $el proxy
+        // is not set until after setElement is called.
+        _.each(behaviors, function(b) {
+          b.$el = this.$el;
+        }, this);
+      },
+  
+      destroy: function(destroy, behaviors) {
+        var args = _.tail(arguments, 2);
+        destroy.apply(this, args);
+  
+        // Call destroy on each behavior after
+        // destroying the view.
+        // This unbinds event listeners
+        // that behaviors have registerd for.
+        _.invoke(behaviors, 'destroy', args);
+      },
+  
+      bindUIElements: function(bindUIElements, behaviors) {
+        bindUIElements.apply(this);
+        _.invoke(behaviors, bindUIElements);
+      },
+  
+      unbindUIElements: function(unbindUIElements, behaviors) {
+        unbindUIElements.apply(this);
+        _.invoke(behaviors, unbindUIElements);
+      },
+  
+      triggerMethod: function(triggerMethod, behaviors) {
+        var args = _.tail(arguments, 2);
+        triggerMethod.apply(this, args);
+  
+        _.each(behaviors, function(b) {
+          triggerMethod.apply(b, args);
+        });
+      },
+  
+      delegateEvents: function(delegateEvents, behaviors) {
+        var args = _.tail(arguments, 2);
+        delegateEvents.apply(this, args);
+  
+        _.each(behaviors, function(b) {
+          Marionette.bindEntityEvents(b, this.model, Marionette.getOption(b, 'modelEvents'));
+          Marionette.bindEntityEvents(b, this.collection, Marionette.getOption(b, 'collectionEvents'));
+        }, this);
+      },
+  
+      undelegateEvents: function(undelegateEvents, behaviors) {
+        var args = _.tail(arguments, 2);
+        undelegateEvents.apply(this, args);
+  
+        _.each(behaviors, function(b) {
+          Marionette.unbindEntityEvents(b, this.model, Marionette.getOption(b, 'modelEvents'));
+          Marionette.unbindEntityEvents(b, this.collection, Marionette.getOption(b, 'collectionEvents'));
+        }, this);
+      },
+  
+      behaviorEvents: function(behaviorEvents, behaviors) {
+        var _behaviorsEvents = {};
+        var viewUI = _.result(this, 'ui');
+  
+        _.each(behaviors, function(b, i) {
+          var _events = {};
+          var behaviorEvents = _.clone(_.result(b, 'events')) || {};
+          var behaviorUI = _.result(b, 'ui');
+  
+          // Construct an internal UI hash first using
+          // the views UI hash and then the behaviors UI hash.
+          // This allows the user to use UI hash elements
+          // defined in the parent view as well as those
+          // defined in the given behavior.
+          var ui = _.extend({}, viewUI, behaviorUI);
+  
+          // Normalize behavior events hash to allow
+          // a user to use the @ui. syntax.
+          behaviorEvents = Marionette.normalizeUIKeys(behaviorEvents, ui);
+  
+          _.each(_.keys(behaviorEvents), function(key) {
+            // Append white-space at the end of each key to prevent behavior key collisions.
+            // This is relying on the fact that backbone events considers "click .foo" the same as
+            // "click .foo ".
+  
+            // +2 is used because new Array(1) or 0 is "" and not " "
+            var whitespace = (new Array(i + 2)).join(' ');
+            var eventKey   = key + whitespace;
+            var handler    = _.isFunction(behaviorEvents[key]) ? behaviorEvents[key] : b[behaviorEvents[key]];
+  
+            _events[eventKey] = _.bind(handler, b);
+          });
+  
+          _behaviorsEvents = _.extend(_behaviorsEvents, _events);
+        });
+  
+        return _behaviorsEvents;
+      }
+    };
+  
+    _.extend(Behaviors, {
+  
+      // Placeholder method to be extended by the user.
+      // The method should define the object that stores the behaviors.
+      // i.e.
+      //
+      // ```js
+      // Marionette.Behaviors.behaviorsLookup: function() {
+      //   return App.Behaviors
+      // }
+      // ```
+      behaviorsLookup: function() {
+        throw new Error('You must define where your behaviors are stored.' +
+          'See https://github.com/marionettejs/backbone.marionette' +
+          '/blob/master/docs/marionette.behaviors.md#behaviorslookup');
+      },
+  
+      // Takes care of getting the behavior class
+      // given options and a key.
+      // If a user passes in options.behaviorClass
+      // default to using that. Otherwise delegate
+      // the lookup to the users `behaviorsLookup` implementation.
+      getBehaviorClass: function(options, key) {
+        if (options.behaviorClass) {
+          return options.behaviorClass;
+        }
+  
+        // Get behavior class can be either a flat object or a method
+        return _.isFunction(Behaviors.behaviorsLookup) ? Behaviors.behaviorsLookup.apply(this, arguments)[key] : Behaviors.behaviorsLookup[key];
+      },
+  
+      // Iterate over the behaviors object, for each behavior
+      // instantiate it and get its grouped behaviors.
+      parseBehaviors: function(view, behaviors) {
+        return _.chain(behaviors).map(function(options, key) {
+          var BehaviorClass = Behaviors.getBehaviorClass(options, key);
+  
+          var behavior = new BehaviorClass(options, view);
+          var nestedBehaviors = Behaviors.parseBehaviors(view, _.result(behavior, 'behaviors'));
+  
+          return [behavior].concat(nestedBehaviors);
+        }).flatten().value();
+      },
+  
+      // Wrap view internal methods so that they delegate to behaviors. For example,
+      // `onDestroy` should trigger destroy on all of the behaviors and then destroy itself.
+      // i.e.
+      //
+      // `view.delegateEvents = _.partial(methods.delegateEvents, view.delegateEvents, behaviors);`
+      wrap: function(view, behaviors, methodNames) {
+        _.each(methodNames, function(methodName) {
+          view[methodName] = _.partial(methods[methodName], view[methodName], behaviors);
+        });
+      }
+    });
+  
+    return Behaviors;
+  
+  })(Marionette, _);
+  
+
+  // AppRouter
+  // ---------
+  
+  // Reduce the boilerplate code of handling route events
+  // and then calling a single method on another object.
+  // Have your routers configured to call the method on
+  // your object, directly.
+  //
+  // Configure an AppRouter with `appRoutes`.
+  //
+  // App routers can only take one `controller` object.
+  // It is recommended that you divide your controller
+  // objects in to smaller pieces of related functionality
+  // and have multiple routers / controllers, instead of
+  // just one giant router and controller.
+  //
+  // You can also add standard routes to an AppRouter.
+  
+  Marionette.AppRouter = Backbone.Router.extend({
+  
+    constructor: function(options) {
+      Backbone.Router.apply(this, arguments);
+  
+      this.options = options || {};
+  
+      var appRoutes = this.getOption('appRoutes');
+      var controller = this._getController();
+      this.processAppRoutes(controller, appRoutes);
+      this.on('route', this._processOnRoute, this);
+    },
+  
+    // Similar to route method on a Backbone Router but
+    // method is called on the controller
+    appRoute: function(route, methodName) {
+      var controller = this._getController();
+      this._addAppRoute(controller, route, methodName);
+    },
+  
+    // process the route event and trigger the onRoute
+    // method call, if it exists
+    _processOnRoute: function(routeName, routeArgs) {
+      // find the path that matched
+      var routePath = _.invert(this.appRoutes)[routeName];
+  
+      // make sure an onRoute is there, and call it
+      if (_.isFunction(this.onRoute)) {
+        this.onRoute(routeName, routePath, routeArgs);
+      }
+    },
+  
+    // Internal method to process the `appRoutes` for the
+    // router, and turn them in to routes that trigger the
+    // specified method on the specified `controller`.
+    processAppRoutes: function(controller, appRoutes) {
+      if (!appRoutes) { return; }
+  
+      var routeNames = _.keys(appRoutes).reverse(); // Backbone requires reverted order of routes
+  
+      _.each(routeNames, function(route) {
+        this._addAppRoute(controller, route, appRoutes[route]);
+      }, this);
+    },
+  
+    _getController: function() {
+      return this.getOption('controller');
+    },
+  
+    _addAppRoute: function(controller, route, methodName) {
+      var method = controller[methodName];
+  
+      if (!method) {
+        throwError('Method "' + methodName + '" was not found on the controller');
+      }
+  
+      this.route(route, methodName, _.bind(method, controller));
+    },
+  
+    // Proxy `getOption` to enable getting options from this or this.options by name.
+    getOption: Marionette.proxyGetOption
+  });
+  
+  // Application
+  // -----------
+  
+  // Contain and manage the composite application as a whole.
+  // Stores and starts up `Region` objects, includes an
+  // event aggregator as `app.vent`
+  Marionette.Application = function(options) {
+    this._initRegionManager();
+    this._initCallbacks = new Marionette.Callbacks();
+    var globalCh = Backbone.Wreqr.radio.channel('global');
+    this.vent = globalCh.vent;
+    this.commands = globalCh.commands;
+    this.reqres = globalCh.reqres;
+    this.submodules = {};
+  
+    _.extend(this, options);
+  };
+  
+  _.extend(Marionette.Application.prototype, Backbone.Events, {
+    // Command execution, facilitated by Backbone.Wreqr.Commands
+    execute: function() {
+      this.commands.execute.apply(this.commands, arguments);
+    },
+  
+    // Request/response, facilitated by Backbone.Wreqr.RequestResponse
+    request: function() {
+      return this.reqres.request.apply(this.reqres, arguments);
+    },
+  
+    // Add an initializer that is either run at when the `start`
+    // method is called, or run immediately if added after `start`
+    // has already been called.
+    addInitializer: function(initializer) {
+      this._initCallbacks.add(initializer);
+    },
+  
+    // kick off all of the application's processes.
+    // initializes all of the regions that have been added
+    // to the app, and runs all of the initializer functions
+    start: function(options) {
+      this.triggerMethod('before:start', options);
+      this._initCallbacks.run(options, this);
+      this.triggerMethod('start', options);
+    },
+  
+    // Add regions to your app.
+    // Accepts a hash of named strings or Region objects
+    // addRegions({something: "#someRegion"})
+    // addRegions({something: Region.extend({el: "#someRegion"}) });
+    addRegions: function(regions) {
+      return this._regionManager.addRegions(regions);
+    },
+  
+    // Empty all regions in the app, without removing them
+    emptyRegions: function() {
+      this._regionManager.emptyRegions();
+    },
+  
+    // Removes a region from your app, by name
+    // Accepts the regions name
+    // removeRegion('myRegion')
+    removeRegion: function(region) {
+      this._regionManager.removeRegion(region);
+    },
+  
+    // Provides alternative access to regions
+    // Accepts the region name
+    // getRegion('main')
+    getRegion: function(region) {
+      return this._regionManager.get(region);
+    },
+  
+    // Get all the regions from the region manager
+    getRegions: function(){
+      return this._regionManager.getRegions();
+    },
+  
+    // Create a module, attached to the application
+    module: function(moduleNames, moduleDefinition) {
+  
+      // Overwrite the module class if the user specifies one
+      var ModuleClass = Marionette.Module.getClass(moduleDefinition);
+  
+      // slice the args, and add this application object as the
+      // first argument of the array
+      var args = slice.call(arguments);
+      args.unshift(this);
+  
+      // see the Marionette.Module object for more information
+      return ModuleClass.create.apply(ModuleClass, args);
+    },
+  
+    // Internal method to set up the region manager
+    _initRegionManager: function() {
+      this._regionManager = new Marionette.RegionManager();
+  
+      this.listenTo(this._regionManager, 'before:add:region', function(name) {
+        this.triggerMethod('before:add:region', name);
+      });
+  
+      this.listenTo(this._regionManager, 'add:region', function(name, region) {
+        this[name] = region;
+        this.triggerMethod('add:region', name, region);
+      });
+  
+      this.listenTo(this._regionManager, 'before:remove:region', function(name) {
+        this.triggerMethod('before:remove:region', name);
+      });
+  
+      this.listenTo(this._regionManager, 'remove:region', function(name, region) {
+        delete this[name];
+        this.triggerMethod('remove:region', name, region);
+      });
+    },
+  
+    // import the `triggerMethod` to trigger events with corresponding
+    // methods if the method exists
+    triggerMethod: Marionette.triggerMethod
+  });
+  
+  // Copy the `extend` function used by Backbone's classes
+  Marionette.Application.extend = Marionette.extend;
+  
+  /* jshint maxparams: 9 */
+  
+  // Module
+  // ------
+  
+  // A simple module system, used to create privacy and encapsulation in
+  // Marionette applications
+  Marionette.Module = function(moduleName, app, options) {
+    this.moduleName = moduleName;
+    this.options = _.extend({}, this.options, options);
+    // Allow for a user to overide the initialize
+    // for a given module instance.
+    this.initialize = options.initialize || this.initialize;
+  
+    // Set up an internal store for sub-modules.
+    this.submodules = {};
+  
+    this._setupInitializersAndFinalizers();
+  
+    // Set an internal reference to the app
+    // within a module.
+    this.app = app;
+  
+    // By default modules start with their parents.
+    this.startWithParent = true;
+  
+    if (_.isFunction(this.initialize)) {
+      this.initialize(moduleName, app, this.options);
+    }
+  };
+  
+  Marionette.Module.extend = Marionette.extend;
+  
+  // Extend the Module prototype with events / listenTo, so that the module
+  // can be used as an event aggregator or pub/sub.
+  _.extend(Marionette.Module.prototype, Backbone.Events, {
+  
+    // Initialize is an empty function by default. Override it with your own
+    // initialization logic when extending Marionette.Module.
+    initialize: function() {},
+  
+    // Initializer for a specific module. Initializers are run when the
+    // module's `start` method is called.
+    addInitializer: function(callback) {
+      this._initializerCallbacks.add(callback);
+    },
+  
+    // Finalizers are run when a module is stopped. They are used to teardown
+    // and finalize any variables, references, events and other code that the
+    // module had set up.
+    addFinalizer: function(callback) {
+      this._finalizerCallbacks.add(callback);
+    },
+  
+    // Start the module, and run all of its initializers
+    start: function(options) {
+      // Prevent re-starting a module that is already started
+      if (this._isInitialized) { return; }
+  
+      // start the sub-modules (depth-first hierarchy)
+      _.each(this.submodules, function(mod) {
+        // check to see if we should start the sub-module with this parent
+        if (mod.startWithParent) {
+          mod.start(options);
+        }
+      });
+  
+      // run the callbacks to "start" the current module
+      this.triggerMethod('before:start', options);
+  
+      this._initializerCallbacks.run(options, this);
+      this._isInitialized = true;
+  
+      this.triggerMethod('start', options);
+    },
+  
+    // Stop this module by running its finalizers and then stop all of
+    // the sub-modules for this module
+    stop: function() {
+      // if we are not initialized, don't bother finalizing
+      if (!this._isInitialized) { return; }
+      this._isInitialized = false;
+  
+      this.triggerMethod('before:stop');
+  
+      // stop the sub-modules; depth-first, to make sure the
+      // sub-modules are stopped / finalized before parents
+      _.each(this.submodules, function(mod) { mod.stop(); });
+  
+      // run the finalizers
+      this._finalizerCallbacks.run(undefined, this);
+  
+      // reset the initializers and finalizers
+      this._initializerCallbacks.reset();
+      this._finalizerCallbacks.reset();
+  
+      this.triggerMethod('stop');
+    },
+  
+    // Configure the module with a definition function and any custom args
+    // that are to be passed in to the definition function
+    addDefinition: function(moduleDefinition, customArgs) {
+      this._runModuleDefinition(moduleDefinition, customArgs);
+    },
+  
+    // Internal method: run the module definition function with the correct
+    // arguments
+    _runModuleDefinition: function(definition, customArgs) {
+      // If there is no definition short circut the method.
+      if (!definition) { return; }
+  
+      // build the correct list of arguments for the module definition
+      var args = _.flatten([
+        this,
+        this.app,
+        Backbone,
+        Marionette,
+        Backbone.$, _,
+        customArgs
+      ]);
+  
+      definition.apply(this, args);
+    },
+  
+    // Internal method: set up new copies of initializers and finalizers.
+    // Calling this method will wipe out all existing initializers and
+    // finalizers.
+    _setupInitializersAndFinalizers: function() {
+      this._initializerCallbacks = new Marionette.Callbacks();
+      this._finalizerCallbacks = new Marionette.Callbacks();
+    },
+  
+    // import the `triggerMethod` to trigger events with corresponding
+    // methods if the method exists
+    triggerMethod: Marionette.triggerMethod
+  });
+  
+  // Class methods to create modules
+  _.extend(Marionette.Module, {
+  
+    // Create a module, hanging off the app parameter as the parent object.
+    create: function(app, moduleNames, moduleDefinition) {
+      var module = app;
+  
+      // get the custom args passed in after the module definition and
+      // get rid of the module name and definition function
+      var customArgs = slice.call(arguments);
+      customArgs.splice(0, 3);
+  
+      // Split the module names and get the number of submodules.
+      // i.e. an example module name of `Doge.Wow.Amaze` would
+      // then have the potential for 3 module definitions.
+      moduleNames = moduleNames.split('.');
+      var length = moduleNames.length;
+  
+      // store the module definition for the last module in the chain
+      var moduleDefinitions = [];
+      moduleDefinitions[length - 1] = moduleDefinition;
+  
+      // Loop through all the parts of the module definition
+      _.each(moduleNames, function(moduleName, i) {
+        var parentModule = module;
+        module = this._getModule(parentModule, moduleName, app, moduleDefinition);
+        this._addModuleDefinition(parentModule, module, moduleDefinitions[i], customArgs);
+      }, this);
+  
+      // Return the last module in the definition chain
+      return module;
+    },
+  
+    _getModule: function(parentModule, moduleName, app, def, args) {
+      var options = _.extend({}, def);
+      var ModuleClass = this.getClass(def);
+  
+      // Get an existing module of this name if we have one
+      var module = parentModule[moduleName];
+  
+      if (!module) {
+        // Create a new module if we don't have one
+        module = new ModuleClass(moduleName, app, options);
+        parentModule[moduleName] = module;
+        // store the module on the parent
+        parentModule.submodules[moduleName] = module;
+      }
+  
+      return module;
+    },
+  
+    // ## Module Classes
+    //
+    // Module classes can be used as an alternative to the define pattern.
+    // The extend function of a Module is identical to the extend functions
+    // on other Backbone and Marionette classes.
+    // This allows module lifecyle events like `onStart` and `onStop` to be called directly.
+    getClass: function(moduleDefinition) {
+      var ModuleClass = Marionette.Module;
+  
+      if (!moduleDefinition) {
+        return ModuleClass;
+      }
+  
+      // If all of the module's functionality is defined inside its class,
+      // then the class can be passed in directly. `MyApp.module("Foo", FooModule)`.
+      if (moduleDefinition.prototype instanceof ModuleClass) {
+        return moduleDefinition;
+      }
+  
+      return moduleDefinition.moduleClass || ModuleClass;
+    },
+  
+    // Add the module definition and add a startWithParent initializer function.
+    // This is complicated because module definitions are heavily overloaded
+    // and support an anonymous function, module class, or options object
+    _addModuleDefinition: function(parentModule, module, def, args) {
+      var fn = this._getDefine(def);
+      var startWithParent = this._getStartWithParent(def, module);
+  
+      if (fn) {
+        module.addDefinition(fn, args);
+      }
+  
+      this._addStartWithParent(parentModule, module, startWithParent);
+    },
+  
+    _getStartWithParent: function(def, module) {
+      var swp;
+  
+      if (_.isFunction(def) && (def.prototype instanceof Marionette.Module)) {
+        swp = module.constructor.prototype.startWithParent;
+        return _.isUndefined(swp) ? true : swp;
+      }
+  
+      if (_.isObject(def)) {
+        swp = def.startWithParent;
+        return _.isUndefined(swp) ? true : swp;
+      }
+  
+      return true;
+    },
+  
+    _getDefine: function(def) {
+      if (_.isFunction(def) && !(def.prototype instanceof Marionette.Module)) {
+        return def;
+      }
+  
+      if (_.isObject(def)) {
+        return def.define;
+      }
+  
+      return null;
+    },
+  
+    _addStartWithParent: function(parentModule, module, startWithParent) {
+      module.startWithParent = module.startWithParent && startWithParent;
+  
+      if (!module.startWithParent || !!module.startWithParentIsConfigured) {
+        return;
+      }
+  
+      module.startWithParentIsConfigured = true;
+  
+      parentModule.addInitializer(function(options) {
+        if (module.startWithParent) {
+          module.start(options);
+        }
+      });
+    }
+  });
+  
+
+  return Marionette;
+}));
diff --git a/planetstack/core/xoslib/static/js/vendor/backbone.marionette.min.js b/planetstack/core/xoslib/static/js/vendor/backbone.marionette.min.js
new file mode 100644 (file)
index 0000000..29fe58c
--- /dev/null
@@ -0,0 +1,2 @@
+!function(a,b){if("function"==typeof define&&define.amd)define(["backbone","underscore","backbone.wreqr","backbone.babysitter"],function(c,d){return a.Marionette=b(a,c,d)});else if("undefined"!=typeof exports){{var c=require("backbone"),d=require("underscore");require("backbone.wreqr"),require("backbone.babysitter")}module.exports=b(a,c,d)}else a.Marionette=b(a,a.Backbone,a._)}(this,function(a,b,c){"use strict";function d(a,b){var c=new Error(a);throw c.name=b||"Error",c}var e=a.Marionette,f=b.Marionette={};f.VERSION="2.0.1",f.noConflict=function(){return a.Marionette=e,this},f.Deferred=b.$.Deferred;var g=Array.prototype.slice;return f.extend=b.Model.extend,f.getOption=function(a,b){if(a&&b){var c;return c=a.options&&void 0!==a.options[b]?a.options[b]:a[b]}},f.proxyGetOption=function(a){return f.getOption(this,a)},f.normalizeMethods=function(a){var b,d={};return c.each(a,function(a,e){b=a,c.isFunction(b)||(b=this[b]),b&&(d[e]=b)},this),d},f.normalizeUIKeys=function(a,b){return"undefined"!=typeof a?(c.each(c.keys(a),function(c){var d=/@ui.[a-zA-Z_$0-9]*/g;c.match(d)&&(a[c.replace(d,function(a){return b[a.slice(4)]})]=a[c],delete a[c])}),a):void 0},f.actAsCollection=function(a,b){var d=["forEach","each","map","find","detect","filter","select","reject","every","all","some","any","include","contains","invoke","toArray","first","initial","rest","last","without","isEmpty","pluck"];c.each(d,function(d){a[d]=function(){var a=c.values(c.result(this,b)),e=[a].concat(c.toArray(arguments));return c[d].apply(c,e)}})},f.triggerMethod=function(){function a(a,b,c){return c.toUpperCase()}var b=/(^|:)(\w)/gi,d=function(d){var e,f="on"+d.replace(b,a),g=this[f];return c.isFunction(g)&&(e=g.apply(this,c.tail(arguments))),c.isFunction(this.trigger)&&this.trigger.apply(this,arguments),e};return d}(),f.MonitorDOMRefresh=function(a){function b(a){a._isShown=!0,e(a)}function d(a){a._isRendered=!0,e(a)}function e(a){a._isShown&&a._isRendered&&f(a)&&c.isFunction(a.triggerMethod)&&a.triggerMethod("dom:refresh")}function f(b){return a.contains(b.el)}return function(a){a.listenTo(a,"show",function(){b(a)}),a.listenTo(a,"render",function(){d(a)})}}(document.documentElement),function(a){function b(a,b,e,f){var g=f.split(/\s+/);c.each(g,function(c){var f=a[c];f||d('Method "'+c+'" was configured as an event handler, but does not exist.'),a.listenTo(b,e,f)})}function e(a,b,c,d){a.listenTo(b,c,d)}function f(a,b,d,e){var f=e.split(/\s+/);c.each(f,function(c){var e=a[c];a.stopListening(b,d,e)})}function g(a,b,c,d){a.stopListening(b,c,d)}function h(a,b,d,e,f){b&&d&&(c.isFunction(d)&&(d=d.call(a)),c.each(d,function(d,g){c.isFunction(d)?e(a,b,g,d):f(a,b,g,d)}))}a.bindEntityEvents=function(a,c,d){h(a,c,d,e,b)},a.unbindEntityEvents=function(a,b,c){h(a,b,c,g,f)},a.proxyBindEntityEvents=function(b,c){return a.bindEntityEvents(this,b,c)},a.proxyUnbindEntityEvents=function(b,c){return a.unbindEntityEvents(this,b,c)}}(f),f.Callbacks=function(){this._deferred=f.Deferred(),this._callbacks=[]},c.extend(f.Callbacks.prototype,{add:function(a,b){var d=c.result(this._deferred,"promise");this._callbacks.push({cb:a,ctx:b}),d.then(function(c){b&&(c.context=b),a.call(c.context,c.options)})},run:function(a,b){this._deferred.resolve({options:a,context:b})},reset:function(){var a=this._callbacks;this._deferred=f.Deferred(),this._callbacks=[],c.each(a,function(a){this.add(a.cb,a.ctx)},this)}}),f.Controller=function(a){this.triggerMethod=f.triggerMethod,this.options=a||{},c.isFunction(this.initialize)&&this.initialize(this.options)},f.Controller.extend=f.extend,c.extend(f.Controller.prototype,b.Events,{destroy:function(){var a=Array.prototype.slice.call(arguments);this.triggerMethod.apply(this,["before:destroy"].concat(a)),this.triggerMethod.apply(this,["destroy"].concat(a)),this.stopListening(),this.off()},triggerMethod:f.triggerMethod,getOption:f.proxyGetOption}),f.Region=function(a){if(this.options=a||{},this.el=this.getOption("el"),this.el=this.el instanceof b.$?this.el[0]:this.el,this.el||d('An "el" must be specified for a region.',"NoElError"),this.$el=this.getEl(this.el),this.initialize){var c=Array.prototype.slice.apply(arguments);this.initialize.apply(this,c)}},c.extend(f.Region,{buildRegion:function(a,e){var f=c.isString(a),g=c.isString(a.selector),h=c.isUndefined(a.regionClass),i=c.isFunction(a);i||f||g||d("Region must be specified as a Region class,a selector string or an object with selector property");var j,k;f&&(j=a),a.selector&&(j=a.selector,delete a.selector),i&&(k=a),!i&&h&&(k=e),a.regionClass&&(k=a.regionClass,delete a.regionClass),(f||i)&&(a={}),a.el=j;var l=new k(a);return a.parentEl&&(l.getEl=function(d){if(c.isObject(d))return b.$(d);var e=a.parentEl;return c.isFunction(e)&&(e=e()),e.find(d)}),l}}),c.extend(f.Region.prototype,b.Events,{show:function(a,b){this._ensureElement();var d=b||{},e=a!==this.currentView,f=!!d.preventDestroy,g=!!d.forceShow,h=!!this.currentView,i=!f&&e;i&&this.empty();var j=e||g;return j?(a.render(),h&&this.triggerMethod("before:swap",a),this.triggerMethod("before:show",a),this.triggerMethod.call(a,"before:show"),this.attachHtml(a),this.currentView=a,h&&this.triggerMethod("swap",a),this.triggerMethod("show",a),c.isFunction(a.triggerMethod)?a.triggerMethod("show"):this.triggerMethod.call(a,"show"),this):this},_ensureElement:function(){c.isObject(this.el)||(this.$el=this.getEl(this.el),this.el=this.$el[0]),this.$el&&0!==this.$el.length||d('An "el" '+this.$el.selector+" must exist in DOM")},getEl:function(a){return b.$(a)},attachHtml:function(a){this.el.innerHTML="",this.el.appendChild(a.el)},empty:function(){var a=this.currentView;a&&!a.isDestroyed&&(this.triggerMethod("before:empty",a),a.destroy?a.destroy():a.remove&&a.remove(),this.triggerMethod("empty",a),delete this.currentView)},attachView:function(a){this.currentView=a},reset:function(){this.empty(),this.$el&&(this.el=this.$el.selector),delete this.$el},getOption:f.proxyGetOption,triggerMethod:f.triggerMethod}),f.Region.extend=f.extend,f.RegionManager=function(a){var b=a.Controller.extend({constructor:function(b){this._regions={},a.Controller.call(this,b)},addRegions:function(a,b){var d={};return c.each(a,function(a,e){c.isString(a)&&(a={selector:a}),a.selector&&(a=c.defaults({},a,b));var f=this.addRegion(e,a);d[e]=f},this),d},addRegion:function(b,d){var e,f=c.isObject(d),g=c.isString(d),h=!!d.selector;return e=g||f&&h?a.Region.buildRegion(d,a.Region):c.isFunction(d)?a.Region.buildRegion(d,a.Region):d,this.triggerMethod("before:add:region",b,e),this._store(b,e),this.triggerMethod("add:region",b,e),e},get:function(a){return this._regions[a]},getRegions:function(){return c.clone(this._regions)},removeRegion:function(a){var b=this._regions[a];this._remove(a,b)},removeRegions:function(){c.each(this._regions,function(a,b){this._remove(b,a)},this)},emptyRegions:function(){c.each(this._regions,function(a){a.empty()},this)},destroy:function(){this.removeRegions(),a.Controller.prototype.destroy.apply(this,arguments)},_store:function(a,b){this._regions[a]=b,this._setLength()},_remove:function(a,b){this.triggerMethod("before:remove:region",a,b),b.empty(),b.stopListening(),delete this._regions[a],this._setLength(),this.triggerMethod("remove:region",a,b)},_setLength:function(){this.length=c.size(this._regions)}});return a.actAsCollection(b.prototype,"_regions"),b}(f),f.TemplateCache=function(a){this.templateId=a},c.extend(f.TemplateCache,{templateCaches:{},get:function(a){var b=this.templateCaches[a];return b||(b=new f.TemplateCache(a),this.templateCaches[a]=b),b.load()},clear:function(){var a,b=g.call(arguments),c=b.length;if(c>0)for(a=0;c>a;a++)delete this.templateCaches[b[a]];else this.templateCaches={}}}),c.extend(f.TemplateCache.prototype,{load:function(){if(this.compiledTemplate)return this.compiledTemplate;var a=this.loadTemplate(this.templateId);return this.compiledTemplate=this.compileTemplate(a),this.compiledTemplate},loadTemplate:function(a){var c=b.$(a).html();return c&&0!==c.length||d('Could not find template: "'+a+'"',"NoTemplateError"),c},compileTemplate:function(a){return c.template(a)}}),f.Renderer={render:function(a,b){a||d("Cannot render the template since its false, null or undefined.","TemplateNotFoundError");var c;return(c="function"==typeof a?a:f.TemplateCache.get(a))(b)}},f.View=b.View.extend({constructor:function(a){c.bindAll(this,"render"),this.options=c.extend({},c.result(this,"options"),c.isFunction(a)?a.call(this):a),this.events=this.normalizeUIKeys(c.result(this,"events")),c.isObject(this.behaviors)&&new f.Behaviors(this),b.View.apply(this,arguments),f.MonitorDOMRefresh(this),this.listenTo(this,"show",this.onShowCalled)},getTemplate:function(){return this.getOption("template")},mixinTemplateHelpers:function(a){a=a||{};var b=this.getOption("templateHelpers");return c.isFunction(b)&&(b=b.call(this)),c.extend(a,b)},normalizeUIKeys:function(a){var b=c.result(this,"ui"),d=c.result(this,"_uiBindings");return f.normalizeUIKeys(a,d||b)},configureTriggers:function(){if(this.triggers){var a={},b=this.normalizeUIKeys(c.result(this,"triggers"));return c.each(b,function(b,d){var e=c.isObject(b),f=e?b.event:b;a[d]=function(a){if(a){var c=a.preventDefault,d=a.stopPropagation,g=e?b.preventDefault:c,h=e?b.stopPropagation:d;g&&c&&c.apply(a),h&&d&&d.apply(a)}var i={view:this,model:this.model,collection:this.collection};this.triggerMethod(f,i)}},this),a}},delegateEvents:function(a){this._delegateDOMEvents(a),this.bindEntityEvents(this.model,this.getOption("modelEvents")),this.bindEntityEvents(this.collection,this.getOption("collectionEvents"))},_delegateDOMEvents:function(a){a=a||this.events,c.isFunction(a)&&(a=a.call(this)),a=this.normalizeUIKeys(a);var d={},e=c.result(this,"behaviorEvents")||{},f=this.configureTriggers();c.extend(d,e,a,f),b.View.prototype.delegateEvents.call(this,d)},undelegateEvents:function(){var a=Array.prototype.slice.call(arguments);b.View.prototype.undelegateEvents.apply(this,a),this.unbindEntityEvents(this.model,this.getOption("modelEvents")),this.unbindEntityEvents(this.collection,this.getOption("collectionEvents"))},onShowCalled:function(){},_ensureViewIsIntact:function(){if(this.isDestroyed){var a=new Error("Cannot use a view thats already been destroyed.");throw a.name="ViewDestroyedError",a}},destroy:function(){if(!this.isDestroyed){var a=Array.prototype.slice.call(arguments);this.triggerMethod.apply(this,["before:destroy"].concat(a)),this.isDestroyed=!0,this.triggerMethod.apply(this,["destroy"].concat(a)),this.unbindUIElements(),this.remove()}},bindUIElements:function(){if(this.ui){this._uiBindings||(this._uiBindings=this.ui);var a=c.result(this,"_uiBindings");this.ui={},c.each(c.keys(a),function(b){var c=a[b];this.ui[b]=this.$(c)},this)}},unbindUIElements:function(){this.ui&&this._uiBindings&&(c.each(this.ui,function(a,b){delete this.ui[b]},this),this.ui=this._uiBindings,delete this._uiBindings)},triggerMethod:f.triggerMethod,normalizeMethods:f.normalizeMethods,getOption:f.proxyGetOption,bindEntityEvents:f.proxyBindEntityEvents,unbindEntityEvents:f.proxyUnbindEntityEvents}),f.ItemView=f.View.extend({constructor:function(){f.View.apply(this,arguments)},serializeData:function(){var a={};return this.model?a=this.model.toJSON():this.collection&&(a={items:this.collection.toJSON()}),a},render:function(){this._ensureViewIsIntact(),this.triggerMethod("before:render",this);var a=this.serializeData();a=this.mixinTemplateHelpers(a);var b=this.getTemplate(),c=f.Renderer.render(b,a);return this.attachElContent(c),this.bindUIElements(),this.triggerMethod("render",this),this},attachElContent:function(a){return this.$el.html(a),this},destroy:function(){this.isDestroyed||f.View.prototype.destroy.apply(this,arguments)}}),f.CollectionView=f.View.extend({childViewEventPrefix:"childview",constructor:function(a){var b=a||{};this.sort=c.isUndefined(b.sort)?!0:b.sort,this._initChildViewStorage(),f.View.apply(this,arguments),this._initialEvents(),this.initRenderBuffer()},initRenderBuffer:function(){this.elBuffer=document.createDocumentFragment(),this._bufferedChildren=[]},startBuffering:function(){this.initRenderBuffer(),this.isBuffering=!0},endBuffering:function(){this.isBuffering=!1,this._triggerBeforeShowBufferedChildren(),this.attachBuffer(this,this.elBuffer),this._triggerShowBufferedChildren(),this.initRenderBuffer()},_triggerBeforeShowBufferedChildren:function(){this._isShown&&c.invoke(this._bufferedChildren,"triggerMethod","before:show")},_triggerShowBufferedChildren:function(){this._isShown&&(c.each(this._bufferedChildren,function(a){c.isFunction(a.triggerMethod)?a.triggerMethod("show"):f.triggerMethod.call(a,"show")}),this._bufferedChildren=[])},_initialEvents:function(){this.collection&&(this.listenTo(this.collection,"add",this._onCollectionAdd),this.listenTo(this.collection,"remove",this._onCollectionRemove),this.listenTo(this.collection,"reset",this.render),this.sort&&this.listenTo(this.collection,"sort",this._sortViews))},_onCollectionAdd:function(a){this.destroyEmptyView();var b=this.getChildView(a),c=this.collection.indexOf(a);this.addChild(a,b,c)},_onCollectionRemove:function(a){var b=this.children.findByModel(a);this.removeChildView(b),this.checkEmpty()},onShowCalled:function(){this.children.each(function(a){c.isFunction(a.triggerMethod)?a.triggerMethod("show"):f.triggerMethod.call(a,"show")})},render:function(){return this._ensureViewIsIntact(),this.triggerMethod("before:render",this),this._renderChildren(),this.triggerMethod("render",this),this},_sortViews:function(){var a=this.collection.find(function(a,b){var c=this.children.findByModel(a);return c&&c._index!==b},this);a&&this.render()},_renderChildren:function(){this.startBuffering(),this.destroyEmptyView(),this.destroyChildren(),this.isEmpty(this.collection)?this.showEmptyView():(this.triggerMethod("before:render:collection",this),this.showCollection(),this.triggerMethod("render:collection",this)),this.endBuffering()},showCollection:function(){var a;this.collection.each(function(b,c){a=this.getChildView(b),this.addChild(b,a,c)},this)},showEmptyView:function(){var a=this.getEmptyView();if(a&&!this._showingEmptyView){this.triggerMethod("before:render:empty"),this._showingEmptyView=!0;var c=new b.Model;this.addEmptyView(c,a),this.triggerMethod("render:empty")}},destroyEmptyView:function(){this._showingEmptyView&&(this.destroyChildren(),delete this._showingEmptyView)},getEmptyView:function(){return this.getOption("emptyView")},addEmptyView:function(a,b){var d=this.getOption("emptyViewOptions")||this.getOption("childViewOptions");c.isFunction(d)&&(d=d.call(this));var e=this.buildChildView(a,b,d);this._isShown&&this.triggerMethod.call(e,"before:show"),this.children.add(e),this.renderChildView(e,-1),this._isShown&&this.triggerMethod.call(e,"show")},getChildView:function(){var a=this.getOption("childView");return a||d('A "childView" must be specified',"NoChildViewError"),a},addChild:function(a,b,d){var e=this.getOption("childViewOptions");c.isFunction(e)&&(e=e.call(this,a,d));var f=this.buildChildView(a,b,e);return this._updateIndices(f,!0,d),this._addChildView(f,d),f},_updateIndices:function(a,b,c){this.sort&&(b?(a._index=c,this.children.each(function(b){b._index>=a._index&&b._index++})):this.children.each(function(b){b._index>=a._index&&b._index--}))},_addChildView:function(a,b){this.proxyChildEvents(a),this.triggerMethod("before:add:child",a),this.children.add(a),this.renderChildView(a,b),this._isShown&&!this.isBuffering&&(c.isFunction(a.triggerMethod)?a.triggerMethod("show"):f.triggerMethod.call(a,"show")),this.triggerMethod("add:child",a)},renderChildView:function(a,b){a.render(),this.attachHtml(this,a,b)},buildChildView:function(a,b,d){var e=c.extend({model:a},d);return new b(e)},removeChildView:function(a){a&&(this.triggerMethod("before:remove:child",a),a.destroy?a.destroy():a.remove&&a.remove(),this.stopListening(a),this.children.remove(a),this.triggerMethod("remove:child",a),this._updateIndices(a,!1))},isEmpty:function(){return!this.collection||0===this.collection.length},checkEmpty:function(){this.isEmpty(this.collection)&&this.showEmptyView()},attachBuffer:function(a,b){a.$el.append(b)},attachHtml:function(a,b,c){a.isBuffering?(a.elBuffer.appendChild(b.el),a._bufferedChildren.push(b)):a._insertBefore(b,c)||a._insertAfter(b)},_insertBefore:function(a,b){var c,d=this.sort&&b<this.children.length-1;return d&&(c=this.children.find(function(a){return a._index===b+1})),c?(c.$el.before(a.el),!0):!1},_insertAfter:function(a){this.$el.append(a.el)},_initChildViewStorage:function(){this.children=new b.ChildViewContainer},destroy:function(){this.isDestroyed||(this.triggerMethod("before:destroy:collection"),this.destroyChildren(),this.triggerMethod("destroy:collection"),f.View.prototype.destroy.apply(this,arguments))},destroyChildren:function(){this.children.each(this.removeChildView,this),this.checkEmpty()},proxyChildEvents:function(a){var b=this.getOption("childViewEventPrefix");this.listenTo(a,"all",function(){var d=Array.prototype.slice.call(arguments),e=d[0],f=this.normalizeMethods(c.result(this,"childEvents"));d[0]=b+":"+e,d.splice(1,0,a),"undefined"!=typeof f&&c.isFunction(f[e])&&f[e].apply(this,d.slice(1)),this.triggerMethod.apply(this,d)},this)}}),f.CompositeView=f.CollectionView.extend({constructor:function(){f.CollectionView.apply(this,arguments)},_initialEvents:function(){this.once("render",function(){this.collection&&(this.listenTo(this.collection,"add",this._onCollectionAdd),this.listenTo(this.collection,"remove",this._onCollectionRemove),this.listenTo(this.collection,"reset",this._renderChildren),this.sort&&this.listenTo(this.collection,"sort",this._sortViews))})},getChildView:function(){var a=this.getOption("childView")||this.constructor;return a||d('A "childView" must be specified',"NoChildViewError"),a},serializeData:function(){var a={};return this.model&&(a=this.model.toJSON()),a},render:function(){return this._ensureViewIsIntact(),this.isRendered=!0,this.resetChildViewContainer(),this.triggerMethod("before:render",this),this._renderRoot(),this._renderChildren(),this.triggerMethod("render",this),this},_renderChildren:function(){this.isRendered&&f.CollectionView.prototype._renderChildren.call(this)},_renderRoot:function(){var a={};a=this.serializeData(),a=this.mixinTemplateHelpers(a),this.triggerMethod("before:render:template");var b=this.getTemplate(),c=f.Renderer.render(b,a);this.attachElContent(c),this.bindUIElements(),this.triggerMethod("render:template")},attachElContent:function(a){return this.$el.html(a),this},attachBuffer:function(a,b){var c=this.getChildViewContainer(a);c.append(b)},_insertAfter:function(a){var b=this.getChildViewContainer(this);b.append(a.el)},getChildViewContainer:function(a){if("$childViewContainer"in a)return a.$childViewContainer;var b,e=f.getOption(a,"childViewContainer");if(e){var g=c.isFunction(e)?e.call(a):e;b="@"===g.charAt(0)&&a.ui?a.ui[g.substr(4)]:a.$(g),b.length<=0&&d('The specified "childViewContainer" was not found: '+a.childViewContainer,"ChildViewContainerMissingError")}else b=a.$el;return a.$childViewContainer=b,b},resetChildViewContainer:function(){this.$childViewContainer&&delete this.$childViewContainer}}),f.LayoutView=f.ItemView.extend({regionClass:f.Region,constructor:function(a){a=a||{},this._firstRender=!0,this._initializeRegions(a),f.ItemView.call(this,a)},render:function(){return this._ensureViewIsIntact(),this._firstRender?this._firstRender=!1:this._reInitializeRegions(),f.ItemView.prototype.render.apply(this,arguments)},destroy:function(){this.isDestroyed||(this.regionManager.destroy(),f.ItemView.prototype.destroy.apply(this,arguments))},addRegion:function(a,b){this.triggerMethod("before:region:add",a);var c={};return c[a]=b,this._buildRegions(c)[a]},addRegions:function(a){return this.regions=c.extend({},this.regions,a),this._buildRegions(a)},removeRegion:function(a){return this.triggerMethod("before:region:remove",a),delete this.regions[a],this.regionManager.removeRegion(a)},getRegion:function(a){return this.regionManager.get(a)},getRegions:function(){return this.regionManager.getRegions()},_buildRegions:function(a){var b=this,c={regionClass:this.getOption("regionClass"),parentEl:function(){return b.$el}};return this.regionManager.addRegions(a,c)},_initializeRegions:function(a){var b;this._initRegionManager(),b=c.isFunction(this.regions)?this.regions(a):this.regions||{};var d=this.getOption.call(a,"regions");c.isFunction(d)&&(d=d.call(this,a)),c.extend(b,d),this.addRegions(b)},_reInitializeRegions:function(){this.regionManager.emptyRegions(),this.regionManager.each(function(a){a.reset()})},getRegionManager:function(){return new f.RegionManager},_initRegionManager:function(){this.regionManager=this.getRegionManager(),this.listenTo(this.regionManager,"before:add:region",function(a){this.triggerMethod("before:add:region",a)}),this.listenTo(this.regionManager,"add:region",function(a,b){this[a]=b,this.triggerMethod("add:region",a,b)}),this.listenTo(this.regionManager,"before:remove:region",function(a){this.triggerMethod("before:remove:region",a)}),this.listenTo(this.regionManager,"remove:region",function(a,b){delete this[a],this.triggerMethod("remove:region",a,b)})}}),f.Behavior=function(a,b){function c(b,c){this.view=c,this.defaults=a.result(this,"defaults")||{},this.options=a.extend({},this.defaults,b),this.$=function(){return this.view.$.apply(this.view,arguments)},this.initialize.apply(this,arguments)}return a.extend(c.prototype,b.Events,{initialize:function(){},destroy:function(){this.stopListening()},triggerMethod:f.triggerMethod,getOption:f.proxyGetOption,bindEntityEvents:f.proxyBindEntityEvents,unbindEntityEvents:f.proxyUnbindEntityEvents}),c.extend=f.extend,c}(c,b),f.Behaviors=function(a,b){function c(a,d){d=c.parseBehaviors(a,d||b.result(a,"behaviors")),c.wrap(a,d,["bindUIElements","unbindUIElements","delegateEvents","undelegateEvents","behaviorEvents","triggerMethod","setElement","destroy"])}var d={setElement:function(a,c){a.apply(this,b.tail(arguments,2)),b.each(c,function(a){a.$el=this.$el},this)},destroy:function(a,c){var d=b.tail(arguments,2);a.apply(this,d),b.invoke(c,"destroy",d)},bindUIElements:function(a,c){a.apply(this),b.invoke(c,a)},unbindUIElements:function(a,c){a.apply(this),b.invoke(c,a)},triggerMethod:function(a,c){var d=b.tail(arguments,2);a.apply(this,d),b.each(c,function(b){a.apply(b,d)})},delegateEvents:function(c,d){var e=b.tail(arguments,2);c.apply(this,e),b.each(d,function(b){a.bindEntityEvents(b,this.model,a.getOption(b,"modelEvents")),a.bindEntityEvents(b,this.collection,a.getOption(b,"collectionEvents"))},this)},undelegateEvents:function(c,d){var e=b.tail(arguments,2);c.apply(this,e),b.each(d,function(b){a.unbindEntityEvents(b,this.model,a.getOption(b,"modelEvents")),a.unbindEntityEvents(b,this.collection,a.getOption(b,"collectionEvents"))},this)},behaviorEvents:function(c,d){var e={},f=b.result(this,"ui");return b.each(d,function(c,d){var g={},h=b.clone(b.result(c,"events"))||{},i=b.result(c,"ui"),j=b.extend({},f,i);h=a.normalizeUIKeys(h,j),b.each(b.keys(h),function(a){var e=new Array(d+2).join(" "),f=a+e,i=b.isFunction(h[a])?h[a]:c[h[a]];g[f]=b.bind(i,c)}),e=b.extend(e,g)}),e}};return b.extend(c,{behaviorsLookup:function(){throw new Error("You must define where your behaviors are stored.See https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.behaviors.md#behaviorslookup")},getBehaviorClass:function(a,d){return a.behaviorClass?a.behaviorClass:b.isFunction(c.behaviorsLookup)?c.behaviorsLookup.apply(this,arguments)[d]:c.behaviorsLookup[d]},parseBehaviors:function(a,d){return b.chain(d).map(function(d,e){var f=c.getBehaviorClass(d,e),g=new f(d,a),h=c.parseBehaviors(a,b.result(g,"behaviors"));return[g].concat(h)}).flatten().value()},wrap:function(a,c,e){b.each(e,function(e){a[e]=b.partial(d[e],a[e],c)})}}),c}(f,c),f.AppRouter=b.Router.extend({constructor:function(a){b.Router.apply(this,arguments),this.options=a||{};var c=this.getOption("appRoutes"),d=this._getController();this.processAppRoutes(d,c),this.on("route",this._processOnRoute,this)},appRoute:function(a,b){var c=this._getController();this._addAppRoute(c,a,b)},_processOnRoute:function(a,b){var d=c.invert(this.appRoutes)[a];c.isFunction(this.onRoute)&&this.onRoute(a,d,b)},processAppRoutes:function(a,b){if(b){var d=c.keys(b).reverse();c.each(d,function(c){this._addAppRoute(a,c,b[c])},this)}},_getController:function(){return this.getOption("controller")},_addAppRoute:function(a,b,e){var f=a[e];f||d('Method "'+e+'" was not found on the controller'),this.route(b,e,c.bind(f,a))},getOption:f.proxyGetOption}),f.Application=function(a){this._initRegionManager(),this._initCallbacks=new f.Callbacks;var d=b.Wreqr.radio.channel("global");this.vent=d.vent,this.commands=d.commands,this.reqres=d.reqres,this.submodules={},c.extend(this,a)},c.extend(f.Application.prototype,b.Events,{execute:function(){this.commands.execute.apply(this.commands,arguments)},request:function(){return this.reqres.request.apply(this.reqres,arguments)},addInitializer:function(a){this._initCallbacks.add(a)},start:function(a){this.triggerMethod("before:start",a),this._initCallbacks.run(a,this),this.triggerMethod("start",a)},addRegions:function(a){return this._regionManager.addRegions(a)},emptyRegions:function(){this._regionManager.emptyRegions()},removeRegion:function(a){this._regionManager.removeRegion(a)},getRegion:function(a){return this._regionManager.get(a)},getRegions:function(){return this._regionManager.getRegions()},module:function(a,b){var c=f.Module.getClass(b),d=g.call(arguments);return d.unshift(this),c.create.apply(c,d)},_initRegionManager:function(){this._regionManager=new f.RegionManager,this.listenTo(this._regionManager,"before:add:region",function(a){this.triggerMethod("before:add:region",a)}),this.listenTo(this._regionManager,"add:region",function(a,b){this[a]=b,this.triggerMethod("add:region",a,b)}),this.listenTo(this._regionManager,"before:remove:region",function(a){this.triggerMethod("before:remove:region",a)}),this.listenTo(this._regionManager,"remove:region",function(a,b){delete this[a],this.triggerMethod("remove:region",a,b)})},triggerMethod:f.triggerMethod}),f.Application.extend=f.extend,f.Module=function(a,b,d){this.moduleName=a,this.options=c.extend({},this.options,d),this.initialize=d.initialize||this.initialize,this.submodules={},this._setupInitializersAndFinalizers(),this.app=b,this.startWithParent=!0,c.isFunction(this.initialize)&&this.initialize(a,b,this.options)},f.Module.extend=f.extend,c.extend(f.Module.prototype,b.Events,{initialize:function(){},addInitializer:function(a){this._initializerCallbacks.add(a)},addFinalizer:function(a){this._finalizerCallbacks.add(a)},start:function(a){this._isInitialized||(c.each(this.submodules,function(b){b.startWithParent&&b.start(a)}),this.triggerMethod("before:start",a),this._initializerCallbacks.run(a,this),this._isInitialized=!0,this.triggerMethod("start",a))},stop:function(){this._isInitialized&&(this._isInitialized=!1,this.triggerMethod("before:stop"),c.each(this.submodules,function(a){a.stop()}),this._finalizerCallbacks.run(void 0,this),this._initializerCallbacks.reset(),this._finalizerCallbacks.reset(),this.triggerMethod("stop"))},addDefinition:function(a,b){this._runModuleDefinition(a,b)},_runModuleDefinition:function(a,d){if(a){var e=c.flatten([this,this.app,b,f,b.$,c,d]);a.apply(this,e)}},_setupInitializersAndFinalizers:function(){this._initializerCallbacks=new f.Callbacks,this._finalizerCallbacks=new f.Callbacks},triggerMethod:f.triggerMethod}),c.extend(f.Module,{create:function(a,b,d){var e=a,f=g.call(arguments);f.splice(0,3),b=b.split(".");var h=b.length,i=[];return i[h-1]=d,c.each(b,function(b,c){var g=e;e=this._getModule(g,b,a,d),this._addModuleDefinition(g,e,i[c],f)},this),e},_getModule:function(a,b,d,e){var f=c.extend({},e),g=this.getClass(e),h=a[b];return h||(h=new g(b,d,f),a[b]=h,a.submodules[b]=h),h},getClass:function(a){var b=f.Module;return a?a.prototype instanceof b?a:a.moduleClass||b:b},_addModuleDefinition:function(a,b,c,d){var e=this._getDefine(c),f=this._getStartWithParent(c,b);e&&b.addDefinition(e,d),this._addStartWithParent(a,b,f)},_getStartWithParent:function(a,b){var d;return c.isFunction(a)&&a.prototype instanceof f.Module?(d=b.constructor.prototype.startWithParent,c.isUndefined(d)?!0:d):c.isObject(a)?(d=a.startWithParent,c.isUndefined(d)?!0:d):!0},_getDefine:function(a){return!c.isFunction(a)||a.prototype instanceof f.Module?c.isObject(a)?a.define:null:a},_addStartWithParent:function(a,b,c){b.startWithParent=b.startWithParent&&c,b.startWithParent&&!b.startWithParentIsConfigured&&(b.startWithParentIsConfigured=!0,a.addInitializer(function(a){b.startWithParent&&b.start(a)}))}}),f});
+//# sourceMappingURL=backbone.marionette.map
\ No newline at end of file
diff --git a/planetstack/core/xoslib/static/js/vendor/backbone.wreqr.js b/planetstack/core/xoslib/static/js/vendor/backbone.wreqr.js
new file mode 100644 (file)
index 0000000..66de72f
--- /dev/null
@@ -0,0 +1,440 @@
+// Backbone.Wreqr (Backbone.Marionette)
+// ----------------------------------
+// v1.3.1
+//
+// Copyright (c)2014 Derick Bailey, Muted Solutions, LLC.
+// Distributed under MIT license
+//
+// http://github.com/marionettejs/backbone.wreqr
+
+
+(function(root, factory) {
+
+  if (typeof define === 'function' && define.amd) {
+    define(['backbone', 'underscore'], function(Backbone, _) {
+      return factory(Backbone, _);
+    });
+  } else if (typeof exports !== 'undefined') {
+    var Backbone = require('backbone');
+    var _ = require('underscore');
+    module.exports = factory(Backbone, _);
+  } else {
+    factory(root.Backbone, root._);
+  }
+
+}(this, function(Backbone, _) {
+  "use strict";
+
+  var previousWreqr = Backbone.Wreqr;
+
+  var Wreqr = Backbone.Wreqr = {};
+
+  Backbone.Wreqr.VERSION = '1.3.1';
+
+  Backbone.Wreqr.noConflict = function () {
+    Backbone.Wreqr = previousWreqr;
+    return this;
+  };
+
+  // Handlers
+  // --------
+  // A registry of functions to call, given a name
+  
+  Wreqr.Handlers = (function(Backbone, _){
+    "use strict";
+    
+    // Constructor
+    // -----------
+  
+    var Handlers = function(options){
+      this.options = options;
+      this._wreqrHandlers = {};
+      
+      if (_.isFunction(this.initialize)){
+        this.initialize(options);
+      }
+    };
+  
+    Handlers.extend = Backbone.Model.extend;
+  
+    // Instance Members
+    // ----------------
+  
+    _.extend(Handlers.prototype, Backbone.Events, {
+  
+      // Add multiple handlers using an object literal configuration
+      setHandlers: function(handlers){
+        _.each(handlers, function(handler, name){
+          var context = null;
+  
+          if (_.isObject(handler) && !_.isFunction(handler)){
+            context = handler.context;
+            handler = handler.callback;
+          }
+  
+          this.setHandler(name, handler, context);
+        }, this);
+      },
+  
+      // Add a handler for the given name, with an
+      // optional context to run the handler within
+      setHandler: function(name, handler, context){
+        var config = {
+          callback: handler,
+          context: context
+        };
+  
+        this._wreqrHandlers[name] = config;
+  
+        this.trigger("handler:add", name, handler, context);
+      },
+  
+      // Determine whether or not a handler is registered
+      hasHandler: function(name){
+        return !! this._wreqrHandlers[name];
+      },
+  
+      // Get the currently registered handler for
+      // the specified name. Throws an exception if
+      // no handler is found.
+      getHandler: function(name){
+        var config = this._wreqrHandlers[name];
+  
+        if (!config){
+          return;
+        }
+  
+        return function(){
+          var args = Array.prototype.slice.apply(arguments);
+          return config.callback.apply(config.context, args);
+        };
+      },
+  
+      // Remove a handler for the specified name
+      removeHandler: function(name){
+        delete this._wreqrHandlers[name];
+      },
+  
+      // Remove all handlers from this registry
+      removeAllHandlers: function(){
+        this._wreqrHandlers = {};
+      }
+    });
+  
+    return Handlers;
+  })(Backbone, _);
+  
+  // Wreqr.CommandStorage
+  // --------------------
+  //
+  // Store and retrieve commands for execution.
+  Wreqr.CommandStorage = (function(){
+    "use strict";
+  
+    // Constructor function
+    var CommandStorage = function(options){
+      this.options = options;
+      this._commands = {};
+  
+      if (_.isFunction(this.initialize)){
+        this.initialize(options);
+      }
+    };
+  
+    // Instance methods
+    _.extend(CommandStorage.prototype, Backbone.Events, {
+  
+      // Get an object literal by command name, that contains
+      // the `commandName` and the `instances` of all commands
+      // represented as an array of arguments to process
+      getCommands: function(commandName){
+        var commands = this._commands[commandName];
+  
+        // we don't have it, so add it
+        if (!commands){
+  
+          // build the configuration
+          commands = {
+            command: commandName, 
+            instances: []
+          };
+  
+          // store it
+          this._commands[commandName] = commands;
+        }
+  
+        return commands;
+      },
+  
+      // Add a command by name, to the storage and store the
+      // args for the command
+      addCommand: function(commandName, args){
+        var command = this.getCommands(commandName);
+        command.instances.push(args);
+      },
+  
+      // Clear all commands for the given `commandName`
+      clearCommands: function(commandName){
+        var command = this.getCommands(commandName);
+        command.instances = [];
+      }
+    });
+  
+    return CommandStorage;
+  })();
+  
+  // Wreqr.Commands
+  // --------------
+  //
+  // A simple command pattern implementation. Register a command
+  // handler and execute it.
+  Wreqr.Commands = (function(Wreqr){
+    "use strict";
+  
+    return Wreqr.Handlers.extend({
+      // default storage type
+      storageType: Wreqr.CommandStorage,
+  
+      constructor: function(options){
+        this.options = options || {};
+  
+        this._initializeStorage(this.options);
+        this.on("handler:add", this._executeCommands, this);
+  
+        var args = Array.prototype.slice.call(arguments);
+        Wreqr.Handlers.prototype.constructor.apply(this, args);
+      },
+  
+      // Execute a named command with the supplied args
+      execute: function(name, args){
+        name = arguments[0];
+        args = Array.prototype.slice.call(arguments, 1);
+  
+        if (this.hasHandler(name)){
+          this.getHandler(name).apply(this, args);
+        } else {
+          this.storage.addCommand(name, args);
+        }
+  
+      },
+  
+      // Internal method to handle bulk execution of stored commands
+      _executeCommands: function(name, handler, context){
+        var command = this.storage.getCommands(name);
+  
+        // loop through and execute all the stored command instances
+        _.each(command.instances, function(args){
+          handler.apply(context, args);
+        });
+  
+        this.storage.clearCommands(name);
+      },
+  
+      // Internal method to initialize storage either from the type's
+      // `storageType` or the instance `options.storageType`.
+      _initializeStorage: function(options){
+        var storage;
+  
+        var StorageType = options.storageType || this.storageType;
+        if (_.isFunction(StorageType)){
+          storage = new StorageType();
+        } else {
+          storage = StorageType;
+        }
+  
+        this.storage = storage;
+      }
+    });
+  
+  })(Wreqr);
+  
+  // Wreqr.RequestResponse
+  // ---------------------
+  //
+  // A simple request/response implementation. Register a
+  // request handler, and return a response from it
+  Wreqr.RequestResponse = (function(Wreqr){
+    "use strict";
+  
+    return Wreqr.Handlers.extend({
+      request: function(){
+        var name = arguments[0];
+        var args = Array.prototype.slice.call(arguments, 1);
+        if (this.hasHandler(name)) {
+          return this.getHandler(name).apply(this, args);
+        }
+      }
+    });
+  
+  })(Wreqr);
+  
+  // Event Aggregator
+  // ----------------
+  // A pub-sub object that can be used to decouple various parts
+  // of an application through event-driven architecture.
+  
+  Wreqr.EventAggregator = (function(Backbone, _){
+    "use strict";
+    var EA = function(){};
+  
+    // Copy the `extend` function used by Backbone's classes
+    EA.extend = Backbone.Model.extend;
+  
+    // Copy the basic Backbone.Events on to the event aggregator
+    _.extend(EA.prototype, Backbone.Events);
+  
+    return EA;
+  })(Backbone, _);
+  
+  // Wreqr.Channel
+  // --------------
+  //
+  // An object that wraps the three messaging systems:
+  // EventAggregator, RequestResponse, Commands
+  Wreqr.Channel = (function(Wreqr){
+    "use strict";
+  
+    var Channel = function(channelName) {
+      this.vent        = new Backbone.Wreqr.EventAggregator();
+      this.reqres      = new Backbone.Wreqr.RequestResponse();
+      this.commands    = new Backbone.Wreqr.Commands();
+      this.channelName = channelName;
+    };
+  
+    _.extend(Channel.prototype, {
+  
+      // Remove all handlers from the messaging systems of this channel
+      reset: function() {
+        this.vent.off();
+        this.vent.stopListening();
+        this.reqres.removeAllHandlers();
+        this.commands.removeAllHandlers();
+        return this;
+      },
+  
+      // Connect a hash of events; one for each messaging system
+      connectEvents: function(hash, context) {
+        this._connect('vent', hash, context);
+        return this;
+      },
+  
+      connectCommands: function(hash, context) {
+        this._connect('commands', hash, context);
+        return this;
+      },
+  
+      connectRequests: function(hash, context) {
+        this._connect('reqres', hash, context);
+        return this;
+      },
+  
+      // Attach the handlers to a given message system `type`
+      _connect: function(type, hash, context) {
+        if (!hash) {
+          return;
+        }
+  
+        context = context || this;
+        var method = (type === 'vent') ? 'on' : 'setHandler';
+  
+        _.each(hash, function(fn, eventName) {
+          this[type][method](eventName, _.bind(fn, context));
+        }, this);
+      }
+    });
+  
+  
+    return Channel;
+  })(Wreqr);
+  
+  // Wreqr.Radio
+  // --------------
+  //
+  // An object that lets you communicate with many channels.
+  Wreqr.radio = (function(Wreqr){
+    "use strict";
+  
+    var Radio = function() {
+      this._channels = {};
+      this.vent = {};
+      this.commands = {};
+      this.reqres = {};
+      this._proxyMethods();
+    };
+  
+    _.extend(Radio.prototype, {
+  
+      channel: function(channelName) {
+        if (!channelName) {
+          throw new Error('Channel must receive a name');
+        }
+  
+        return this._getChannel( channelName );
+      },
+  
+      _getChannel: function(channelName) {
+        var channel = this._channels[channelName];
+  
+        if(!channel) {
+          channel = new Wreqr.Channel(channelName);
+          this._channels[channelName] = channel;
+        }
+  
+        return channel;
+      },
+  
+      _proxyMethods: function() {
+        _.each(['vent', 'commands', 'reqres'], function(system) {
+          _.each( messageSystems[system], function(method) {
+            this[system][method] = proxyMethod(this, system, method);
+          }, this);
+        }, this);
+      }
+    });
+  
+  
+    var messageSystems = {
+      vent: [
+        'on',
+        'off',
+        'trigger',
+        'once',
+        'stopListening',
+        'listenTo',
+        'listenToOnce'
+      ],
+  
+      commands: [
+        'execute',
+        'setHandler',
+        'setHandlers',
+        'removeHandler',
+        'removeAllHandlers'
+      ],
+  
+      reqres: [
+        'request',
+        'setHandler',
+        'setHandlers',
+        'removeHandler',
+        'removeAllHandlers'
+      ]
+    };
+  
+    var proxyMethod = function(radio, system, method) {
+      return function(channelName) {
+        var messageSystem = radio._getChannel(channelName)[system];
+        var args = Array.prototype.slice.call(arguments, 1);
+  
+        return messageSystem[method].apply(messageSystem, args);
+      };
+    };
+  
+    return new Radio();
+  
+  })(Wreqr);
+  
+
+  return Backbone.Wreqr;
+
+}));
diff --git a/planetstack/core/xoslib/static/js/vendor/underscore-min.js b/planetstack/core/xoslib/static/js/vendor/underscore-min.js
new file mode 100644 (file)
index 0000000..3434d6c
--- /dev/null
@@ -0,0 +1,6 @@
+//     Underscore.js 1.6.0
+//     http://underscorejs.org
+//     (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+//     Underscore may be freely distributed under the MIT license.
+(function(){var n=this,t=n._,r={},e=Array.prototype,u=Object.prototype,i=Function.prototype,a=e.push,o=e.slice,c=e.concat,l=u.toString,f=u.hasOwnProperty,s=e.forEach,p=e.map,h=e.reduce,v=e.reduceRight,g=e.filter,d=e.every,m=e.some,y=e.indexOf,b=e.lastIndexOf,x=Array.isArray,w=Object.keys,_=i.bind,j=function(n){return n instanceof j?n:this instanceof j?void(this._wrapped=n):new j(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=j),exports._=j):n._=j,j.VERSION="1.6.0";var A=j.each=j.forEach=function(n,t,e){if(null==n)return n;if(s&&n.forEach===s)n.forEach(t,e);else if(n.length===+n.length){for(var u=0,i=n.length;i>u;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a=j.keys(n),u=0,i=a.length;i>u;u++)if(t.call(e,n[a[u]],a[u],n)===r)return;return n};j.map=j.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e.push(t.call(r,n,u,i))}),e)};var O="Reduce of empty array with no initial value";j.reduce=j.foldl=j.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduce===h)return e&&(t=j.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(O);return r},j.reduceRight=j.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduceRight===v)return e&&(t=j.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=j.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(O);return r},j.find=j.detect=function(n,t,r){var e;return k(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},j.filter=j.select=function(n,t,r){var e=[];return null==n?e:g&&n.filter===g?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&e.push(n)}),e)},j.reject=function(n,t,r){return j.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},j.every=j.all=function(n,t,e){t||(t=j.identity);var u=!0;return null==n?u:d&&n.every===d?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var k=j.some=j.any=function(n,t,e){t||(t=j.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};j.contains=j.include=function(n,t){return null==n?!1:y&&n.indexOf===y?n.indexOf(t)!=-1:k(n,function(n){return n===t})},j.invoke=function(n,t){var r=o.call(arguments,2),e=j.isFunction(t);return j.map(n,function(n){return(e?t:n[t]).apply(n,r)})},j.pluck=function(n,t){return j.map(n,j.property(t))},j.where=function(n,t){return j.filter(n,j.matches(t))},j.findWhere=function(n,t){return j.find(n,j.matches(t))},j.max=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.max.apply(Math,n);var e=-1/0,u=-1/0;return A(n,function(n,i,a){var o=t?t.call(r,n,i,a):n;o>u&&(e=n,u=o)}),e},j.min=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.min.apply(Math,n);var e=1/0,u=1/0;return A(n,function(n,i,a){var o=t?t.call(r,n,i,a):n;u>o&&(e=n,u=o)}),e},j.shuffle=function(n){var t,r=0,e=[];return A(n,function(n){t=j.random(r++),e[r-1]=e[t],e[t]=n}),e},j.sample=function(n,t,r){return null==t||r?(n.length!==+n.length&&(n=j.values(n)),n[j.random(n.length-1)]):j.shuffle(n).slice(0,Math.max(0,t))};var E=function(n){return null==n?j.identity:j.isFunction(n)?n:j.property(n)};j.sortBy=function(n,t,r){return t=E(t),j.pluck(j.map(n,function(n,e,u){return{value:n,index:e,criteria:t.call(r,n,e,u)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={};return r=E(r),A(t,function(i,a){var o=r.call(e,i,a,t);n(u,o,i)}),u}};j.groupBy=F(function(n,t,r){j.has(n,t)?n[t].push(r):n[t]=[r]}),j.indexBy=F(function(n,t,r){n[t]=r}),j.countBy=F(function(n,t){j.has(n,t)?n[t]++:n[t]=1}),j.sortedIndex=function(n,t,r,e){r=E(r);for(var u=r.call(e,t),i=0,a=n.length;a>i;){var o=i+a>>>1;r.call(e,n[o])<u?i=o+1:a=o}return i},j.toArray=function(n){return n?j.isArray(n)?o.call(n):n.length===+n.length?j.map(n,j.identity):j.values(n):[]},j.size=function(n){return null==n?0:n.length===+n.length?n.length:j.keys(n).length},j.first=j.head=j.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:0>t?[]:o.call(n,0,t)},j.initial=function(n,t,r){return o.call(n,0,n.length-(null==t||r?1:t))},j.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:o.call(n,Math.max(n.length-t,0))},j.rest=j.tail=j.drop=function(n,t,r){return o.call(n,null==t||r?1:t)},j.compact=function(n){return j.filter(n,j.identity)};var M=function(n,t,r){return t&&j.every(n,j.isArray)?c.apply(r,n):(A(n,function(n){j.isArray(n)||j.isArguments(n)?t?a.apply(r,n):M(n,t,r):r.push(n)}),r)};j.flatten=function(n,t){return M(n,t,[])},j.without=function(n){return j.difference(n,o.call(arguments,1))},j.partition=function(n,t){var r=[],e=[];return A(n,function(n){(t(n)?r:e).push(n)}),[r,e]},j.uniq=j.unique=function(n,t,r,e){j.isFunction(t)&&(e=r,r=t,t=!1);var u=r?j.map(n,r,e):n,i=[],a=[];return A(u,function(r,e){(t?e&&a[a.length-1]===r:j.contains(a,r))||(a.push(r),i.push(n[e]))}),i},j.union=function(){return j.uniq(j.flatten(arguments,!0))},j.intersection=function(n){var t=o.call(arguments,1);return j.filter(j.uniq(n),function(n){return j.every(t,function(t){return j.contains(t,n)})})},j.difference=function(n){var t=c.apply(e,o.call(arguments,1));return j.filter(n,function(n){return!j.contains(t,n)})},j.zip=function(){for(var n=j.max(j.pluck(arguments,"length").concat(0)),t=new Array(n),r=0;n>r;r++)t[r]=j.pluck(arguments,""+r);return t},j.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},j.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=j.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},j.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},j.range=function(n,t,r){arguments.length<=1&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=new Array(e);e>u;)i[u++]=n,n+=r;return i};var R=function(){};j.bind=function(n,t){var r,e;if(_&&n.bind===_)return _.apply(n,o.call(arguments,1));if(!j.isFunction(n))throw new TypeError;return r=o.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(o.call(arguments)));R.prototype=n.prototype;var u=new R;R.prototype=null;var i=n.apply(u,r.concat(o.call(arguments)));return Object(i)===i?i:u}},j.partial=function(n){var t=o.call(arguments,1);return function(){for(var r=0,e=t.slice(),u=0,i=e.length;i>u;u++)e[u]===j&&(e[u]=arguments[r++]);for(;r<arguments.length;)e.push(arguments[r++]);return n.apply(this,e)}},j.bindAll=function(n){var t=o.call(arguments,1);if(0===t.length)throw new Error("bindAll must be passed function names");return A(t,function(t){n[t]=j.bind(n[t],n)}),n},j.memoize=function(n,t){var r={};return t||(t=j.identity),function(){var e=t.apply(this,arguments);return j.has(r,e)?r[e]:r[e]=n.apply(this,arguments)}},j.delay=function(n,t){var r=o.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},j.defer=function(n){return j.delay.apply(j,[n,1].concat(o.call(arguments,1)))},j.throttle=function(n,t,r){var e,u,i,a=null,o=0;r||(r={});var c=function(){o=r.leading===!1?0:j.now(),a=null,i=n.apply(e,u),e=u=null};return function(){var l=j.now();o||r.leading!==!1||(o=l);var f=t-(l-o);return e=this,u=arguments,0>=f?(clearTimeout(a),a=null,o=l,i=n.apply(e,u),e=u=null):a||r.trailing===!1||(a=setTimeout(c,f)),i}},j.debounce=function(n,t,r){var e,u,i,a,o,c=function(){var l=j.now()-a;t>l?e=setTimeout(c,t-l):(e=null,r||(o=n.apply(i,u),i=u=null))};return function(){i=this,u=arguments,a=j.now();var l=r&&!e;return e||(e=setTimeout(c,t)),l&&(o=n.apply(i,u),i=u=null),o}},j.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},j.wrap=function(n,t){return j.partial(t,n)},j.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},j.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},j.keys=function(n){if(!j.isObject(n))return[];if(w)return w(n);var t=[];for(var r in n)j.has(n,r)&&t.push(r);return t},j.values=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},j.pairs=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},j.invert=function(n){for(var t={},r=j.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},j.functions=j.methods=function(n){var t=[];for(var r in n)j.isFunction(n[r])&&t.push(r);return t.sort()},j.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},j.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},j.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)j.contains(r,u)||(t[u]=n[u]);return t},j.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]===void 0&&(n[r]=t[r])}),n},j.clone=function(n){return j.isObject(n)?j.isArray(n)?n.slice():j.extend({},n):n},j.tap=function(n,t){return t(n),n};var S=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof j&&(n=n._wrapped),t instanceof j&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==String(t);case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;var a=n.constructor,o=t.constructor;if(a!==o&&!(j.isFunction(a)&&a instanceof a&&j.isFunction(o)&&o instanceof o)&&"constructor"in n&&"constructor"in t)return!1;r.push(n),e.push(t);var c=0,f=!0;if("[object Array]"==u){if(c=n.length,f=c==t.length)for(;c--&&(f=S(n[c],t[c],r,e)););}else{for(var s in n)if(j.has(n,s)&&(c++,!(f=j.has(t,s)&&S(n[s],t[s],r,e))))break;if(f){for(s in t)if(j.has(t,s)&&!c--)break;f=!c}}return r.pop(),e.pop(),f};j.isEqual=function(n,t){return S(n,t,[],[])},j.isEmpty=function(n){if(null==n)return!0;if(j.isArray(n)||j.isString(n))return 0===n.length;for(var t in n)if(j.has(n,t))return!1;return!0},j.isElement=function(n){return!(!n||1!==n.nodeType)},j.isArray=x||function(n){return"[object Array]"==l.call(n)},j.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){j["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),j.isArguments(arguments)||(j.isArguments=function(n){return!(!n||!j.has(n,"callee"))}),"function"!=typeof/./&&(j.isFunction=function(n){return"function"==typeof n}),j.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},j.isNaN=function(n){return j.isNumber(n)&&n!=+n},j.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},j.isNull=function(n){return null===n},j.isUndefined=function(n){return n===void 0},j.has=function(n,t){return f.call(n,t)},j.noConflict=function(){return n._=t,this},j.identity=function(n){return n},j.constant=function(n){return function(){return n}},j.property=function(n){return function(t){return t[n]}},j.matches=function(n){return function(t){if(t===n)return!0;for(var r in n)if(n[r]!==t[r])return!1;return!0}},j.times=function(n,t,r){for(var e=Array(Math.max(0,n)),u=0;n>u;u++)e[u]=t.call(r,u);return e},j.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},j.now=Date.now||function(){return(new Date).getTime()};var T={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;"}};T.unescape=j.invert(T.escape);var I={escape:new RegExp("["+j.keys(T.escape).join("")+"]","g"),unescape:new RegExp("("+j.keys(T.unescape).join("|")+")","g")};j.each(["escape","unescape"],function(n){j[n]=function(t){return null==t?"":(""+t).replace(I[n],function(t){return T[n][t]})}}),j.result=function(n,t){if(null==n)return void 0;var r=n[t];return j.isFunction(r)?r.call(n):r},j.mixin=function(n){A(j.functions(n),function(t){var r=j[t]=n[t];j.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),z.call(this,r.apply(j,n))}})};var N=0;j.uniqueId=function(n){var t=++N+"";return n?n+t:t},j.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var q=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n","  ":"t","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\t|\u2028|\u2029/g;j.template=function(n,t,r){var e;r=j.defaults({},r,j.templateSettings);var u=new RegExp([(r.escape||q).source,(r.interpolate||q).source,(r.evaluate||q).source].join("|")+"|$","g"),i=0,a="__p+='";n.replace(u,function(t,r,e,u,o){return a+=n.slice(i,o).replace(D,function(n){return"\\"+B[n]}),r&&(a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(a+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),u&&(a+="';\n"+u+"\n__p+='"),i=o+t.length,t}),a+="';\n",r.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{e=new Function(r.variable||"obj","_",a)}catch(o){throw o.source=a,o}if(t)return e(t,j);var c=function(n){return e.call(this,n,j)};return c.source="function("+(r.variable||"obj")+"){\n"+a+"}",c},j.chain=function(n){return j(n).chain()};var z=function(n){return this._chain?j(n).chain():n};j.mixin(j),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];j.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],z.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];j.prototype[n]=function(){return z.call(this,t.apply(this._wrapped,arguments))}}),j.extend(j.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}}),"function"==typeof define&&define.amd&&define("underscore",[],function(){return j})}).call(this);
+//# sourceMappingURL=underscore-min.map
\ No newline at end of file
diff --git a/planetstack/core/xoslib/static/js/xosDeveloper.js b/planetstack/core/xoslib/static/js/xosDeveloper.js
new file mode 100644 (file)
index 0000000..aef640e
--- /dev/null
@@ -0,0 +1,62 @@
+/* This is an example that uses xoslib + marionette to display the developer
+\r   view.
+\r
+\r   For an example that uses xoslib + datatables, see xosDeveloper_datatables.js
+\r*/
+\r
+\rDeveloperApp = new Marionette.Application();
+\r
+DeveloperApp.addRegions({\r
+  mainRegion: "#developerView"\r
+});
+
+DeveloperApp.SliceDetailView = Marionette.ItemView.extend({
+  template: "#developer-slicedetail-template",\r
+  tagName: 'tr',\r
+  className: 'developer_slicedetail'\r
+});
+
+DeveloperApp.SliceListView = Marionette.CompositeView.extend({
+  tagName: "table",\r
+  className: "table table-bordered table-striped",\r
+  template: "#developer-slicetable-template",\r
+  childView: DeveloperApp.SliceDetailView,\r
+  childViewContainer: "tbody",\r
+\r
+  events: {"click .sort": "changeSort"},\r
+\r
+  initialize: function() {\r
+      this.listenTo(this.collection, 'change', this._renderChildren);\r
+  },\r
+\r
+  changeSort: function(e) {\r
+      parts=$(e.currentTarget).attr("id").split('-');\r
+      order=parts[1];\r
+      fieldName=parts[2];\r
+      this.collection.sortVar = fieldName;\r
+      this.collection.sortOrder = order;\r
+      this.collection.sort();\r
+  },\r
+\r
+  attachHtml: function(compositeView, childView, index) {\r
+      // The REST API will let admin users see everything. For the developer\r
+      // view we still want to hide slices we are not members of.\r
+      if (childView.model.get("sliceInfo").roles.length == 0) {\r
+          return;\r
+      }\r
+      DeveloperApp.SliceListView.__super__.attachHtml(compositeView, childView, index);\r
+  },\r
+});\r
+
+DeveloperApp.on("start", function() {
+  var developerSliceListView = new DeveloperApp.SliceListView({
+    collection: xos.slicesPlus\r
+  });\r
+  DeveloperApp.mainRegion.show(developerSliceListView);\r
+  xos.slicesPlus.startPolling();\r
+});
+
+$(document).ready(function(){
+  DeveloperApp.start();
+});
+
diff --git a/planetstack/core/xoslib/static/js/xosDeveloper_datatables.js b/planetstack/core/xoslib/static/js/xosDeveloper_datatables.js
new file mode 100644 (file)
index 0000000..f0f92bf
--- /dev/null
@@ -0,0 +1,46 @@
+/* This is an example that uses xoslib + datatables to display the developer
+\r   view.
+\r
+\r   For an example that uses xoslib + marionette, see xosDeveloper.js
+\r*/
+\r
+\rfunction updateSliceTable(data) {
+\r    $('#developerView').html( '<table cellpadding="0" cellspacing="0" border="0" class="display" id="dynamicusersliceinfo"></table>' );
+    var actualEntries = [];
+
+    for (rowkey in data.models) {
+        row = data.models[rowkey];
+        slicename = row.get("name");
+        sliceid = row.get("id");
+        role = row.get("sliceInfo").roles[0];
+        slivercount = row.get("sliceInfo").sliverCount;
+        sitecount = row.get("sliceInfo").siteCount;
+
+        if (! role) {
+            continue;
+        }
+
+        actualEntries.push(['<a href="/admin/core/slice/' + sliceid + '">' + slicename + '</a>',
+                            role, slivercount, sitecount]);
+    }
+    oTable = $('#dynamicusersliceinfo').dataTable( {
+        "bJQueryUI": true,
+        "aaData":  actualEntries ,
+        "bStateSave": true,
+        "aoColumns": [
+            { "sTitle": "Slice" },
+            { "sTitle": "Privilege" , sClass: "alignCenter"},
+            { "sTitle": "Number of Slivers" , sClass: "alignCenter"},
+            { "sTitle": "Number of Sites" , sClass: "alignCenter"},
+        ]
+    } );
+}
+
+$(document).ready(function(){
+    xos.slicesPlus.on("change", function() { /*console.log("change");*/ updateSliceTable(xos.slicesPlus); });
+    xos.slicesPlus.on("remove", function() { /*console.log("sort");*/ updateSliceTable(xos.slicesPlus); });
+    xos.slicesPlus.on("sort", function() { /*console.log("sort");*/ updateSliceTable(xos.slicesPlus); });
+
+    xos.slicesPlus.startPolling();
+});
+
diff --git a/planetstack/core/xoslib/static/js/xoslib/xos-backbone.js b/planetstack/core/xoslib/static/js/xoslib/xos-backbone.js
new file mode 100644 (file)
index 0000000..f18d303
--- /dev/null
@@ -0,0 +1,205 @@
+if (! window.XOSLIB_LOADED ) {
+    window.XOSLIB_LOADED=true;
+
+    SLIVER_API = "/plstackapi/slivers/";
+    SLICE_API = "/plstackapi/slices/";
+    NODE_API = "/plstackapi/nodes/";
+    SITE_API = "/plstackapi/sites/";
+    USER_API = "/plstackapi/users/";
+    DEPLOYMENT_API = "/plstackapi/deployments";
+
+    SLICEPLUS_API = "/xoslib/slicesplus/";
+
+    XOSModel = Backbone.Model.extend({
+        /* from backbone-tastypie.js */
+        //idAttribute: 'resource_uri',
+
+        /* from backbone-tastypie.js */
+        url: function() {
+                    var url = this.attributes.resource_uri;
+
+                    if (!url) {
+                        url = this.urlRoot + this.id;
+                    }
+
+                    if (!url) {
+                        // XXX I'm not sure this does anything useful
+                        url = ( _.isFunction( this.collection.url ) ? this.collection.url() : this.collection.url );
+                        url = url || this.urlRoot;
+                    }
+
+                    // remove any existing query parameters
+                    url && ( url.indexOf("?") > -1 ) && ( url = url.split("?")[0] );
+
+                    url && ( url += ( url.length > 0 && url.charAt( url.length - 1 ) === '/' ) ? '' : '/' );
+
+                    url && ( url += "?no_hyperlinks=1" );
+
+                    return url;
+            },
+
+            listMethods: function() {
+                var res = [];\r
+                for(var m in this) {\r
+                    if(typeof this[m] == "function") {\r
+                        res.push(m)\r
+                    }\r
+                }\r
+                return res;\r
+            }
+    });
+
+    XOSCollection = Backbone.Collection.extend({
+        objects: function() {
+                    return this.models.map(function(element) { return element.attributes; });
+                 },
+
+        initialize: function(){
+          this.sortVar = 'name';\r
+          this.sortOrder = 'asc';\r
+        },\r
+\r
+        simpleComparator: function( model ){\r
+          parts=this.sortVar.split(".");\r
+          result = model.get(parts[0]);\r
+          for (index=1; index<parts.length; ++index) {\r
+              result=result[parts[index]];\r
+          }\r
+          return result;\r
+        },\r
+\r
+        comparator: function (left, right) {\r
+            var l = this.simpleComparator(left);\r
+            var r = this.simpleComparator(right);\r
+\r
+            if (l === void 0) return -1;\r
+            if (r === void 0) return 1;\r
+\r
+            if (this.sortOrder=="desc") {\r
+                return l < r ? 1 : l > r ? -1 : 0;\r
+            } else {\r
+                return l < r ? -1 : l > r ? 1 : 0;\r
+            }\r
+        },\r
+\r
+        startPolling: function() {\r
+            if (!this._polling) {
+                collection=this;
+                setInterval(function() { collection.fetch(); }, 10000);
+                this._polling=true;
+                this.fetch();
+            }
+        },
+
+        maybeFetch: function(options){
+                // Helper function to fetch only if this collection has not been fetched before.
+            if(this._fetched){
+                    // If this has already been fetched, call the success, if it exists
+                options.success && options.success();
+                console.log("alreadyFetched");
+                return;
+            }
+
+                // when the original success function completes mark this collection as fetched
+            var self = this,
+            successWrapper = function(success){
+                return function(){
+                    self._fetched = true;
+                    success && success.apply(this, arguments);
+                };
+            };
+            options.success = successWrapper(options.success);
+            console.log("call fetch");
+            this.fetch(options);
+        },
+
+        getOrFetch: function(id, options){
+                // Helper function to use this collection as a cache for models on the server
+            var model = this.get(id);
+
+            if(model){
+                options.success && options.success(model);
+                return;
+            }
+
+            model = new this.model({
+                resource_uri: id
+            });
+
+            model.fetch(options);
+        },
+
+        /* from backbone-tastypie.js */
+        url: function( models ) {
+                    var url = this.urlRoot || ( models && models.length && models[0].urlRoot );
+                    url && ( url += ( url.length > 0 && url.charAt( url.length - 1 ) === '/' ) ? '' : '/' );
+
+                    // Build a url to retrieve a set of models. This assume the last part of each model's idAttribute
+                    // (set to 'resource_uri') contains the model's id.
+                    if ( models && models.length ) {
+                            var ids = _.map( models, function( model ) {
+                                            var parts = _.compact( model.id.split('/') );
+                                            return parts[ parts.length - 1 ];
+                                    });
+                            url += 'set/' + ids.join(';') + '/';
+                    }
+
+                    url && ( url += "?no_hyperlinks=1" );
+
+                    return url;
+            },
+
+            listMethods: function() {
+                var res = [];\r
+                for(var m in this) {\r
+                    if(typeof this[m] == "function") {\r
+                        res.push(m)\r
+                    }\r
+                }\r
+                return res;\r
+            }
+    });
+
+    function xoslib() {
+        // basic REST
+        this.sliver = XOSModel.extend({ urlRoot: SLIVER_API });
+        this.sliverCollection = XOSCollection.extend({ urlRoot: SLIVER_API,
+                                                       model: this.sliver});
+        this.slivers = new this.sliverCollection();
+
+        this.slice = XOSModel.extend({ urlRoot: SLICE_API });
+        this.sliceCollection = XOSCollection.extend({ urlRoot: SLICE_API,
+                                                       model: this.slice});
+        this.slices = new this.sliceCollection();
+
+        this.node = XOSModel.extend({ urlRoot: NODE_API });
+        this.nodeCollection = XOSCollection.extend({ urlRoot: NODE_API,
+                                                       model: this.node});
+        this.nodes = new this.nodeCollection();
+
+        this.site = XOSModel.extend({ urlRoot: SITE_API });
+        this.siteCollection = XOSCollection.extend({ urlRoot: SITE_API,
+                                                       model: this.site});
+        this.sites = new this.siteCollection();
+
+        this.user = XOSModel.extend({ urlRoot: USER_API });
+        this.userCollection = XOSCollection.extend({ urlRoot: USER_API,
+                                                       model: this.user});
+        this.users = new this.userCollection();
+
+        this.deployment = XOSModel.extend({ urlRoot: DEPLOYMENT_API });
+        this.deploymentCollection = XOSCollection.extend({ urlRoot: DEPLOYMENT_API,
+                                                           model: this.deployment});
+        this.deployments = new this.deploymentCollection();
+
+        // enhanced REST
+        this.slicePlus = XOSModel.extend({ urlRoot: SLICEPLUS_API });
+        this.slicePlusCollection = XOSCollection.extend({ urlRoot: SLICEPLUS_API,
+                                                          model: this.slicePlus});
+        this.slicesPlus = new this.slicePlusCollection();
+
+        this.listObjects = function() { return ["slivers", "slices", "nodes", "sites", "users", "deployments"]; };
+    };
+
+    xos = new xoslib();
+}
diff --git a/planetstack/core/xoslib/static/js/xsh/constants.js b/planetstack/core/xoslib/static/js/xsh/constants.js
new file mode 100644 (file)
index 0000000..97b690a
--- /dev/null
@@ -0,0 +1,39 @@
+// TryMongo\r
+//\r
+// Copyright (c) 2009 Kyle Banker\r
+// Licensed under the MIT Licence.\r
+// http://www.opensource.org/licenses/mit-license.php\r
+\r
+var DefaultInputHtml = function(stack) {\r
+    var linePrompt = "";\r
+    if(stack == 0) {\r
+      linePrompt += "<span class='prompt'> ></span>";\r
+    }\r
+    else {\r
+      for(var i=0; i <= stack; i++) {\r
+        linePrompt += "<span class='prompt'>.</span>";\r
+      }\r
+    }\r
+    return "<div class='terminal_line'>" +\r
+           linePrompt +\r
+           "<input type='text' class='readLine active' />" +\r
+           "</div>";\r
+}\r
+\r
+var EnterKeyCode     = 13;\r
+var UpArrowKeyCode   = 38;\r
+var DownArrowKeyCode = 40;\r
+\r
+var PTAG = function(str) {\r
+  return '<pre class="terminal_help">' + str + '</pre>';\r
+}\r
+\r
+var BR = function() {\r
+  return "<br/>";\r
+}\r
+\r
+var JavascriptKeywords = ['abstract', 'boolean', 'break', 'byte', 'case', 'catch', 'char', 'class', 'const', 'continue', 'debugger', 'default', 'delete', 'do', 'double', 'else', 'enum', 'export', 'extends', 'false', 'final', 'finally', 'float', 'for', 'function', 'goto', 'if', 'implements', 'import', 'in', 'instanceof', 'int', 'interface', 'long', 'native', 'new', 'null', 'package', 'private', 'protected', 'public', 'return', 'short', 'static', 'super', 'switch', 'synchronized', 'this', 'throw', 'throws', 'transient', 'true', 'try', 'typeof', 'var', 'void', 'volatile', 'while', 'with', 'alert', 'date', 'eval'];\r
+\r
+var JavascriptClassNames = ['Array', 'String', 'Object']\r
+\r
+var MongoKeywords = ['help','tutorial','next','back','t0','t1','t2','t3','t4'];\r
diff --git a/planetstack/core/xoslib/static/js/xsh/object_id.js b/planetstack/core/xoslib/static/js/xsh/object_id.js
new file mode 100644 (file)
index 0000000..15cbbb9
--- /dev/null
@@ -0,0 +1,12 @@
+var ObjectIdCounter = 0;
+
+var ObjectId = function() {
+  this.counter = (ObjectIdCounter += 1);
+  this.str     = this.counter;
+  this.initialize();
+  return this.counter;
+};
+
+ObjectId.prototype.initialize = function() {
+  return this.counter;
+}
diff --git a/planetstack/core/xoslib/static/js/xsh/shell_utils.js b/planetstack/core/xoslib/static/js/xsh/shell_utils.js
new file mode 100644 (file)
index 0000000..8ed5f4f
--- /dev/null
@@ -0,0 +1,548 @@
+DB = function() {
+}
+
+print = function(msg) {
+  //console.log(msg);
+}
+
+
+friendlyEqual = function( a , b ){
+    if ( a == b )
+        return true;
+
+    if ( tojson( a ) == tojson( b ) )
+        return true;
+
+    return false;
+}
+
+
+doassert = function( msg ){
+    print( "assert: " + msg );
+    throw msg;
+}
+
+assert = function( b , msg ){
+    if ( assert._debug && msg ) print( "in assert for: " + msg );
+
+    if ( b )
+        return;
+    
+    doassert( "assert failed : " + msg );
+}
+
+assert.eq = function( a , b , msg ){
+    if ( assert._debug && msg ) print( "in assert for: " + msg );
+
+    if ( a == b )
+        return;
+
+    if ( ( a != null && b != null ) && friendlyEqual( a , b ) )
+        return;
+
+    doassert( "[" + tojson( a ) + "] != [" + tojson( b ) + "] are not equal : " + msg );
+}
+
+assert.neq = function( a , b , msg ){
+    if ( assert._debug && msg ) print( "in assert for: " + msg );
+    if ( a != b )
+        return;
+
+    doassert( "[" + a + "] != [" + b + "] are equal : " + msg );
+}
+
+assert.soon = function( f, msg, timeout, interval ) {
+    if ( assert._debug && msg ) print( "in assert for: " + msg );
+
+    var start = new Date();
+    timeout = timeout || 30000;
+    interval = interval || 200;
+    var last;
+    while( 1 ) {
+        
+        if ( typeof( f ) == "string" ){
+            if ( eval( f ) )
+                return;
+        }
+        else {
+            if ( f() )
+                return;
+        }
+        
+        if ( ( new Date() ).getTime() - start.getTime() > timeout )
+            doassert( "assert.soon failed: " + f + ", msg:" + msg );
+        sleep( interval );
+    }
+}
+
+assert.throws = function( func , params , msg ){
+    if ( assert._debug && msg ) print( "in assert for: " + msg );
+    try {
+        func.apply( null , params );
+    }
+    catch ( e ){
+        return e;
+    }
+
+    doassert( "did not throw exception: " + msg );
+}
+
+assert.commandWorked = function( res , msg ){
+    if ( assert._debug && msg ) print( "in assert for: " + msg );
+
+    if ( res.ok == 1 )
+        return;
+    
+    doassert( "command failed: " + tojson( res ) + " : " + msg );
+}
+
+assert.commandFailed = function( res , msg ){
+    if ( assert._debug && msg ) print( "in assert for: " + msg );
+
+    if ( res.ok == 0 )
+        return;
+    
+    doassert( "command worked when it should have failed: " + tojson( res ) + " : " + msg );
+}
+
+assert.isnull = function( what , msg ){
+    if ( assert._debug && msg ) print( "in assert for: " + msg );
+
+    if ( what == null )
+        return;
+    
+    doassert( "supposed to null (" + ( msg || "" ) + ") was: " + tojson( what ) );
+}
+
+assert.lt = function( a , b , msg ){
+    if ( assert._debug && msg ) print( "in assert for: " + msg );
+
+    if ( a < b )
+        return;
+    doassert( a + " is not less than " + b + " : " + msg );
+}
+
+assert.gt = function( a , b , msg ){
+    if ( assert._debug && msg ) print( "in assert for: " + msg );
+
+    if ( a > b )
+        return;
+    doassert( a + " is not greater than " + b + " : " + msg );
+}
+
+Object.extend = function( dst , src , deep ){
+    for ( var k in src ){
+        var v = src[k];
+        if ( deep && typeof(v) == "object" ){
+            v = Object.extend( typeof ( v.length ) == "number" ? [] : {} , v , true );
+        }
+        dst[k] = v;
+    }
+    return dst;
+}
+
+argumentsToArray = function( a ){
+    var arr = [];
+    for ( var i=0; i<a.length; i++ )
+        arr[i] = a[i];
+    return arr;
+}
+
+isString = function( x ){
+    return typeof( x ) == "string";
+}
+
+isNumber = function(x){
+    return typeof( x ) == "number";
+}
+
+isObject = function( x ){
+    return typeof( x ) == "object";
+}
+
+String.prototype.trim = function() {
+    return this.replace(/^\s+|\s+$/g,"");
+}
+String.prototype.ltrim = function() {
+    return this.replace(/^\s+/,"");
+}
+String.prototype.rtrim = function() {
+    return this.replace(/\s+$/,"");
+}
+
+Date.timeFunc = function( theFunc , numTimes ){
+
+    var start = new Date();
+    
+    numTimes = numTimes || 1;
+    for ( var i=0; i<numTimes; i++ ){
+        theFunc.apply( null , argumentsToArray( arguments ).slice( 2 ) );
+    }
+
+    return (new Date()).getTime() - start.getTime();
+}
+
+Date.prototype.tojson = function(){
+    return "\"" + this.toString() + "\"";
+}
+
+RegExp.prototype.tojson = RegExp.prototype.toString;
+
+Array.contains = function( a  , x ){
+    for ( var i=0; i<a.length; i++ ){
+        if ( a[i] == x )
+            return true;
+    }
+    return false;
+}
+
+Array.unique = function( a ){
+    var u = [];
+    for ( var i=0; i<a.length; i++){
+        var o = a[i];
+        if ( ! Array.contains( u , o ) ){
+            u.push( o );
+        }
+    }
+    return u;
+}
+
+Array.shuffle = function( arr ){
+    for ( var i=0; i<arr.length-1; i++ ){
+        var pos = i+Math.floor(Math.random()*(arr.length-i));
+        var save = arr[i];
+        arr[i] = arr[pos];
+        arr[pos] = save;
+    }
+    return arr;
+}
+
+
+Array.tojson = function( a , indent , x , html){
+    if (!indent) 
+        indent = "";
+    var spacer = "";
+    if(html) {
+      spacer = "<br/>";
+      indent = " &nbsp; "
+    }
+
+    var s = spacer + "[ " + spacer;
+    indent += " ";
+    for ( var i=0; i<a.length; i++){
+        s += indent + tojson( a[i], indent );
+        if ( i < a.length - 1 ){
+            s += "," + spacer;
+        }
+    }
+    if ( a.length == 0 ) {
+        s += indent;
+    }
+
+    indent = indent.substring(1);
+    s += spacer + " "+"]";
+    return s;
+}
+
+Array.fetchRefs = function( arr , coll ){
+    var n = [];
+    for ( var i=0; i<arr.length; i ++){
+        var z = arr[i];
+        if ( coll && coll != z.getCollection() )
+            continue;
+        n.push( z.fetch() );
+    }
+    
+    return n;
+}
+
+Array.sum = function( arr ){
+    if ( arr.length == 0 )
+        return null;
+    var s = arr[0];
+    for ( var i=1; i<arr.length; i++ )
+        s += arr[i];
+    return s;
+}
+
+Array.avg = function( arr ){
+    if ( arr.length == 0 )
+        return null;
+    return Array.sum( arr ) / arr.length;
+}
+
+Array.stdDev = function( arr ){
+    var avg = Array.avg( arr );
+    var sum = 0;
+
+    for ( var i=0; i<arr.length; i++ ){
+        sum += Math.pow( arr[i] - avg , 2 );
+    }
+
+    return Math.sqrt( sum / arr.length );
+}
+
+if ( ! ObjectId.prototype )
+    ObjectId.prototype = {}
+
+ObjectId.prototype.toString = function(){
+    return this.str;
+}
+
+ObjectId.prototype.tojson = function(){
+    return "ObjectId(\"" + this.str + "\")";
+}
+
+ObjectId.prototype.isObjectId = true;
+
+tojson = function( x, indent , nolint , html){
+    if ( x == null )
+        return "null";
+    
+    if ( x == undefined )
+        return "undefined";
+    
+    if (!indent) 
+        indent = "";
+
+    switch ( typeof x ){
+        
+    case "string": {
+        var s = "\"";
+        for ( var i=0; i<x.length; i++ ){
+            if ( x[i] == '"' ){
+                s += "\\\"";
+            }
+            else
+                s += x[i];
+        }
+        return s + "\"";
+    }
+        
+    case "number": 
+    case "boolean":
+        return "" + x;
+            
+    case "object":{
+        var s = tojsonObject( x, indent , nolint , html);
+        if ( ( nolint == null || nolint == true ) && s.length < 80 && ( indent == null || indent.length == 0 ) ){
+            s = s.replace( /[\s\r\n ]+/gm , " " );
+        }
+        return s;
+    }
+        
+    case "function":
+        return x.toString();
+        
+
+    default:
+        throw "tojson can't handle type " + ( typeof x );
+    }
+    
+}
+
+tojsonObject = function( x, indent , nolint , html){
+    if(html) {
+      var lineEnding = "<br/>";
+      var tabSpace   = "&nbsp;";
+    }
+    else {
+      var lineEnding = nolint ? " " : "\n";
+      var tabSpace = nolint ? "" : "\t";
+    }
+
+    assert.eq( ( typeof x ) , "object" , "tojsonObject needs object, not [" + ( typeof x ) + "]" );
+
+    if (!indent)
+        indent = "";
+
+    if ( x.hasOwnProperty("__str__")) {
+        return x.__str__();
+    }
+
+    if ( typeof( x.tojson ) == "function" && x.tojson != tojson ) {
+        return x.tojson(indent,nolint,html);
+    }
+
+    if ( typeof( x.constructor.tojson ) == "function" && x.constructor.tojson != tojson ) {
+        return x.constructor.tojson( x, indent , nolint, html );
+    }
+
+    if ( x.toString() == "[object MaxKey]" )
+        return "{ $maxKey : 1 }";
+    if ( x.toString() == "[object MinKey]" )
+        return "{ $minKey : 1 }";
+
+    var s = "{" + lineEnding;
+
+    // push one level of indent
+    indent += tabSpace;
+
+    var total = 0;
+    for ( var k in x ) total++;
+    if ( total == 0 ) {
+        s += indent + lineEnding;
+    }
+
+    var keys = x;
+    if ( typeof( x._simpleKeys ) == "function" )
+        keys = x._simpleKeys();
+    var num = 1;
+    for ( var k in keys ){
+        var val = x[k];
+
+        s += indent + "\"" + k + "\" : " + tojson( val, indent , nolint );
+        if (num != total) {
+            s += ",";
+            num++;
+        }
+        s += lineEnding;
+    }
+
+    // pop one level of indent
+    indent = indent.substring(1);
+    return s + indent + "}";
+}
+
+shellPrint = function( x ){
+    it = x;
+    if ( x != undefined )
+        shellPrintHelper( x );
+}
+
+printjson = function(x){
+    print( tojson( x ) );
+}
+
+shellPrintHelper = function( x ){
+
+    if ( typeof( x ) == "undefined" ){
+
+        return;
+    }
+    
+    if ( x == null ){
+        print( "null" );
+        return;
+    }
+
+    if ( typeof x != "object" ) 
+        return print( x );
+    
+    var p = x.shellPrint;
+    if ( typeof p == "function" )
+        return x.shellPrint();
+
+    var p = x.tojson;
+    if ( typeof p == "function" )
+        print( x.tojson() );
+    else
+        print( tojson( x ) );
+}
+
+shellHelper = function( command , rest , shouldPrint ){
+    command = command.trim();
+    var args = rest.trim().replace(/;$/,"").split( "\s+" );
+    
+    if ( ! shellHelper[command] )
+        throw "no command [" + command + "]";
+    
+    var res = shellHelper[command].apply( null , args );
+    if ( shouldPrint ){
+        shellPrintHelper( res );
+    }
+    return res;
+}
+
+help = shellHelper.help = function(){
+    print( "HELP" );
+    print( "\t" + "show dbs                     show database names");
+    print( "\t" + "show collections             show collections in current database");
+    print( "\t" + "show users                   show users in current database");
+    print( "\t" + "show profile                 show most recent system.profile entries with time >= 1ms");
+    print( "\t" + "use <db name>                set curent database to <db name>" );
+    print( "\t" + "db.help()                    help on DB methods");
+    print( "\t" + "db.foo.help()                help on collection methods");
+    print( "\t" + "db.foo.find()                list objects in collection foo" );
+    print( "\t" + "db.foo.find( { a : 1 } )     list objects in foo where a == 1" );
+    print( "\t" + "it                           result of the last line evaluated; use to further iterate");
+}
+
+if ( typeof( Map ) == "undefined" ){
+    Map = function(){
+        this._data = {};
+    }
+}
+
+Map.hash = function( val ){
+    if ( ! val )
+        return val;
+
+    switch ( typeof( val ) ){
+    case 'string':
+    case 'number':
+    case 'date':
+        return val.toString();
+    case 'object':
+    case 'array':
+        var s = "";
+        for ( var k in val ){
+            s += k + val[k];
+        }
+        return s;
+    }
+
+    throw "can't hash : " + typeof( val );
+}
+
+Map.prototype.put = function( key , value ){
+    var o = this._get( key );
+    var old = o.value;
+    o.value = value;
+    return old;
+}
+
+Map.prototype.get = function( key ){
+    return this._get( key ).value;
+}
+
+Map.prototype._get = function( key ){
+    var h = Map.hash( key );
+    var a = this._data[h];
+    if ( ! a ){
+        a = [];
+        this._data[h] = a;
+    }
+    
+    for ( var i=0; i<a.length; i++ ){
+        if ( friendlyEqual( key , a[i].key ) ){
+            return a[i];
+        }
+    }
+    var o = { key : key , value : null };
+    a.push( o );
+    return o;
+}
+
+Map.prototype.values = function(){
+    var all = [];
+    for ( var k in this._data ){
+        this._data[k].forEach( function(z){ all.push( z.value ); } );
+    }
+    return all;
+}
+
+if ( typeof( gc ) == "undefined" ){
+    gc = function(){
+    }
+}
+   
+
+Math.sigFig = function( x , N ){
+    if ( ! N ){
+        N = 3;
+    }
+    var p = Math.pow( 10, N - Math.ceil( Math.log( Math.abs(x) ) / Math.log( 10 )) );
+    return Math.round(x*p)/p;
+}
+
diff --git a/planetstack/core/xoslib/static/js/xsh/tokens.js b/planetstack/core/xoslib/static/js/xsh/tokens.js
new file mode 100644 (file)
index 0000000..49c246e
--- /dev/null
@@ -0,0 +1,268 @@
+// tokens.js
+// 2009-05-17
+
+// (c) 2006 Douglas Crockford
+
+// Produce an array of simple token objects from a string.
+// A simple token object contains these members:
+//      type: 'name', 'string', 'number', 'operator'
+//      value: string or number value of the token
+//      from: index of first character of the token
+//      to: index of the last character + 1
+
+// Comments of the // type are ignored.
+
+// Operators are by default single characters. Multicharacter
+// operators can be made by supplying a string of prefix and
+// suffix characters.
+// characters. For example,
+//      '<>+-&', '=>&:'
+// will match any of these:
+//      <=  >>  >>>  <>  >=  +: -: &: &&: &&
+
+
+
+String.prototype.tokens = function (prefix, suffix) {
+    var c;                      // The current character.
+    var from;                   // The index of the start of the token.
+    var i = 0;                  // The index of the current character.
+    var length = this.length;
+    var n;                      // The number value.
+    var q;                      // The quote character.
+    var str;                    // The string value.
+
+    var result = [];            // An array to hold the results.
+
+    var make = function (type, value) {
+
+// Make a token object.
+
+        return {
+            type: type,
+            value: value,
+            from: from,
+            to: i
+        };
+    };
+
+// Begin tokenization. If the source string is empty, return nothing.
+
+    if (!this) {
+        return;
+    }
+
+// If prefix and suffix strings are not provided, supply defaults.
+
+    if (typeof prefix !== 'string') {
+        prefix = '<>+-&';
+    }
+    if (typeof suffix !== 'string') {
+        suffix = '=>&:';
+    }
+
+
+// Loop through this text, one character at a time.
+
+    c = this.charAt(i);
+    while (c) {
+        from = i;
+
+// Ignore whitespace.
+
+        if (c <= ' ') {
+            i += 1;
+            c = this.charAt(i);
+
+// name.
+
+        } else if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z') {
+            str = c;
+            i += 1;
+            for (;;) {
+                c = this.charAt(i);
+                if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') ||
+                        (c >= '0' && c <= '9') || c === '_') {
+                    str += c;
+                    i += 1;
+                } else {
+                    break;
+                }
+            }
+            result.push(make('name', str));
+
+// number.
+
+// A number cannot start with a decimal point. It must start with a digit,
+// possibly '0'.
+
+        } else if (c >= '0' && c <= '9') {
+            str = c;
+            i += 1;
+
+// Look for more digits.
+
+            for (;;) {
+                c = this.charAt(i);
+                if (c < '0' || c > '9') {
+                    break;
+                }
+                i += 1;
+                str += c;
+            }
+
+// Look for a decimal fraction part.
+
+            if (c === '.') {
+                i += 1;
+                str += c;
+                for (;;) {
+                    c = this.charAt(i);
+                    if (c < '0' || c > '9') {
+                        break;
+                    }
+                    i += 1;
+                    str += c;
+                }
+            }
+
+// Look for an exponent part.
+
+            if (c === 'e' || c === 'E') {
+                i += 1;
+                str += c;
+                c = this.charAt(i);
+                if (c === '-' || c === '+') {
+                    i += 1;
+                    str += c;
+                    c = this.charAt(i);
+                }
+                if (c < '0' || c > '9') {
+                    make('number', str).error("Bad exponent");
+                }
+                do {
+                    i += 1;
+                    str += c;
+                    c = this.charAt(i);
+                } while (c >= '0' && c <= '9');
+            }
+
+// Make sure the next character is not a letter.
+
+            if (c >= 'a' && c <= 'z') {
+                str += c;
+                i += 1;
+                make('number', str).error("Bad number");
+            }
+
+// Convert the string value to a number. If it is finite, then it is a good
+// token.
+
+            n = +str;
+            if (isFinite(n)) {
+                result.push(make('number', n));
+            } else {
+                make('number', str).error("Bad number");
+            }
+
+// string
+
+        } else if (c === '\'' || c === '"') {
+            str = '';
+            q = c;
+            i += 1;
+            for (;;) {
+                c = this.charAt(i);
+                if (c < ' ') {
+                    make('string', str).error(c === '\n' || c === '\r' || c === '' ?
+                        "Unterminated string." :
+                        "Control character in string.", make('', str));
+                }
+
+// Look for the closing quote.
+
+                if (c === q) {
+                    break;
+                }
+
+// Look for escapement.
+
+                if (c === '\\') {
+                    i += 1;
+                    if (i >= length) {
+                        make('string', str).error("Unterminated string");
+                    }
+                    c = this.charAt(i);
+                    switch (c) {
+                    case 'b':
+                        c = '\b';
+                        break;
+                    case 'f':
+                        c = '\f';
+                        break;
+                    case 'n':
+                        c = '\n';
+                        break;
+                    case 'r':
+                        c = '\r';
+                        break;
+                    case 't':
+                        c = '\t';
+                        break;
+                    case 'u':
+                        if (i >= length) {
+                            make('string', str).error("Unterminated string");
+                        }
+                        c = parseInt(this.substr(i + 1, 4), 16);
+                        if (!isFinite(c) || c < 0) {
+                            make('string', str).error("Unterminated string");
+                        }
+                        c = String.fromCharCode(c);
+                        i += 4;
+                        break;
+                    }
+                }
+                str += c;
+                i += 1;
+            }
+            i += 1;
+            result.push(make('string', str));
+            c = this.charAt(i);
+
+// comment.
+
+        } else if (c === '/' && this.charAt(i + 1) === '/') {
+            i += 1;
+            for (;;) {
+                c = this.charAt(i);
+                if (c === '\n' || c === '\r' || c === '') {
+                    break;
+                }
+                i += 1;
+            }
+
+// combining
+
+        } else if (prefix.indexOf(c) >= 0) {
+            str = c;
+            i += 1;
+            while (i < length) {
+                c = this.charAt(i);
+                if (suffix.indexOf(c) < 0) {
+                    break;
+                }
+                str += c;
+                i += 1;
+            }
+            result.push(make('operator', str));
+
+// single-character operator
+
+        } else {
+            i += 1;
+            result.push(make('operator', c));
+            c = this.charAt(i);
+        }
+    }
+    return result;
+};
+
diff --git a/planetstack/core/xoslib/static/js/xsh/utils.js b/planetstack/core/xoslib/static/js/xsh/utils.js
new file mode 100644 (file)
index 0000000..1ded27e
--- /dev/null
@@ -0,0 +1,81 @@
+// Try Mongo
+//
+// Copyright (c) 2009 Kyle Banker
+// Licensed under the MIT licence.
+// http://www.opensource.org/licenses/mit-license.php
+
+// extending array like this is breaking datatables
+
+/*Array.prototype.include = function(value) {
+  for(var i=0; i < this.length; i++) {
+    if(this[i] == value) {
+      return this[i];
+    }
+  }
+  return false;
+};
+
+Array.prototype.empty = function() {
+  return (this.length == 0);
+};*/
+
+function ArrayInclude(arr,value) {
+  for(var i=0; i < arr.length; i++) {
+    if(arr[i] == value) {
+      return arr[i];
+    }
+  }
+  return false;
+};
+
+Function.prototype.bind = function() {
+  var __method = this, object = arguments[0], args = [];
+
+  for(i = 1; i < arguments.length; i++) {
+   args.push(arguments[i]);
+  }
+
+ return function() {
+ return __method.apply(object, args);
+ };
+}; 
+
+String.prototype.trim = function() {
+  return this.replace(/^\s+|\s+$/g,"");
+};
+
+// Prints javascript types as readable strings.
+Inspect = function(obj) {
+  if(typeof(obj) != 'object') {
+    return obj;
+  }
+
+  else if (obj instanceof Array) {
+    var objRep = [];
+    for(var prop in obj) { 
+      if(obj.hasOwnProperty(prop)) {
+        objRep.push(obj[prop]); 
+      }
+    }
+    return '[' + objRep.join(', ') + ']';
+  }
+
+  else {
+    var objRep = [];
+    for(var prop in obj) {
+      if(obj.hasOwnProperty(prop)) {
+        objRep.push(prop + ': ' + ((typeof(obj[prop]) == 'object') ? Inspect(obj[prop]) : obj[prop]));
+      }
+    }
+    return '{' + objRep.join(', ') + '}';
+  }
+};
+
+// Prints an array of javascript objects.
+CollectionInspect = function(coll) {
+  var str = '';
+  for(var i=0; i<coll.length; i++) {
+    str += Inspect(coll[i]) + '<br />'; 
+  }
+  return str;
+};
diff --git a/planetstack/core/xoslib/static/js/xsh/xsh.js b/planetstack/core/xoslib/static/js/xsh/xsh.js
new file mode 100644 (file)
index 0000000..758559f
--- /dev/null
@@ -0,0 +1,408 @@
+// TryMongo
+//
+// Copyright (c) 2009 Kyle Banker
+// Licensed under the MIT Licence.
+// http://www.opensource.org/licenses/mit-license.php
+
+// Readline class to handle line input.
+var ReadLine = function(options) {
+  this.options      = options || {};
+  this.htmlForInput = this.options.htmlForInput;
+  this.inputHandler = this.options.handler || this.mockHandler;
+  this.scoper       = this.options.scoper;
+  this.terminal     = $(this.options.terminalId || "#terminal");
+  this.lineClass    = this.options.lineClass || '.readLine';
+  this.history      = [];
+  this.historyPtr   = 0;
+
+  this.initialize();
+};
+
+ReadLine.prototype = {
+
+  initialize: function() {
+    this.addInputLine();
+  },
+
+  // Enter a new input line with proper behavior.
+  addInputLine: function(stackLevel) {
+    stackLevel = stackLevel || 0;
+    this.terminal.append(this.htmlForInput(stackLevel));
+    var ctx = this;
+    ctx.activeLine = $(this.lineClass + '.active');
+
+    // Bind key events for entering and navigting history.
+    ctx.activeLine.bind("keydown", function(ev) {
+      switch (ev.keyCode) {
+        case EnterKeyCode:
+          ctx.processInput(this.value); 
+          break;
+        case UpArrowKeyCode: 
+          ctx.getCommand('previous');
+          break;
+        case DownArrowKeyCode: 
+          ctx.getCommand('next');
+          break;
+      }
+    });
+
+    this.activeLine.focus();
+  },
+
+  // Returns the 'next' or 'previous' command in this history.
+  getCommand: function(direction) {
+    if(this.history.length === 0) {
+      return;
+    }
+    this.adjustHistoryPointer(direction);
+    this.activeLine[0].value = this.history[this.historyPtr];
+    $(this.activeLine[0]).focus();
+    //this.activeLine[0].value = this.activeLine[0].value;
+  },
+
+  // Moves the history pointer to the 'next' or 'previous' position. 
+  adjustHistoryPointer: function(direction) {
+    if(direction == 'previous') {
+      if(this.historyPtr - 1 >= 0) {
+        this.historyPtr -= 1;
+      }
+    }
+    else {
+      if(this.historyPtr + 1 < this.history.length) {
+        this.historyPtr += 1;
+      }
+    }
+  },
+
+  // Return the handler's response.
+  processInput: function(value) {
+    var response = this.inputHandler.apply(this.scoper, [value]);
+    this.insertResponse(response.result);
+
+    // Save to the command history...
+    if((lineValue = value.trim()) !== "") {
+      this.history.push(lineValue);
+      this.historyPtr = this.history.length;
+    }
+
+    // deactivate the line...
+    this.activeLine.value = "";
+    this.activeLine.attr({disabled: true});
+    this.activeLine.removeClass('active');
+
+    // and add add a new command line.
+    this.addInputLine(response.stack);
+  },
+
+  insertResponse: function(response) {
+    if((response.length < 1) || (response=='"donotprintme"') || (response=='donotprintme')) {
+      this.activeLine.parent().append("<p class='response'></p>");
+    }
+    else {
+      this.activeLine.parent().append("<p class='response'>" + response + "</p>");
+    }
+  },
+
+  // Simply return the entered string if the user hasn't specified a smarter handler.
+  mockHandler: function(inputString) {
+    return function() {
+      this._process = function() { return inputString; };
+    };
+  }
+};
+
+var MongoHandler = function() {
+  this._currentCommand = "";
+  this._rawCommand     = "";
+  this._commandStack   = 0;
+  this._tutorialPtr    = 0;
+  this._tutorialMax    = 4;
+
+  this._mongo          = {};
+  this._mongo.test     = [];
+  this.collections     = [];
+};
+
+MongoHandler.prototype = {
+
+  _process: function(inputString, errorCheck) {
+    this._rawCommand += ' ' + inputString;
+
+    try {
+      inputString += '  '; // fixes certain bugs with the tokenizer.
+      var tokens    = inputString.tokens();
+      var mongoFunc = this._getCommand(tokens);
+      if(this._commandStack === 0 && inputString.match(/^\s*$/)) {
+        return {stack: 0, result: ''};
+      }
+      else if(this._commandStack === 0 && mongoFunc) {
+        this._resetCurrentCommand();
+        return {stack: 0, result: mongoFunc.apply(this, [tokens])};
+      }
+      else {
+        return this._evaluator(tokens);
+      }
+    }
+
+    catch(err) {
+        this._resetCurrentCommand();
+        console.trace();
+        return {stack: 0, result: "JS Error: " + err};
+    }
+  },
+
+  // Calls eval on the input string when ready.
+  _evaluator: function(tokens) {
+    isAssignment = tokens.length>=2 && tokens[0].type=="name" && tokens[1].type=="operator" && tokens[1].value=="=";
+
+    this._currentCommand += " " + this._massageTokens(tokens);
+    if(this._shouldEvaluateCommand(tokens))  {
+        print = this.print;
+
+        // So this eval statement is the heart of the REPL.
+        var result = eval(this._currentCommand.trim());
+        if(result === undefined) {
+          throw('result is undefined');
+        } else if (typeof(result) === 'function') {
+          throw('result is a function. did you mean to call it?');
+        } else {
+          result = $htmlFormat(result);
+        }
+        this._resetCurrentCommand();
+        if (isAssignment) {
+            return {stack: this._commandStack, result: ""};
+        } else {
+            return {stack: this._commandStack, result: result};
+        }
+      }
+
+    else {
+      return {stack: this._commandStack, result: ""};
+    }
+  },
+
+  _resetCurrentCommand: function() {
+    this._currentCommand = '';
+    this._rawCommand     = '';
+  },
+
+  // Evaluate only when we've exited any blocks.
+  _shouldEvaluateCommand: function(tokens) {
+    for(var i=0; i < tokens.length; i++) {
+      var token = tokens[i];
+      if(token.type == 'operator') {
+        if(token.value == '(' || token.value == '{') {
+          this._commandStack += 1;
+        }
+        else if(token.value == ')' || token.value == '}') {
+          this._commandStack -= 1;
+        }
+      }
+    }
+
+    if(this._commandStack === 0) {
+      return true;
+    }
+    else {
+      return false;
+    }
+  },
+
+  _massageTokens: function(tokens) {
+    for(var i=0; i < tokens.length; i++) {
+      if(tokens[i].type == 'name') {
+        if(tokens[i].value == 'var') {
+          tokens[i].value = '';
+        }
+      }
+    }
+    return this._collectTokens(tokens);
+  },
+
+  // Collects tokens into a string, placing spaces between variables.
+  // This methods is called after we scope the vars.
+  _collectTokens: function(tokens) {
+    var result = "";
+    for(var i=0; i < tokens.length; i++) {
+      if(tokens[i].type == "name" && tokens[i+1] && tokens[i+1].type == 'name') {
+        result += tokens[i].value + ' ';
+      }
+      else if (tokens[i].type == 'string') {
+        result += "'" + tokens[i].value + "'";
+      }
+      else {
+        result += tokens[i].value;
+      }
+    }
+    return result;
+  },
+
+  // print output to the screen, e.g., in a loop
+  // TODO: remove dependency here
+  print: function() {
+   $('.readLine.active').parent().append('<p>' + JSON.stringify(arguments[0]) + '</p>');
+   return "donotprintme";
+  },
+
+  /* MongoDB     */
+  /* ________________________________________ */
+
+  // help command
+  _help: function() {
+      return PTAG('HELP') +
+             PTAG('xos                                 list xos API object types') +
+             PTAG('xos.slices.fetch()                  fetch slices from the server') +
+             PTAG('xos.slices                          get the slices that were fetched');
+
+  },
+
+  _tutorial: function() {
+    this._tutorialPtr = 0;
+    return PTAG("This is a self-guided tutorial on the xos shell.") +
+           PTAG("The tutorial is simple, more or less a few basic commands to try.") +
+           PTAG("To go directly to any part tutorial, enter one of the commands t0, t1, t2...t10") +
+           PTAG("Otherwise, use 'next' and 'back'. Start by typing 'next' and pressing enter.");
+  },
+
+  // go to the next step in the tutorial.
+  _next: function() {
+    if(this._tutorialPtr < this._tutorialMax) {
+      return this['_t' + (this._tutorialPtr + 1)]();
+    }
+    else {
+      return "You've reached the end of the tutorial. To go to the beginning, type 'tutorial'";
+    }
+  },
+
+  // go to the previous step in the tutorial.
+  _back: function() {
+    if(this._tutorialPtr > 1) {
+      return this['_t' + (this._tutorialPtr - 1)]();
+    }
+    else {
+      return this._tutorial();
+    }
+  },
+
+  _t1: function() {
+    this._tutorialPtr = 1;
+    return PTAG('1. JavaScript Shell') +
+           PTAG('The first thing to notice is that the MongoDB shell is JavaScript-based.') +
+           PTAG('So you can do things like:') +
+           PTAG('  a = 5; ') +
+           PTAG('  a * 10; ') +
+           PTAG('  print(a); ') +
+           PTAG("  for(i=0; i<10; i++) { print('hello'); }; ") +
+           PTAG("Try a few JS commands; when you're ready to move on, enter 'next'");
+
+  },
+
+  _t2: function() {
+    this._tutorialPtr = 2;
+    return PTAG('2. Reading from the server is asynchronous') +
+           PTAG('Try these:') +
+           PTAG('    xos.slices.models;') +
+           PTAG('    // the above should have printed empty list') +
+           PTAG('    xos.slices.fetch();') +
+           PTAG('    // wait a second or two...') +
+           PTAG('    xos.slices.models;');
+
+  },
+
+  _t3: function() {
+    this._tutorialPtr = 3;
+    return PTAG('3. Responding to events') +
+           PTAG('Try these:') +
+           PTAG('    xos.slices.fetch();') +
+           PTAG('    tmp=xos.slices.on("change", function() { alert("woot!"); });') +
+           PTAG('    xos.slices.models[0].set("description", "somerandomtext");');
+
+  },
+
+  _t4: function() {
+    this._tutorialPtr = 4;
+    return PTAG('4. Available xos objects and methods') +
+           PTAG('Try these:') +
+           PTAG('    xos.listObjects();') +
+           PTAG('    xos.slices.listMethods();');
+
+  },
+
+  _getCommand: function(tokens) {
+    if(tokens[0] && ArrayInclude(MongoKeywords,(tokens[0].value + '').toLowerCase())) {
+      switch(tokens[0].value.toLowerCase()) {
+        case 'help':
+          return this._help;
+
+        case 'tutorial':
+          return this._tutorial;
+        case 'next':
+          return this._next;
+        case 'back':
+          return this._back;
+        case 't0':
+          return this._tutorial;
+        case 't1':
+          return this._t1;
+        case 't2':
+          return this._t2;
+        case 't3':
+          return this._t3;
+        case 't4':
+          return this._t4;
+      }
+    }
+  }
+};
+
+function replaceAll(find, replace, str) {
+  return str.replace(new RegExp(find, 'g'), replace);\r
+}
+
+/* stackoverflow: http://stackoverflow.com/questions/4810841/how-can-i-pretty-print-json-using-javascript */
+function syntaxHighlight(json) {
+    if ( json.hasOwnProperty("__str__")) {
+        return syntaxHighlight(json.__str__());
+    }
+    if (typeof json != 'string') {\r
+         json = JSON.stringify(json, undefined, "\t");\r
+    }\r
+    json = json.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\r
+    return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) {\r
+        var cls = 'terminal_number';\r
+        if (/^"/.test(match)) {\r
+            if (/:$/.test(match)) {\r
+                cls = 'terminal_key';\r
+            } else {\r
+                cls = 'terminal_string';\r
+            }\r
+        } else if (/true|false/.test(match)) {\r
+            cls = 'terminal_boolean';\r
+        } else if (/null/.test(match)) {\r
+            cls = 'terminal_null';\r
+        }\r
+        return '<span class="' + cls + '">' + match + '</span>';\r
+    });\r
+}
+
+$htmlFormat = function(obj) {
+  //JSON.stringify(obj,undefined,2)
+  result=replaceAll("\t","&nbsp;",replaceAll("\n","<br>",syntaxHighlight(obj))); //tojson(obj, ' ', ' ', true);
+  return result;
+}
+
+function startTerminal() {
+  var mongo       = new MongoHandler();
+  var terminal    = new ReadLine({htmlForInput: DefaultInputHtml,
+                                  handler: mongo._process,
+                                  scoper: mongo});
+  $("#terminal_help1").show();
+  $("#terminal_help2").show();
+  $("#terminal_wait").hide();
+
+  $("#terminal").bind('click', function() { $(".readLine.active").focus(); });
+};
+
+$(document).ready(function() {
+    startTerminal();
+});
diff --git a/planetstack/core/xoslib/templates/mustache/detailApp.mustache b/planetstack/core/xoslib/templates/mustache/detailApp.mustache
new file mode 100644 (file)
index 0000000..e415945
--- /dev/null
@@ -0,0 +1,8 @@
+<h2>
+  <a class="home" href="/">All Slivers</a>
+</h2>
+<ul id="slivers">
+  <li class="sliver"
+      {{>sliverTemplate}}
+  </li>
+</ul>
diff --git a/planetstack/core/xoslib/templates/mustache/listApp.mustache b/planetstack/core/xoslib/templates/mustache/listApp.mustache
new file mode 100644 (file)
index 0000000..3af7ebe
--- /dev/null
@@ -0,0 +1,3 @@
+<h2>All Slivers</h2>
+<ul id="slivers">
+</ul>
diff --git a/planetstack/core/xoslib/templates/mustache/sliverTemplate.mustache b/planetstack/core/xoslib/templates/mustache/sliverTemplate.mustache
new file mode 100644 (file)
index 0000000..9959a19
--- /dev/null
@@ -0,0 +1 @@
+<a class="permalink" href="/{{id}}/">{{ name }}</a>
diff --git a/planetstack/core/xoslib/templatetags/mustache.py b/planetstack/core/xoslib/templatetags/mustache.py
new file mode 100644 (file)
index 0000000..a3b3b2a
--- /dev/null
@@ -0,0 +1,51 @@
+from django import template
+from django.conf import settings
+import pystache
+import os
+
+register = template.Library()
+
+class View(pystache.View):
+    template_path = settings.TEMPLATE_DIRS[0]
+
+    def __init__(self, template_dir, template_name, context):
+        self.template_path = template_dir
+        self.template_name = template_name
+        return super(View, self).__init__(context=context)
+
+class MustacheNode(template.Node):
+    def __init__(self, template_name, attr=None):
+        for template_dir in settings.TEMPLATE_DIRS:
+            if os.path.exists(os.path.join(template_dir, template_name) + ".mustache"):
+                break
+        else:
+            raise IOError("failed to find %s in %s" % (template_name, str(settings.TEMPLATE_DIRS)))
+
+        self.template_path = template_dir
+        self.template = template_name
+        self.attr = attr
+
+    def render(self, context):
+        mcontext = context[self.attr] if self.attr else {}
+        view = View(self.template_path, self.template, context=mcontext)
+        return view.render()
+
+def do_mustache(parser, token):
+    """
+    Loads a mustache template and render it inline
+    
+    Example::
+    
+    {% mustache "foo/bar" data %}
+    
+    """
+    bits = token.split_contents()
+    if len(bits) not in  [2,3]:
+        raise template.TemplateSyntaxError("%r tag takes two arguments: the location of the template file, and the template context" % bits[0])
+    path = bits[1]
+    path = path[1:-1]
+    attrs = bits[2:]
+    return MustacheNode(path, *attrs)
+
+
+register.tag("mustache", do_mustache)
diff --git a/planetstack/core/xoslib/templatetags/straight_include.py b/planetstack/core/xoslib/templatetags/straight_include.py
new file mode 100644 (file)
index 0000000..54710f3
--- /dev/null
@@ -0,0 +1,62 @@
+"""
+Straight Include template tag by @HenrikJoreteg
+
+Django templates don't give us any way to escape template tags.
+
+So if you ever need to include client side templates for ICanHaz.js (or anything else that
+may confuse django's templating engine) You can is this little snippet.
+
+Just use it as you would a normal {% include %} tag. It just won't process the included text.
+
+It assumes your included templates are in you django templates directory.
+
+Usage:
+
+{% load straight_include %}
+
+{% straight_include "my_icanhaz_templates.html" %}
+
+"""
+
+import os
+from django import template
+from django.conf import settings
+
+
+register = template.Library()
+
+
+class StraightIncludeNode(template.Node):
+    def __init__(self, template_path):
+        for template_dir in settings.TEMPLATE_DIRS:
+            self.filepath = '%s/%s' % (template_dir, template_path)
+            if os.path.exists(self.filepath):
+                break
+        else:
+            raise IOError("cannot find %s in %s" % (template_path, str(TEMPLATE_DIRS)))
+
+    def render(self, context):
+        fp = open(self.filepath, 'r')
+        output = fp.read()
+        fp.close()
+        return output
+
+
+def do_straight_include(parser, token):
+    """
+    Loads a template and includes it without processing it
+    
+    Example::
+    
+    {% straight_include "foo/some_include" %}
+    
+    """
+    bits = token.split_contents()
+    if len(bits) != 2:
+        raise template.TemplateSyntaxError("%r tag takes one argument: the location of the file within the template folder" % bits[0])
+    path = bits[1][1:-1]
+    
+    return StraightIncludeNode(path)
+
+
+register.tag("straight_include", do_straight_include)
diff --git a/planetstack/core/xoslib/up.sh b/planetstack/core/xoslib/up.sh
new file mode 100755 (executable)
index 0000000..bc2d469
--- /dev/null
@@ -0,0 +1,4 @@
+scp static/js/*.js princeton_planetstack@node43.princeton.vicci.org:/opt/planetstack/core/xoslib/static/js/
+scp templates/mustache/*.mustache princeton_planetstack@node43.princeton.vicci.org:/opt/planetstack/core/xoslib/templates/mustache/
+scp static/xsh/*.js princeton_planetstack@node43.princeton.vicci.org:/opt/planetstack/core/xoslib/static/xsh/
+scp dashboards/*.html princeton_planetstack@node43.princeton.vicci.org:/opt/planetstack/templates/admin/dashboard/
diff --git a/planetstack/genapi.py b/planetstack/genapi.py
new file mode 100644 (file)
index 0000000..86a5dd3
--- /dev/null
@@ -0,0 +1,2405 @@
+from rest_framework.decorators import api_view
+from rest_framework.response import Response
+from rest_framework.reverse import reverse
+from rest_framework import serializers
+from rest_framework import generics
+from core.models import *
+from django.forms import widgets
+
+"""
+       Schema of the generator object:
+               all: Set of all Model objects
+               all_if(regex): Set of Model objects that match regex
+       
+       Model object:
+               plural: English plural of object name
+               camel: CamelCase version of object name
+               refs: list of references to other Model objects
+               props: list of properties minus refs
+
+       TODO: Deal with subnets
+"""
+
+# Based on api_root.py
+
+@api_view(['GET'])
+def api_root(request, format=None):
+    return Response({
+               'serviceattributes': reverse('serviceattribute-list', request=request, format=format),
+               'images': reverse('image-list', request=request, format=format),
+               'networkparameters': reverse('networkparameter-list', request=request, format=format),
+               'sites': reverse('site-list', request=request, format=format),
+               'sliceroles': reverse('slicerole-list', request=request, format=format),
+               'tags': reverse('tag-list', request=request, format=format),
+               'invoices': reverse('invoice-list', request=request, format=format),
+               'planetstackroles': reverse('planetstackrole-list', request=request, format=format),
+               'sliceprivileges': reverse('sliceprivilege-list', request=request, format=format),
+               'networkslivers': reverse('networksliver-list', request=request, format=format),
+               'networkdeploymentses': reverse('networkdeployments-list', request=request, format=format),
+               'slices': reverse('slice-list', request=request, format=format),
+               'networks': reverse('network-list', request=request, format=format),
+               'services': reverse('service-list', request=request, format=format),
+               'serviceclasses': reverse('serviceclass-list', request=request, format=format),
+               'payments': reverse('payment-list', request=request, format=format),
+               'charges': reverse('charge-list', request=request, format=format),
+               'roles': reverse('role-list', request=request, format=format),
+               'usableobjects': reverse('usableobject-list', request=request, format=format),
+               'siteroles': reverse('siterole-list', request=request, format=format),
+               'slivers': reverse('sliver-list', request=request, format=format),
+               'nodes': reverse('node-list', request=request, format=format),
+               'dashboardviews': reverse('dashboardview-list', request=request, format=format),
+               'imagedeploymentses': reverse('imagedeployments-list', request=request, format=format),
+               'reservedresources': reverse('reservedresource-list', request=request, format=format),
+               'networkslices': reverse('networkslice-list', request=request, format=format),
+               'userdashboardviews': reverse('userdashboardview-list', request=request, format=format),
+               'planetstackprivileges': reverse('planetstackprivilege-list', request=request, format=format),
+               'users': reverse('user-list', request=request, format=format),
+               'deployments': reverse('deployment-list', request=request, format=format),
+               'reservations': reverse('reservation-list', request=request, format=format),
+               'slicedeploymentses': reverse('slicedeployments-list', request=request, format=format),
+               'siteprivileges': reverse('siteprivilege-list', request=request, format=format),
+               'planetstacks': reverse('planetstack-list', request=request, format=format),
+               'userdeploymentses': reverse('userdeployments-list', request=request, format=format),
+               'accounts': reverse('account-list', request=request, format=format),
+               'networkparametertypes': reverse('networkparametertype-list', request=request, format=format),
+               'sitedeploymentses': reverse('sitedeployments-list', request=request, format=format),
+               'deploymentprivileges': reverse('deploymentprivilege-list', request=request, format=format),
+               'deploymentroles': reverse('deploymentrole-list', request=request, format=format),
+               'projects': reverse('project-list', request=request, format=format),
+               'slicetags': reverse('slicetag-list', request=request, format=format),
+               'networktemplates': reverse('networktemplate-list', request=request, format=format),
+               'routers': reverse('router-list', request=request, format=format),
+               'serviceresources': reverse('serviceresource-list', request=request, format=format),
+               
+    })
+
+# Based on serializers.py
+
+
+
+class ServiceAttributeSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = ServiceAttribute
+               fields = ('id','created','updated','enacted','name','value','service',)
+
+
+class ImageSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = Image
+               fields = ('id','created','updated','enacted','name','disk_format','container_format','path',)
+
+
+class NetworkParameterSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = NetworkParameter
+               fields = ('id','created','updated','enacted','parameter','value','content_type','object_id',)
+
+
+class SiteSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = Site
+               fields = ('id','created','updated','enacted','name','site_url','enabled','location','longitude','latitude','login_base','is_public','abbreviated_name',)
+
+
+class SliceRoleSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = SliceRole
+               fields = ('id','created','updated','enacted','role',)
+
+
+class TagSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       
+       sites = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='site-detail')
+       
+       
+       
+       slices = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='slice-detail')
+       
+       
+       
+       slivers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='sliver-detail')
+       
+       
+       
+       nodes = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='node-detail')
+       
+       
+       class Meta:
+               model = Tag
+               fields = ('id','created','updated','enacted','service','name','value','content_type','object_id','sites','slices','slivers','nodes',)
+
+
+class InvoiceSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = Invoice
+               fields = ('id','created','updated','enacted','date','account',)
+
+
+class PlanetStackRoleSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = PlanetStackRole
+               fields = ('id','created','updated','enacted','role',)
+
+
+class SlicePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = SlicePrivilege
+               fields = ('id','created','updated','enacted','user','slice','role',)
+
+
+class NetworkSliverSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = NetworkSliver
+               fields = ('id','created','updated','enacted','network','sliver','ip','port_id',)
+
+
+class NetworkDeploymentsSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = NetworkDeployments
+               fields = ('id','created','updated','enacted','network','deployment','net_id','router_id','subnet_id','subnet',)
+
+
+class SliceSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       
+       networks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')
+       
+       
+       
+       availableNetworks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')
+       
+       
+       
+       networks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')
+       
+       
+       
+       networks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')
+       
+       
+       class Meta:
+               model = Slice
+               fields = ('id','created','updated','enacted','name','enabled','omf_friendly','description','slice_url','site','max_slivers','imagePreference','service','network','mountDataSets','serviceClass','creator','networks','availableNetworks','networks','networks',)
+
+
+class NetworkSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       
+       routers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='router-detail')
+       
+       
+       
+       availableRouters = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='router-detail')
+       
+       
+       
+       routers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='router-detail')
+       
+       
+       
+       routers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='router-detail')
+       
+       
+       class Meta:
+               model = Network
+               fields = ('id','created','updated','enacted','name','template','subnet','ports','labels','owner','guaranteedBandwidth','permitAllSlices','network_id','router_id','subnet_id','routers','availableRouters','routers','routers',)
+
+
+class ServiceSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = Service
+               fields = ('id','created','updated','enacted','description','enabled','name','versionNumber','published',)
+
+
+class ServiceClassSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = ServiceClass
+               fields = ('id','created','updated','enacted','name','description','commitment','membershipFee','membershipFeeMonths','upgradeRequiresApproval',)
+
+
+class PaymentSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = Payment
+               fields = ('id','created','updated','enacted','account','amount','date',)
+
+
+class ChargeSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = Charge
+               fields = ('id','created','updated','enacted','account','slice','kind','state','date','object','amount','coreHours','invoice',)
+
+
+class RoleSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = Role
+               fields = ('id','created','updated','enacted','role_type','role','description','content_type',)
+
+
+class UsableObjectSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = UsableObject
+               fields = ('id','created','updated','enacted','name',)
+
+
+class SiteRoleSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = SiteRole
+               fields = ('id','created','updated','enacted','role',)
+
+
+class SliverSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       
+       networks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')
+       
+       
+       
+       networks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')
+       
+       
+       
+#      upgradeFrom_rel_+ = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='serviceclass-detail')
+       
+       
+       class Meta:
+               model = Sliver
+               fields = ('id','created','updated','enacted','instance_id','name','instance_name','ip','image','creator','slice','node','deploymentNetwork','numberCores','userData','networks','networks','upgradeFrom_rel_+',)
+
+
+class NodeSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = Node
+               fields = ('id','created','updated','enacted','name','site','deployment',)
+
+
+class DashboardViewSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = DashboardView
+               fields = ('id','created','updated','enacted','name','url',)
+
+
+class ImageDeploymentsSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = ImageDeployments
+               fields = ('id','created','updated','enacted','image','deployment','glance_image_id',)
+
+
+class ReservedResourceSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = ReservedResource
+               fields = ('id','created','updated','enacted','sliver','resource','quantity','reservationSet',)
+
+
+class NetworkSliceSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = NetworkSlice
+               fields = ('id','created','updated','enacted','network','slice',)
+
+
+class UserDashboardViewSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = UserDashboardView
+               fields = ('id','created','updated','enacted','user','dashboardView','order',)
+
+
+class PlanetStackPrivilegeSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = PlanetStackPrivilege
+               fields = ('id','created','updated','enacted','user','planetstack','role',)
+
+
+class UserSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = User
+               fields = ('id','password','last_login','email','username','firstname','lastname','phone','user_url','site','public_key','is_active','is_admin','is_staff','is_readonly','created','updated','enacted','timezone',)
+
+
+class DeploymentSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       
+       sites = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='site-detail')
+       
+       
+       
+       sites = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='site-detail')
+       
+       
+       class Meta:
+               model = Deployment
+               fields = ('id','created','updated','enacted','name','admin_user','admin_password','admin_tenant','auth_url','accessControl','sites','sites',)
+
+
+class ReservationSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = Reservation
+               fields = ('id','created','updated','enacted','startTime','slice','duration',)
+
+
+class SliceDeploymentsSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = SliceDeployments
+               fields = ('id','created','updated','enacted','slice','deployment','tenant_id','network_id','router_id','subnet_id',)
+
+
+class SitePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = SitePrivilege
+               fields = ('id','created','updated','enacted','user','site','role',)
+
+
+class PlanetStackSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = PlanetStack
+               fields = ('id','created','updated','enacted','description',)
+
+
+class UserDeploymentsSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = UserDeployments
+               fields = ('id','created','updated','enacted','user','deployment','kuser_id',)
+
+
+class AccountSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = Account
+               fields = ('id','created','updated','enacted','site',)
+
+
+class NetworkParameterTypeSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = NetworkParameterType
+               fields = ('id','created','updated','enacted','name','description',)
+
+
+class SiteDeploymentsSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = SiteDeployments
+               fields = ('id','created','updated','enacted','site','deployment','tenant_id',)
+
+
+class DeploymentPrivilegeSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = DeploymentPrivilege
+               fields = ('id','created','updated','enacted','user','deployment','role',)
+
+
+class DeploymentRoleSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = DeploymentRole
+               fields = ('id','created','updated','enacted','role',)
+
+
+class ProjectSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = Project
+               fields = ('id','created','updated','enacted','name',)
+
+
+class SliceTagSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = SliceTag
+               fields = ('id','created','updated','enacted','slice','name','value',)
+
+
+class NetworkTemplateSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = NetworkTemplate
+               fields = ('id','created','updated','enacted','name','description','guaranteedBandwidth','visibility','translation','sharedNetworkName','sharedNetworkId',)
+
+
+class RouterSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = Router
+               fields = ('id','created','updated','enacted','name','owner',)
+
+
+class ServiceResourceSerializer(serializers.HyperlinkedModelSerializer):
+       id = serializers.Field()
+       
+       class Meta:
+               model = ServiceResource
+               fields = ('id','created','updated','enacted','serviceClass','name','maxUnitsDeployment','maxUnitsNode','maxDuration','bucketInRate','bucketMaxSize','cost','calendarReservable',)
+
+
+serializerLookUp = { 
+
+                 ServiceAttribute: ServiceAttributeSerializer,
+
+                 Image: ImageSerializer,
+
+                 NetworkParameter: NetworkParameterSerializer,
+
+                 Site: SiteSerializer,
+
+                 SliceRole: SliceRoleSerializer,
+
+                 Tag: TagSerializer,
+
+                 Invoice: InvoiceSerializer,
+
+                 PlanetStackRole: PlanetStackRoleSerializer,
+
+                 SlicePrivilege: SlicePrivilegeSerializer,
+
+                 NetworkSliver: NetworkSliverSerializer,
+
+                 NetworkDeployments: NetworkDeploymentsSerializer,
+
+                 Slice: SliceSerializer,
+
+                 Network: NetworkSerializer,
+
+                 Service: ServiceSerializer,
+
+                 ServiceClass: ServiceClassSerializer,
+
+                 Payment: PaymentSerializer,
+
+                 Charge: ChargeSerializer,
+
+                 Role: RoleSerializer,
+
+                 UsableObject: UsableObjectSerializer,
+
+                 SiteRole: SiteRoleSerializer,
+
+                 Sliver: SliverSerializer,
+
+                 Node: NodeSerializer,
+
+                 DashboardView: DashboardViewSerializer,
+
+                 ImageDeployments: ImageDeploymentsSerializer,
+
+                 ReservedResource: ReservedResourceSerializer,
+
+                 NetworkSlice: NetworkSliceSerializer,
+
+                 UserDashboardView: UserDashboardViewSerializer,
+
+                 PlanetStackPrivilege: PlanetStackPrivilegeSerializer,
+
+                 User: UserSerializer,
+
+                 Deployment: DeploymentSerializer,
+
+                 Reservation: ReservationSerializer,
+
+                 SliceDeployments: SliceDeploymentsSerializer,
+
+                 SitePrivilege: SitePrivilegeSerializer,
+
+                 PlanetStack: PlanetStackSerializer,
+
+                 UserDeployments: UserDeploymentsSerializer,
+
+                 Account: AccountSerializer,
+
+                 NetworkParameterType: NetworkParameterTypeSerializer,
+
+                 SiteDeployments: SiteDeploymentsSerializer,
+
+                 DeploymentPrivilege: DeploymentPrivilegeSerializer,
+
+                 DeploymentRole: DeploymentRoleSerializer,
+
+                 Project: ProjectSerializer,
+
+                 SliceTag: SliceTagSerializer,
+
+                 NetworkTemplate: NetworkTemplateSerializer,
+
+                 Router: RouterSerializer,
+
+                 ServiceResource: ServiceResourceSerializer,
+
+                 None: None,
+                }
+
+# Based on core/views/*.py
+
+
+class ServiceAttributeList(generics.ListCreateAPIView):
+    queryset = ServiceAttribute.objects.select_related().all()
+    serializer_class = ServiceAttributeSerializer
+    
+    def get_queryset(self):
+        return ServiceAttribute.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = ServiceAttribute().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(ServiceAttributeList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class ServiceAttributeDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = ServiceAttribute.objects.select_related().all()
+    serializer_class = ServiceAttributeSerializer
+    
+    def get_queryset(self):
+        return ServiceAttribute.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(ServiceAttributeDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(ServiceAttributeDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class ImageList(generics.ListCreateAPIView):
+    queryset = Image.objects.select_related().all()
+    serializer_class = ImageSerializer
+    
+    def get_queryset(self):
+        return Image.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = Image().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(ImageList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class ImageDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Image.objects.select_related().all()
+    serializer_class = ImageSerializer
+    
+    def get_queryset(self):
+        return Image.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(ImageDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(ImageDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class NetworkParameterList(generics.ListCreateAPIView):
+    queryset = NetworkParameter.objects.select_related().all()
+    serializer_class = NetworkParameterSerializer
+    
+    def get_queryset(self):
+        return NetworkParameter.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = NetworkParameter().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(NetworkParameterList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class NetworkParameterDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = NetworkParameter.objects.select_related().all()
+    serializer_class = NetworkParameterSerializer
+    
+    def get_queryset(self):
+        return NetworkParameter.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(NetworkParameterDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(NetworkParameterDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class SiteList(generics.ListCreateAPIView):
+    queryset = Site.objects.select_related().all()
+    serializer_class = SiteSerializer
+    
+    def get_queryset(self):
+        return Site.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = Site().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(SiteList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class SiteDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Site.objects.select_related().all()
+    serializer_class = SiteSerializer
+    
+    def get_queryset(self):
+        return Site.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(SiteDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(SiteDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class SliceRoleList(generics.ListCreateAPIView):
+    queryset = SliceRole.objects.select_related().all()
+    serializer_class = SliceRoleSerializer
+    
+    def get_queryset(self):
+        return SliceRole.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = SliceRole().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(SliceRoleList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class SliceRoleDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = SliceRole.objects.select_related().all()
+    serializer_class = SliceRoleSerializer
+    
+    def get_queryset(self):
+        return SliceRole.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(SliceRoleDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(SliceRoleDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class TagList(generics.ListCreateAPIView):
+    queryset = Tag.objects.select_related().all()
+    serializer_class = TagSerializer
+    
+    def get_queryset(self):
+        return Tag.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = Tag().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(TagList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class TagDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Tag.objects.select_related().all()
+    serializer_class = TagSerializer
+    
+    def get_queryset(self):
+        return Tag.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(TagDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(TagDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class InvoiceList(generics.ListCreateAPIView):
+    queryset = Invoice.objects.select_related().all()
+    serializer_class = InvoiceSerializer
+    
+    def get_queryset(self):
+        return Invoice.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = Invoice().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(InvoiceList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class InvoiceDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Invoice.objects.select_related().all()
+    serializer_class = InvoiceSerializer
+    
+    def get_queryset(self):
+        return Invoice.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(InvoiceDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(InvoiceDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class PlanetStackRoleList(generics.ListCreateAPIView):
+    queryset = PlanetStackRole.objects.select_related().all()
+    serializer_class = PlanetStackRoleSerializer
+    
+    def get_queryset(self):
+        return PlanetStackRole.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = PlanetStackRole().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(PlanetStackRoleList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class PlanetStackRoleDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = PlanetStackRole.objects.select_related().all()
+    serializer_class = PlanetStackRoleSerializer
+    
+    def get_queryset(self):
+        return PlanetStackRole.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(PlanetStackRoleDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(PlanetStackRoleDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class SlicePrivilegeList(generics.ListCreateAPIView):
+    queryset = SlicePrivilege.objects.select_related().all()
+    serializer_class = SlicePrivilegeSerializer
+    
+    def get_queryset(self):
+        return SlicePrivilege.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = SlicePrivilege().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(SlicePrivilegeList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class SlicePrivilegeDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = SlicePrivilege.objects.select_related().all()
+    serializer_class = SlicePrivilegeSerializer
+    
+    def get_queryset(self):
+        return SlicePrivilege.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(SlicePrivilegeDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(SlicePrivilegeDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class NetworkSliverList(generics.ListCreateAPIView):
+    queryset = NetworkSliver.objects.select_related().all()
+    serializer_class = NetworkSliverSerializer
+    
+    def get_queryset(self):
+        return NetworkSliver.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = NetworkSliver().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(NetworkSliverList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class NetworkSliverDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = NetworkSliver.objects.select_related().all()
+    serializer_class = NetworkSliverSerializer
+    
+    def get_queryset(self):
+        return NetworkSliver.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(NetworkSliverDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(NetworkSliverDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class NetworkDeploymentsList(generics.ListCreateAPIView):
+    queryset = NetworkDeployments.objects.select_related().all()
+    serializer_class = NetworkDeploymentsSerializer
+    
+    def get_queryset(self):
+        return NetworkDeployments.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = NetworkDeployments().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(NetworkDeploymentsList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class NetworkDeploymentsDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = NetworkDeployments.objects.select_related().all()
+    serializer_class = NetworkDeploymentsSerializer
+    
+    def get_queryset(self):
+        return NetworkDeployments.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(NetworkDeploymentsDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(NetworkDeploymentsDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class SliceList(generics.ListCreateAPIView):
+    queryset = Slice.objects.select_related().all()
+    serializer_class = SliceSerializer
+    
+    def get_queryset(self):
+        return Slice.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = Slice().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(SliceList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class SliceDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Slice.objects.select_related().all()
+    serializer_class = SliceSerializer
+    
+    def get_queryset(self):
+        return Slice.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(SliceDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(SliceDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class NetworkList(generics.ListCreateAPIView):
+    queryset = Network.objects.select_related().all()
+    serializer_class = NetworkSerializer
+    
+    def get_queryset(self):
+        return Network.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = Network().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(NetworkList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class NetworkDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Network.objects.select_related().all()
+    serializer_class = NetworkSerializer
+    
+    def get_queryset(self):
+        return Network.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(NetworkDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(NetworkDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class ServiceList(generics.ListCreateAPIView):
+    queryset = Service.objects.select_related().all()
+    serializer_class = ServiceSerializer
+    
+    def get_queryset(self):
+        return Service.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = Service().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(ServiceList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class ServiceDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Service.objects.select_related().all()
+    serializer_class = ServiceSerializer
+    
+    def get_queryset(self):
+        return Service.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(ServiceDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(ServiceDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class ServiceClassList(generics.ListCreateAPIView):
+    queryset = ServiceClass.objects.select_related().all()
+    serializer_class = ServiceClassSerializer
+    
+    def get_queryset(self):
+        return ServiceClass.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = ServiceClass().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(ServiceClassList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class ServiceClassDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = ServiceClass.objects.select_related().all()
+    serializer_class = ServiceClassSerializer
+    
+    def get_queryset(self):
+        return ServiceClass.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(ServiceClassDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(ServiceClassDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class PaymentList(generics.ListCreateAPIView):
+    queryset = Payment.objects.select_related().all()
+    serializer_class = PaymentSerializer
+    
+    def get_queryset(self):
+        return Payment.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = Payment().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(PaymentList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class PaymentDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Payment.objects.select_related().all()
+    serializer_class = PaymentSerializer
+    
+    def get_queryset(self):
+        return Payment.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(PaymentDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(PaymentDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class ChargeList(generics.ListCreateAPIView):
+    queryset = Charge.objects.select_related().all()
+    serializer_class = ChargeSerializer
+    
+    def get_queryset(self):
+        return Charge.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = Charge().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(ChargeList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class ChargeDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Charge.objects.select_related().all()
+    serializer_class = ChargeSerializer
+    
+    def get_queryset(self):
+        return Charge.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(ChargeDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(ChargeDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class RoleList(generics.ListCreateAPIView):
+    queryset = Role.objects.select_related().all()
+    serializer_class = RoleSerializer
+    
+    def get_queryset(self):
+        return Role.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = Role().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(RoleList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class RoleDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Role.objects.select_related().all()
+    serializer_class = RoleSerializer
+    
+    def get_queryset(self):
+        return Role.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(RoleDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(RoleDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class UsableObjectList(generics.ListCreateAPIView):
+    queryset = UsableObject.objects.select_related().all()
+    serializer_class = UsableObjectSerializer
+    
+    def get_queryset(self):
+        return UsableObject.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = UsableObject().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(UsableObjectList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class UsableObjectDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = UsableObject.objects.select_related().all()
+    serializer_class = UsableObjectSerializer
+    
+    def get_queryset(self):
+        return UsableObject.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(UsableObjectDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(UsableObjectDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class SiteRoleList(generics.ListCreateAPIView):
+    queryset = SiteRole.objects.select_related().all()
+    serializer_class = SiteRoleSerializer
+    
+    def get_queryset(self):
+        return SiteRole.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = SiteRole().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(SiteRoleList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class SiteRoleDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = SiteRole.objects.select_related().all()
+    serializer_class = SiteRoleSerializer
+    
+    def get_queryset(self):
+        return SiteRole.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(SiteRoleDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(SiteRoleDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class SliverList(generics.ListCreateAPIView):
+    queryset = Sliver.objects.select_related().all()
+    serializer_class = SliverSerializer
+    
+    def get_queryset(self):
+        return Sliver.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = Sliver().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(SliverList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class SliverDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Sliver.objects.select_related().all()
+    serializer_class = SliverSerializer
+    
+    def get_queryset(self):
+        return Sliver.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(SliverDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(SliverDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class NodeList(generics.ListCreateAPIView):
+    queryset = Node.objects.select_related().all()
+    serializer_class = NodeSerializer
+    
+    def get_queryset(self):
+        return Node.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = Node().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(NodeList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class NodeDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Node.objects.select_related().all()
+    serializer_class = NodeSerializer
+    
+    def get_queryset(self):
+        return Node.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(NodeDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(NodeDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class DashboardViewList(generics.ListCreateAPIView):
+    queryset = DashboardView.objects.select_related().all()
+    serializer_class = DashboardViewSerializer
+    
+    def get_queryset(self):
+        return DashboardView.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = DashboardView().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(DashboardViewList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class DashboardViewDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = DashboardView.objects.select_related().all()
+    serializer_class = DashboardViewSerializer
+    
+    def get_queryset(self):
+        return DashboardView.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(DashboardViewDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(DashboardViewDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class ImageDeploymentsList(generics.ListCreateAPIView):
+    queryset = ImageDeployments.objects.select_related().all()
+    serializer_class = ImageDeploymentsSerializer
+    
+    def get_queryset(self):
+        return ImageDeployments.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = ImageDeployments().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(ImageDeploymentsList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class ImageDeploymentsDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = ImageDeployments.objects.select_related().all()
+    serializer_class = ImageDeploymentsSerializer
+    
+    def get_queryset(self):
+        return ImageDeployments.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(ImageDeploymentsDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(ImageDeploymentsDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class ReservedResourceList(generics.ListCreateAPIView):
+    queryset = ReservedResource.objects.select_related().all()
+    serializer_class = ReservedResourceSerializer
+    
+    def get_queryset(self):
+        return ReservedResource.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = ReservedResource().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(ReservedResourceList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class ReservedResourceDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = ReservedResource.objects.select_related().all()
+    serializer_class = ReservedResourceSerializer
+    
+    def get_queryset(self):
+        return ReservedResource.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(ReservedResourceDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(ReservedResourceDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class NetworkSliceList(generics.ListCreateAPIView):
+    queryset = NetworkSlice.objects.select_related().all()
+    serializer_class = NetworkSliceSerializer
+    
+    def get_queryset(self):
+        return NetworkSlice.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = NetworkSlice().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(NetworkSliceList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class NetworkSliceDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = NetworkSlice.objects.select_related().all()
+    serializer_class = NetworkSliceSerializer
+    
+    def get_queryset(self):
+        return NetworkSlice.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(NetworkSliceDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(NetworkSliceDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class UserDashboardViewList(generics.ListCreateAPIView):
+    queryset = UserDashboardView.objects.select_related().all()
+    serializer_class = UserDashboardViewSerializer
+    
+    def get_queryset(self):
+        return UserDashboardView.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = UserDashboardView().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(UserDashboardViewList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class UserDashboardViewDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = UserDashboardView.objects.select_related().all()
+    serializer_class = UserDashboardViewSerializer
+    
+    def get_queryset(self):
+        return UserDashboardView.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(UserDashboardViewDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(UserDashboardViewDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class PlanetStackPrivilegeList(generics.ListCreateAPIView):
+    queryset = PlanetStackPrivilege.objects.select_related().all()
+    serializer_class = PlanetStackPrivilegeSerializer
+    
+    def get_queryset(self):
+        return PlanetStackPrivilege.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = PlanetStackPrivilege().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(PlanetStackPrivilegeList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class PlanetStackPrivilegeDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = PlanetStackPrivilege.objects.select_related().all()
+    serializer_class = PlanetStackPrivilegeSerializer
+    
+    def get_queryset(self):
+        return PlanetStackPrivilege.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(PlanetStackPrivilegeDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(PlanetStackPrivilegeDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class UserList(generics.ListCreateAPIView):
+    queryset = User.objects.select_related().all()
+    serializer_class = UserSerializer
+    
+    def get_queryset(self):
+        return User.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = User().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(UserList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class UserDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = User.objects.select_related().all()
+    serializer_class = UserSerializer
+    
+    def get_queryset(self):
+        return User.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(UserDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(UserDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class DeploymentList(generics.ListCreateAPIView):
+    queryset = Deployment.objects.select_related().all()
+    serializer_class = DeploymentSerializer
+    
+    def get_queryset(self):
+        return Deployment.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = Deployment().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(DeploymentList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class DeploymentDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Deployment.objects.select_related().all()
+    serializer_class = DeploymentSerializer
+    
+    def get_queryset(self):
+        return Deployment.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(DeploymentDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(DeploymentDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class ReservationList(generics.ListCreateAPIView):
+    queryset = Reservation.objects.select_related().all()
+    serializer_class = ReservationSerializer
+    
+    def get_queryset(self):
+        return Reservation.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = Reservation().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(ReservationList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class ReservationDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Reservation.objects.select_related().all()
+    serializer_class = ReservationSerializer
+    
+    def get_queryset(self):
+        return Reservation.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(ReservationDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(ReservationDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class SliceDeploymentsList(generics.ListCreateAPIView):
+    queryset = SliceDeployments.objects.select_related().all()
+    serializer_class = SliceDeploymentsSerializer
+    
+    def get_queryset(self):
+        return SliceDeployments.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = SliceDeployments().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(SliceDeploymentsList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class SliceDeploymentsDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = SliceDeployments.objects.select_related().all()
+    serializer_class = SliceDeploymentsSerializer
+    
+    def get_queryset(self):
+        return SliceDeployments.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(SliceDeploymentsDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(SliceDeploymentsDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class SitePrivilegeList(generics.ListCreateAPIView):
+    queryset = SitePrivilege.objects.select_related().all()
+    serializer_class = SitePrivilegeSerializer
+    
+    def get_queryset(self):
+        return SitePrivilege.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = SitePrivilege().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(SitePrivilegeList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class SitePrivilegeDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = SitePrivilege.objects.select_related().all()
+    serializer_class = SitePrivilegeSerializer
+    
+    def get_queryset(self):
+        return SitePrivilege.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(SitePrivilegeDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(SitePrivilegeDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class PlanetStackList(generics.ListCreateAPIView):
+    queryset = PlanetStack.objects.select_related().all()
+    serializer_class = PlanetStackSerializer
+    
+    def get_queryset(self):
+        return PlanetStack.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = PlanetStack().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(PlanetStackList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class PlanetStackDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = PlanetStack.objects.select_related().all()
+    serializer_class = PlanetStackSerializer
+    
+    def get_queryset(self):
+        return PlanetStack.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(PlanetStackDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(PlanetStackDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class UserDeploymentsList(generics.ListCreateAPIView):
+    queryset = UserDeployments.objects.select_related().all()
+    serializer_class = UserDeploymentsSerializer
+    
+    def get_queryset(self):
+        return UserDeployments.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = UserDeployments().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(UserDeploymentsList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class UserDeploymentsDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = UserDeployments.objects.select_related().all()
+    serializer_class = UserDeploymentsSerializer
+    
+    def get_queryset(self):
+        return UserDeployments.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(UserDeploymentsDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(UserDeploymentsDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class AccountList(generics.ListCreateAPIView):
+    queryset = Account.objects.select_related().all()
+    serializer_class = AccountSerializer
+    
+    def get_queryset(self):
+        return Account.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = Account().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(AccountList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class AccountDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Account.objects.select_related().all()
+    serializer_class = AccountSerializer
+    
+    def get_queryset(self):
+        return Account.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(AccountDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(AccountDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class NetworkParameterTypeList(generics.ListCreateAPIView):
+    queryset = NetworkParameterType.objects.select_related().all()
+    serializer_class = NetworkParameterTypeSerializer
+    
+    def get_queryset(self):
+        return NetworkParameterType.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = NetworkParameterType().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(NetworkParameterTypeList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class NetworkParameterTypeDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = NetworkParameterType.objects.select_related().all()
+    serializer_class = NetworkParameterTypeSerializer
+    
+    def get_queryset(self):
+        return NetworkParameterType.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(NetworkParameterTypeDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(NetworkParameterTypeDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class SiteDeploymentsList(generics.ListCreateAPIView):
+    queryset = SiteDeployments.objects.select_related().all()
+    serializer_class = SiteDeploymentsSerializer
+    
+    def get_queryset(self):
+        return SiteDeployments.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = SiteDeployments().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(SiteDeploymentsList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class SiteDeploymentsDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = SiteDeployments.objects.select_related().all()
+    serializer_class = SiteDeploymentsSerializer
+    
+    def get_queryset(self):
+        return SiteDeployments.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(SiteDeploymentsDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(SiteDeploymentsDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class DeploymentPrivilegeList(generics.ListCreateAPIView):
+    queryset = DeploymentPrivilege.objects.select_related().all()
+    serializer_class = DeploymentPrivilegeSerializer
+    
+    def get_queryset(self):
+        return DeploymentPrivilege.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = DeploymentPrivilege().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(DeploymentPrivilegeList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class DeploymentPrivilegeDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = DeploymentPrivilege.objects.select_related().all()
+    serializer_class = DeploymentPrivilegeSerializer
+    
+    def get_queryset(self):
+        return DeploymentPrivilege.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(DeploymentPrivilegeDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(DeploymentPrivilegeDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class DeploymentRoleList(generics.ListCreateAPIView):
+    queryset = DeploymentRole.objects.select_related().all()
+    serializer_class = DeploymentRoleSerializer
+    
+    def get_queryset(self):
+        return DeploymentRole.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = DeploymentRole().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(DeploymentRoleList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class DeploymentRoleDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = DeploymentRole.objects.select_related().all()
+    serializer_class = DeploymentRoleSerializer
+    
+    def get_queryset(self):
+        return DeploymentRole.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(DeploymentRoleDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(DeploymentRoleDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class ProjectList(generics.ListCreateAPIView):
+    queryset = Project.objects.select_related().all()
+    serializer_class = ProjectSerializer
+    
+    def get_queryset(self):
+        return Project.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = Project().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(ProjectList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class ProjectDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Project.objects.select_related().all()
+    serializer_class = ProjectSerializer
+    
+    def get_queryset(self):
+        return Project.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(ProjectDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(ProjectDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class SliceTagList(generics.ListCreateAPIView):
+    queryset = SliceTag.objects.select_related().all()
+    serializer_class = SliceTagSerializer
+    
+    def get_queryset(self):
+        return SliceTag.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = SliceTag().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(SliceTagList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class SliceTagDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = SliceTag.objects.select_related().all()
+    serializer_class = SliceTagSerializer
+    
+    def get_queryset(self):
+        return SliceTag.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(SliceTagDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(SliceTagDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class NetworkTemplateList(generics.ListCreateAPIView):
+    queryset = NetworkTemplate.objects.select_related().all()
+    serializer_class = NetworkTemplateSerializer
+    
+    def get_queryset(self):
+        return NetworkTemplate.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = NetworkTemplate().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(NetworkTemplateList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class NetworkTemplateDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = NetworkTemplate.objects.select_related().all()
+    serializer_class = NetworkTemplateSerializer
+    
+    def get_queryset(self):
+        return NetworkTemplate.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(NetworkTemplateDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(NetworkTemplateDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class RouterList(generics.ListCreateAPIView):
+    queryset = Router.objects.select_related().all()
+    serializer_class = RouterSerializer
+    
+    def get_queryset(self):
+        return Router.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = Router().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(RouterList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class RouterDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Router.objects.select_related().all()
+    serializer_class = RouterSerializer
+    
+    def get_queryset(self):
+        return Router.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(RouterDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(RouterDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
+class ServiceResourceList(generics.ListCreateAPIView):
+    queryset = ServiceResource.objects.select_related().all()
+    serializer_class = ServiceResourceSerializer
+    
+    def get_queryset(self):
+        return ServiceResource.select_by_user(self.request.user)
+
+    def create(self, request, *args, **kwargs):
+        #obj = ServiceResource().update(request.DATA)
+        obj = self.get_object()
+        obj.caller = request.user
+        if obj.can_update(request.user):
+            return super(ServiceResourceList, self).create(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+class ServiceResourceDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = ServiceResource.objects.select_related().all()
+    serializer_class = ServiceResourceSerializer
+    
+    def get_queryset(self):
+        return ServiceResource.select_by_user(self.request.user)
+
+    def update(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(ServiceResourceDetail, self).update(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
+    def destroy(self, request, *args, **kwargs):
+        obj = self.get_object()
+        if obj.can_update(request.user):
+            return super(ServiceResourceDetail, self).destroy(request, *args, **kwargs)
+        else:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+     
+
+
+
index f574ec1..2a6d518 100644 (file)
@@ -10,43 +10,83 @@ from django.contrib.auth.signals import user_logged_in
 from django.utils import timezone
 from django.contrib.contenttypes import generic
 from suit.widgets import LinkedSelect
+from core.admin import SingletonAdmin,SliceInline,ServiceAttrAsTabInline, SliceROInline,ServiceAttrAsTabROInline, ReadOnlyAwareAdmin, PlStackTabularInline, ReadOnlyTabularInline
 
-#class HPCRRBaseAdmin(admin.ModelAdmin):
-    #exclude = ['enacted']
+class HpcServiceAdmin(SingletonAdmin):
+    model = HpcService
+    verbose_name = "HPC Service"
+    verbose_name_plural = "HPC Service"
+    list_display = ("name","enabled")
+    fieldsets = [(None, {'fields': ['name','enabled','versionNumber', 'description'], 'classes':['suit-tab suit-tab-general']})]
+    inlines = [SliceInline,ServiceAttrAsTabInline]
 
-class CDNPrefixInline(admin.TabularInline):
+    user_readonly_fields = ["name", "enabled", "versionNumber", "description"]
+    user_readonly_inlines = [SliceROInline, ServiceAttrAsTabROInline]
+
+    suit_form_tabs =(('general', 'HPC Service Details'),
+        ('slices','Slices'),
+        ('serviceattrs','Additional Attributes'),
+    )
+
+class CDNPrefixInline(PlStackTabularInline):
     model = CDNPrefix
     extra = 0
     suit_classes = 'suit-tab suit-tab-prefixes'
+    fields = ('cdn_prefix_id', 'prefix', 'defaultOriginServer', 'enabled')
+    readonly_fields = ('cdn_prefix_id',)
 
-class ContentProviderInline(admin.TabularInline):
+class CDNPrefixROInline(ReadOnlyTabularInline):
+    model = CDNPrefix
+    extra = 0
+    suit_classes = 'suit-tab suit-tab-prefixes'
+    fields = ('cdn_prefix_id', 'prefix', 'defaultOriginServer', 'enabled')
+    readonly_fields = ('cdn_prefix_id',)
+
+class ContentProviderInline(PlStackTabularInline):
     model = ContentProvider
     extra = 0
     suit_classes = 'suit-tab suit-tab-cps'
+    fields = ('content_provider_id', 'name', 'enabled')
+    readonly_fields = ('content_provider_id',)
 
-class OriginServerAdmin(admin.ModelAdmin):
+class ContentProviderROInline(ReadOnlyTabularInline):
+    model = ContentProvider
+    extra = 0
+    suit_classes = 'suit-tab suit-tab-cps'
+
+class OriginServerAdmin(ReadOnlyAwareAdmin):
     list_display = ('url','protocol','redirects','contentProvider','authenticated','enabled' )
 
+    fields = ('url','protocol','redirects','contentProvider','authenticated','enabled','origin_server_id','description' )
+    readonly_fields = ('origin_server_id',)
+    user_readonly_fields = ('url','protocol','redirects','contentProvider','authenticated','enabled','origin_server_id','description')
+
 class ContentProviderForm(forms.ModelForm):
     class Meta:
         widgets = {
             'serviceProvider' : LinkedSelect
         }
 
-class ContentProviderAdmin(admin.ModelAdmin):
+class ContentProviderAdmin(ReadOnlyAwareAdmin):
     form = ContentProviderForm
     list_display = ('name','description','enabled' )
     fieldsets = [ (None, {'fields': ['name','enabled','description','serviceProvider','users'], 'classes':['suit-tab suit-tab-general']})]
 
     inlines = [CDNPrefixInline]
 
+    user_readonly_fields = ('name','description','enabled','serviceProvider','users')
+    user_readonly_inlines = [CDNPrefixROInline]
+
     suit_form_tabs = (('general','Details'),('prefixes','CDN Prefixes'))
 
-class ServiceProviderAdmin(admin.ModelAdmin):
+class ServiceProviderAdmin(ReadOnlyAwareAdmin):
     list_display = ('name', 'description', 'enabled')
     fieldsets = [
         (None, {'fields': ['name','description','enabled'], 'classes':['suit-tab suit-tab-general']})]
-#, ('Content Providers', {'fields':['contentProviders'],'classes':['suit-tab suit-tab-cps']})] 
+#, ('Content Providers', {'fields':['contentProviders'],'classes':['suit-tab suit-tab-cps']})]
+
+    user_readonly_fields = ('name', 'description', 'enabled')
+    user_readonly_inlines = [ContentProviderROInline]
 
     suit_form_tabs = (('general','Details'),('cps','Content Providers'))
     inlines = [ContentProviderInline]
@@ -57,27 +97,31 @@ class CDNPrefixForm(forms.ModelForm):
             'contentProvider' : LinkedSelect
         }
 
-class CDNPrefixAdmin(admin.ModelAdmin):
+class CDNPrefixAdmin(ReadOnlyAwareAdmin):
     form = CDNPrefixForm
     list_display = ['prefix','contentProvider']
+    fields = ['prefix', 'contentProvider', 'cdn_prefix_id', 'description', 'defaultOriginServer', 'enabled']
+    user_readonly_fields = ['prefix','contentProvider', "cdn_prefix_id", "description", "defaultOriginServer", "enabled"]
 
-class SiteMapAdmin(admin.ModelAdmin):
+class SiteMapAdmin(ReadOnlyAwareAdmin):
     model = SiteMap
     verbose_name = "Site Map"
     verbose_name_plural = "Site Map"
     list_display = ("name", "contentProvider", "serviceProvider")
+    user_readonly_fields = ("name", "contentProvider", "serviceProvider", "description", "map")
 
-class AccessMapAdmin(admin.ModelAdmin):
+class AccessMapAdmin(ReadOnlyAwareAdmin):
     model = AccessMap
     verbose_name = "Access Map"
     verbose_name_plural = "Access Map"
     list_display = ("name", "contentProvider")
+    user_readonly_fields = ("name", "contentProvider", "description", "map")
 
 admin.site.register(ServiceProvider, ServiceProviderAdmin)
 admin.site.register(ContentProvider, ContentProviderAdmin)
 admin.site.register(CDNPrefix, CDNPrefixAdmin)
 admin.site.register(OriginServer,OriginServerAdmin)
-admin.site.register(HpcService)
+admin.site.register(HpcService, HpcServiceAdmin)
 admin.site.register(SiteMap, SiteMapAdmin)
 admin.site.register(AccessMap, AccessMapAdmin)
 
index 1b80cc6..2980ce7 100644 (file)
@@ -28,6 +28,10 @@ class ContentProvider(PlCoreBase):
     class Meta:
         app_label = "hpc"
 
+    # legacy vicci content providers already have names.
+    CP_TO_ACCOUNT = {"ON.LAB": "onlabcp",
+                     "Syndicate": "syndicatecp"}
+
     content_provider_id = models.IntegerField(null=True, blank=True)
     name = models.CharField(max_length=254)
     enabled = models.BooleanField(default=True)
@@ -39,6 +43,10 @@ class ContentProvider(PlCoreBase):
 
     def __unicode__(self):  return u'%s' % (self.name)
 
+    @property
+    def account(self):
+        return self.CP_TO_ACCOUNT.get(self.name, self.name)
+
 class OriginServer(PlCoreBase):
     class Meta:
         app_label = "hpc"
index 4e375df..4a90c2b 100644 (file)
@@ -6,6 +6,7 @@ import json
 import httplib2
 import threading
 import os
+import sys
 import time
 import traceback
 
@@ -28,10 +29,12 @@ PROJECT_NUMBER = '549187599759'
 try:
     FLOW = flow_from_clientsecrets('/opt/planetstack/hpc_wizard/client_secrets.json',
                                    scope='https://www.googleapis.com/auth/bigquery')
+    BIGQUERY_AVAILABLE = True
 except:
-    print "exception while initializing bigquery flow"
+    print >> sys.stderr, "exception while initializing bigquery flow"
     traceback.print_exc()
     FLOW = None
+    BIGQUERY_AVAILABLE = False
 
 MINUTE_MS = 60*1000
 HOUR_MS = 60*60*1000
@@ -93,7 +96,7 @@ class BigQueryAnalytics:
        credentials = storage.get()
 
        if credentials is None or credentials.invalid:
-               credentials = run(FLOW, storage)
+            credentials = run(FLOW, storage)
 
        http = httplib2.Http()
        http = credentials.authorize(http)
@@ -111,6 +114,10 @@ class BigQueryAnalytics:
             field["name"] = reverse_mappings[self.tableName].get(field["name"], field["name"])
 
     def run_query(self, query):
+        if not BIGQUERY_AVAILABLE:
+            print >> sys.stderr, "bigquery_analytics: bigquery flow is not available. returning empty result."
+            return []
+
         response = self.run_query_raw(query)
 
         fieldNames = []
@@ -216,7 +223,8 @@ class BigQueryAnalytics:
 
         (computedFieldNames, rows) = self.do_computed_fields(rows, computed)
         sum = sum + computedFieldNames
-        rows = self.groupby_results(rows, groupBy, sum, count, avg, maxi)
+        if groupBy:
+            rows = self.groupby_results(rows, groupBy, sum, count, avg, maxi)
         return rows
 
     def remap(self, match):
index 91e4ce1..75462d4 100644 (file)
@@ -1,4 +1,4 @@
-from bigquery_analytics import BigQueryAnalytics
+from bigquery_analytics import BigQueryAnalytics, BIGQUERY_AVAILABLE
 import datetime
 import re
 import os
@@ -42,7 +42,7 @@ class PlanetStackAnalytics(BigQueryAnalytics):
 
         return [slice.name for slice in slices]
 
-    def compose_query(self, slice=None, site=None, node=None, service=None, event="libvirt_heartbeat", timeBucket="60", avg=[], sum=[], count=[], computed=[], val=[], groupBy=["Time"], orderBy=["Time"], tableName=None, latest=False, maxAge=60*60):
+    def compose_query(self, filter={}, timeBucket="60", avg=[], sum=[], count=[], computed=[], val=[], groupBy=["Time"], orderBy=["Time"], tableName=None, latest=False, maxAge=60*60):
         if tableName is None:
             tableName = self.tableName
 
@@ -99,16 +99,16 @@ class PlanetStackAnalytics(BigQueryAnalytics):
 
         where = []
 
-        if slice:
-            where.append("%%slice='%s'" % slice)
-        if site:
-            where.append("%%site='%s'" % site)
-        if node:
-            where.append("%%hostname='%s'" % node)
-        if event:
-            where.append("event='%s'" % event)
-        if service:
-            sliceNames = self.service_to_sliceNames(service)
+        if filter.get("slice",None):
+            where.append("%%slice='%s'" % filter["slice"])
+        if filter.get("site",None):
+            where.append("%%site='%s'" % filter["site"])
+        if filter.get("node",None):
+            where.append("%%hostname='%s'" % filter["node"])
+        if filter.get("event",None):
+            where.append("event='%s'" % filter["event"])
+        if filter.get("service",None):
+            sliceNames = self.service_to_sliceNames(filter["service"])
             if sliceNames:
                 where.append("(" + " OR ".join(["%%slice='%s'" % sliceName for sliceName in sliceNames]) +")")
 
@@ -180,8 +180,13 @@ class PlanetStackAnalytics(BigQueryAnalytics):
         return value.split(",")
 
     def format_result(self, format, result, query, dataSourceUrl):
+        if not BIGQUERY_AVAILABLE:
+            msg = "BigQuery Statistics Unavaiable"
+        else:
+            msg = None
+
         if (format == "json_dicts"):
-            result = {"query": query, "rows": result, "dataSourceUrl": dataSourceUrl}
+            result = {"query": query, "rows": result, "dataSourceUrl": dataSourceUrl, "msg": msg}
             return ("application/javascript", json.dumps(result))
 
         elif (format == "json_arrays"):
@@ -191,7 +196,7 @@ class PlanetStackAnalytics(BigQueryAnalytics):
                 for key in sorted(row.keys()):
                     new_row.append(row[key])
                 new_result.append(new_row)
-                new_result = {"query": query, "rows": new_result}
+                new_result = {"query": query, "rows": new_result, "msg": msg}
             return ("application/javascript", json.dumps(new_result))
 
         elif (format == "html_table"):
@@ -241,13 +246,29 @@ class PlanetStackAnalytics(BigQueryAnalytics):
             cpu=float(max_cpu)/100.0
             row["hotness"] = max(0.0, ((cpu*RED_LOAD) - BLUE_LOAD)/(RED_LOAD-BLUE_LOAD))
 
-    def compose_latest_query(self, fieldNames=None, groupByFields=["%hostname", "event"]):
+    def compose_cached_query(self, querySpec='default'):
         """ Compose a query that returns the 'most recent' row for each (hostname, event)
             pair.
+
+            Note that groupByFields cannot contain any values that are 'Null' or those
+            rows will be excluded. For example, if groupByFields includes cp, then
+            there will be no libvirt_event rows, since libvirt_event does not have
+            cp.
+
+            This means we can't really have 'one query to rule them'. Settle on
+            having a couple of different queries, and have the caller specify
+            which one he wants.
         """
 
-        if not fieldNames:
-            fieldNames = ["%hostname", "%bytes_sent", "%bytes_hit", "%healthy", "time", "event", "%site", "%elapsed", "%slice", "%cpu"]
+        fieldNames = ["%hostname", "%bytes_sent", "%bytes_hit", "%healthy", "time", "event", "%site", "%elapsed", "%cpu"]
+
+        if querySpec=="default":
+            groupByFields = ["%hostname", "event"]
+        elif (querySpec=="hpc"):
+            fieldNames.append("%cp")
+            groupByFields = ["%hostname", "event", "%cp"]
+        else:
+            raise ValueError("Unknown queryspec %s" % querySpec)
 
         fields = ["table1.%s AS %s" % (x,x) for x in fieldNames]
         fields = ", ".join(fields)
@@ -293,6 +314,7 @@ class PlanetStackAnalytics(BigQueryAnalytics):
         node = req.GET.get("node", None)
         service = req.GET.get("service", None)
         event = req.GET.get("event", "libvirt_heartbeat")
+        cp = req.GET.get("cp", None)
 
         format = req.GET.get("format", "json_dicts")
 
@@ -312,7 +334,19 @@ class PlanetStackAnalytics(BigQueryAnalytics):
         cached = req.GET.get("cached", None)
         cachedGroupBy = self.get_list_from_req(req, "cachedGroupBy", ["doesnotexist"])
 
-        q = self.compose_query(slice, site, node, service, event, timeBucket, avg, sum, count, computed, [], groupBy, orderBy, maxAge=maxAge)
+        filter={}
+        if slice:
+            filter["slice"] = slice
+        if site:
+            filter["site"] = site
+        if node:
+            filter["hostname"] = node
+        if event:
+            filter["event"] = event
+        if cp:
+            filter["cp"] = cp
+
+        q = self.compose_query(filter, timeBucket, avg, sum, count, computed, [], groupBy, orderBy, maxAge=maxAge)
 
         print q
 
@@ -375,17 +409,7 @@ class PlanetStackAnalytics(BigQueryAnalytics):
 
         else:
             if cached:
-                results = self.get_cached_query_results(self.compose_latest_query())
-
-                filter={}
-                if slice:
-                    filter["slice"] = slice
-                if site:
-                    filter["site"] = site
-                if node:
-                    filter["hostname"] = node
-                if event:
-                    filter["event"] = event
+                results = self.get_cached_query_results(self.compose_cached_query(cached))
 
                 result = self.postprocess_results(results, filter=filter, sum=sum, count=count, avg=avg, computed=computed, maxDeltaTime=120, groupBy=cachedGroupBy)
             else:
@@ -408,7 +432,7 @@ def DoPlanetStackAnalytics(request):
 def main():
     bq = PlanetStackAnalytics(tableName="demoevents")
 
-    q = bq.compose_latest_query(groupByFields=["%hostname", "event", "%slice"])
+    q = bq.compose_cached_query()
     results = bq.run_query(q)
 
     #results = bq.postprocess_results(results,
@@ -418,7 +442,9 @@ def main():
     #                                 sum=["bytes_sent", "computed_bytes_sent_div_elapsed"], avg=["cpu"],
     #                                 maxDeltaTime=60)
 
-    results = bq.postprocess_results(results, filter={"slice": "HyperCache"}, maxi=["cpu"], count=["hostname"], computed=["bytes_sent/elapsed"], groupBy=["Time", "site"], maxDeltaTime=80)
+    #results = bq.postprocess_results(results, filter={"slice": "HyperCache"}, maxi=["cpu"], count=["hostname"], computed=["bytes_sent/elapsed"], groupBy=["Time", "site"], maxDeltaTime=80)
+
+    results = bq.postprocess_results(results,filter={"event": "libvirt_heartbeat"}, avg=["cpu"], count=["hostname"], groupBy=["doesnotexist"])
 
     bq.dump_table(results)
 
diff --git a/planetstack/kairos/__init__.py b/planetstack/kairos/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/planetstack/kairos/admin.py b/planetstack/kairos/admin.py
new file mode 100644 (file)
index 0000000..1eeb426
--- /dev/null
@@ -0,0 +1,30 @@
+from django.contrib import admin
+
+from nagios.models import *
+from django import forms
+from django.utils.safestring import mark_safe
+from django.contrib.auth.admin import UserAdmin
+from django.contrib.admin.widgets import FilteredSelectMultiple
+from django.contrib.auth.forms import ReadOnlyPasswordHashField
+from django.contrib.auth.signals import user_logged_in
+from django.utils import timezone
+from django.contrib.contenttypes import generic
+from suit.widgets import LinkedSelect
+from core.admin import SingletonAdmin,SliceInline,ServiceAttrAsTabInline, SliceROInline,ServiceAttrAsTabROInline, ReadOnlyAwareAdmin
+
+class NagiosServiceAdmin(SingletonAdmin):
+    model = NagiosService
+    verbose_name = "Nagios Service"
+    verbose_name_plural = "Nagios Service"
+    list_display = ("name","enabled")
+    fieldsets = [(None, {'fields': ['name','enabled','versionNumber', 'description'], 'classes':['suit-tab suit-tab-general']})]
+    inlines = [SliceInline,ServiceAttrAsTabInline]
+
+    user_readonly_inlines = [SliceROInline, ServiceAttrAsTabROInline]
+    suit_form_tabs =(('general', 'Nagios Service Details'),
+        ('slices','Slices'),
+        ('serviceattrs','Additional Attributes'),
+    )
+
+admin.site.register(NagiosService, NagiosServiceAdmin)
+
diff --git a/planetstack/kairos/models.py b/planetstack/kairos/models.py
new file mode 100644 (file)
index 0000000..ed916d7
--- /dev/null
@@ -0,0 +1,14 @@
+from core.models import User,Site,Service,SingletonModel,PlCoreBase, Slice
+import os
+from django.db import models
+from django.forms.models import model_to_dict
+
+# Create your models here.
+
+class KairosDBService(SingletonModel,Service):
+    class Meta:
+        app_label = "kairos"
+        verbose_name = "KairosDB Service"
+
+    def __unicode__(self):  return u'KairosDB Service'
+
diff --git a/planetstack/nagios/__init__.py b/planetstack/nagios/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/planetstack/nagios/admin.py b/planetstack/nagios/admin.py
new file mode 100644 (file)
index 0000000..156e376
--- /dev/null
@@ -0,0 +1,30 @@
+from django.contrib import admin
+
+from kairos.models import *
+from django import forms
+from django.utils.safestring import mark_safe
+from django.contrib.auth.admin import UserAdmin
+from django.contrib.admin.widgets import FilteredSelectMultiple
+from django.contrib.auth.forms import ReadOnlyPasswordHashField
+from django.contrib.auth.signals import user_logged_in
+from django.utils import timezone
+from django.contrib.contenttypes import generic
+from suit.widgets import LinkedSelect
+from core.admin import SingletonAdmin,SliceInline,ServiceAttrAsTabInline, SliceROInline,ServiceAttrAsTabROInline, ReadOnlyAwareAdmin
+
+class KairosDBServiceAdmin(SingletonAdmin):
+    model = KairosDBService
+    verbose_name = "KairosDB Service"
+    verbose_name_plural = "KairosDB Service"
+    list_display = ("name","enabled")
+    fieldsets = [(None, {'fields': ['name','enabled','versionNumber', 'description'], 'classes':['suit-tab suit-tab-general']})]
+    inlines = [SliceInline,ServiceAttrAsTabInline]
+
+    user_readonly_inlines = [SliceROInline, ServiceAttrAsTabROInline]
+    suit_form_tabs =(('general', 'KairosDB Service Details'),
+        ('slices','Slices'),
+        ('serviceattrs','Additional Attributes'),
+    )
+
+admin.site.register(KairosDBService, KairosDBServiceAdmin)
+
diff --git a/planetstack/nagios/models.py b/planetstack/nagios/models.py
new file mode 100644 (file)
index 0000000..ec7b6bb
--- /dev/null
@@ -0,0 +1,14 @@
+from core.models import User,Site,Service,SingletonModel,PlCoreBase, Slice
+import os
+from django.db import models
+from django.forms.models import model_to_dict
+
+# Create your models here.
+
+class NagiosService(SingletonModel,Service):
+    class Meta:
+        app_label = "nagios"
+        verbose_name = "Nagios Service"
+
+    def __unicode__(self):  return u'Nagios Service'
+
diff --git a/planetstack/nginx/planetstack.conf b/planetstack/nginx/planetstack.conf
new file mode 100644 (file)
index 0000000..d25ab0b
--- /dev/null
@@ -0,0 +1,22 @@
+upstream backend {
+  # least_conn;   
+  server 127.0.0.1:9001;
+  server unix:/var/run/planetstack.uwsgi.sock;
+}
+
+
+server {
+    listen 8081;
+    server_name 128.112.139.48;
+
+    location /static/ {
+        alias /opt/planetstack/core/static/;
+        expires 30d;
+        access_log off;
+    }
+
+    location / {
+        include /etc/nginx/uwsgi_params;
+        uwsgi_pass backend;
+    }
+}
index d659ab5..ec49dd7 100644 (file)
@@ -16,7 +16,7 @@ from openstack.driver import OpenStackDriver
 from util.logger import Logger, logging, logger
 #from timeout import timeout
 from planetstack.config import Config
-from observer.steps import *
+#from observer.steps import *
 from syncstep import SyncStep
 from toposort import toposort
 from observer.error_mapper import error_mapper
index 19d9e25..d2a53a7 100644 (file)
@@ -12,83 +12,149 @@ from fofum import Fofum
 import json
 import traceback
 
-# decorator that marks dispatachable event methods    
-def event(func):
-    setattr(func, 'event', func.__name__)
-    return func         
-
-class EventHandler:
-    # This code is currently not in use.
-    def __init__(self):
-        pass 
-
-    @staticmethod
-    def get_events():
-        events = []
-        for name in dir(EventHandler):
-            attribute = getattr(EventHandler, name)
-            if hasattr(attribute, 'event'):
-                events.append(getattr(attribute, 'event'))
-        return events
+random_client_id=None
+def get_random_client_id():
+    global random_client_id
 
-    def dispatch(self, event, *args, **kwds):
-        if hasattr(self, event):
-            return getattr(self, event)(*args, **kwds)
-
-
-class EventSender:
-    def __init__(self,user=None,clientid=None):
+    if (random_client_id is None) and os.path.exists("/opt/planetstack/random_client_id"):
+        # try to use the last one we used, if we saved it
         try:
-            user = Config().feefie_client_user
+            random_client_id = open("/opt/planetstack/random_client_id","r").readline().strip()
+            print "get_random_client_id: loaded %s" % random_client_id
         except:
-            user = 'pl'
+            print "get_random_client_id: failed to read /opt/planetstack/random_client_id"
 
+    if random_client_id is None:
+        random_client_id = base64.urlsafe_b64encode(os.urandom(12))
+        print "get_random_client_id: generated new id %s" % random_client_id
+
+        # try to save it for later (XXX: could race with another client here)
         try:
-            clid = Config().feefie_client_id
+            open("/opt/planetstack/random_client_id","w").write("%s\n" % random_client_id)
         except:
-            clid = self.random_client_id()
-            
+            print "get_random_client_id: failed to write /opt/planetstack/random_client_id"
+
+    return random_client_id
+
+# decorator that marks dispatachable event methods
+def event(func):
+       setattr(func, 'event', func.__name__)
+       return func
 
-        self.fofum = Fofum(user=user)
-        self.fofum.make(clid)
+class EventHandler:
+       # This code is currently not in use.
+       def __init__(self):
+               pass
+
+       @staticmethod
+       def get_events():
+               events = []
+               for name in dir(EventHandler):
+                       attribute = getattr(EventHandler, name)
+                       if hasattr(attribute, 'event'):
+                               events.append(getattr(attribute, 'event'))
+               return events
+
+       def dispatch(self, event, *args, **kwds):
+               if hasattr(self, event):
+                       return getattr(self, event)(*args, **kwds)
+                       
 
-    def fire(self,**kwargs):
+class EventSender:
+       def __init__(self,user=None,clientid=None):
+               try:
+                       user = Config().feefie_client_user
+               except:
+                       user = 'pl'
+
+               try:
+                       clid = Config().feefie_client_id
+               except:
+                       clid = get_random_client_id()
+                        print "EventSender: no feefie_client_id configured. Using random id %s" % clid
+
+               self.fofum = Fofum(user=user)
+               self.fofum.make(clid)
+
+       def fire(self,**kwargs):
                 kwargs["uuid"] = str(uuid.uuid1())
         self.fofum.fire(json.dumps(kwargs))
 
 class EventListener:
-    def __init__(self,wake_up=None):
-        self.handler = EventHandler()
-        self.wake_up = wake_up
-
-    def handle_event(self, payload):
-        payload_dict = json.loads(payload)
-
-        if (self.wake_up):
-            self.wake_up()
-
-    def random_client_id(self):
-        try:
-            return self.client_id
-        except AttributeError:
-            self.client_id = base64.urlsafe_b64encode(os.urandom(12))
-            return self.client_id
-
-    def run(self):
-        # This is our unique client id, to be used when firing and receiving events
-        # It needs to be generated once and placed in the config file
-
-        try:
-            user = Config().feefie_client_user
-        except:
-            user = 'pl'
-
-        try:
-            clid = Config().feefie_client_id
-        except:
-            clid = self.random_client_id()
-
-        f = Fofum(user=user)
-        
-        listener_thread = threading.Thread(target=f.listen_for_event,args=(clid,self.handle_event))
-        listener_thread.start()
+       def __init__(self,wake_up=None):
+               self.handler = EventHandler()
+               self.wake_up = wake_up
+                self.deleters = {}
+                self.load_deleter_modules()
+
+        def load_deleter_modules(self, deleter_dir=None):
+            if deleter_dir is None:
+                if hasattr(Config(), "observer_deleters_dir"):
+                    deleter_dir = Config().observer_deleters_dir
+                else:
+                    deleter_dir = "/opt/planetstack/observer/deleters"
+
+            for fn in os.listdir(deleter_dir):
+                pathname = os.path.join(deleter_dir,fn)
+                if os.path.isfile(pathname) and fn.endswith(".py") and (fn!="__init__.py"):
+                    module = imp.load_source(fn[:-3],pathname)
+                    for classname in dir(module):
+                        c = getattr(module, classname, None)
+
+                        # make sure 'c' is a descendent of Deleter and has a
+                        # provides field (this eliminates the abstract base classes
+                        # since they don't have a provides)
+
+                        if inspect.isclass(c) and issubclass(c, Deleter) and hasattr(c,"model") and c.model!=None:
+                            modelName = c.model
+                            if not modelName in self.deleters:
+                                self.deleters[modelName] = []
+                            if not (c in self.deleters[modelName]):
+                                self.deleters[modelName].append(c)
+            print 'loaded deleters: %s' % ",".join(self.deleters.keys())
+
+
+       def handle_event(self, payload):
+               payload_dict = json.loads(payload)
+
+               try:
+                       deletion = payload_dict.get('delete_flag', False)
+                       if (deletion):
+                               model = payload_dict['model']
+                               pk = payload_dict['pk']
+                                model_dict = payload_dict['model_dict']
+
+                               for deleter in self.deleters[model]:
+                                        try:
+                                           deleter()(pk, model_dict)
+                                        except:
+                                            # something is silently eating these
+                                            # exceptions...
+                                            traceback.print_exc()
+                                            raise
+
+               except:
+                       deletion = False
+
+               if (not deletion and self.wake_up):
+                       self.wake_up()
+
+       def run(self):
+               # This is our unique client id, to be used when firing and receiving events
+               # It needs to be generated once and placed in the config file
+
+               try:
+                       user = Config().feefie_client_user
+               except:
+                       user = 'pl'
+
+               try:
+                       clid = Config().feefie_client_id
+               except:
+                       clid = get_random_client_id()
+                        print "EventListener: no feefie_client_id configured. Using random id %s" % clid
+
+               f = Fofum(user=user)
+               
+               listener_thread = threading.Thread(target=f.listen_for_event,args=(clid,self.handle_event))
+               listener_thread.start()
index eabf46c..2ef6922 100644 (file)
@@ -12,4 +12,5 @@ from .sync_users import SyncUsers
 from .sync_roles import SyncRoles
 from .sync_nodes import SyncNodes
 from .sync_images import SyncImages
+from .sync_image_deployments import SyncImageDeployments
 from .garbage_collector import GarbageCollector
diff --git a/planetstack/observer/steps/garbage_collector.py b/planetstack/observer/steps/garbage_collector.py
new file mode 100644 (file)
index 0000000..7c42922
--- /dev/null
@@ -0,0 +1,313 @@
+import os
+import base64
+import traceback
+from collections import defaultdict
+from django.db.models import F, Q
+from planetstack.config import Config
+from util.logger import Logger, logging
+from observer.openstacksyncstep import OpenStackSyncStep
+from core.models import *
+
+logger = Logger(logfile='/var/log/observer.log', level=logging.INFO)
+
+class GarbageCollector(OpenStackSyncStep):
+    requested_interval = 86400
+    provides=[]
+
+    def call(self, **args):
+        try:
+            self.gc_networks()
+            #self.gc_user_tenant_roles()
+            #self.gc_tenants()
+            #self.gc_users()
+            self.gc_slivers()
+            #self.gc_sliver_ips()
+            pass 
+        except:
+            traceback.print_exc()
+
+    def gc_networks(self):
+        """
+        Remove all neutron networks that do not exist in the planetstack db.
+        """ 
+        # some networks cannot be deleted
+        system_networks = ['nat-net','private-admin']
+        for network_template in NetworkTemplate.objects.all():
+            if network_template.sharedNetworkName and \
+              network_template.sharedNetworkName not in system_networks:
+                system_networks.append(network_template.sharedNetworkName)
+
+        networks = Network.objects.filter(enacted__isnull=False)
+        networks_dict = {}
+        for network in networks:
+            networks_dict[network.name] = network  
+
+        # some deployments are at the same url. Keep track of the urls we've visited
+        # to make sure we aren't making redundant calls
+        completed_urls = []
+        for deployment in Deployment.objects.all():
+            # skip deployments that we've already processed
+            if deployment.auth_url in completed_urls:
+                continue
+            try:
+                driver = self.driver.admin_driver(deployment=deployment)
+                neutron_networks = driver.shell.quantum.list_networks()['networks']
+                for neutron_network in neutron_networks:
+                    # skip system networks
+                    if neutron_network['name'] in system_networks:
+                        continue         
+                    if neutron_network['name'] not in networks_dict:
+                        try:
+                            logger.info("GarbageCollector: deleting network %s" % neutron_network['name'])
+                            for subnet_id in neutron_network['subnets']:
+                                driver.delete_subnet(subnet_id)
+                            driver.delete_network(neutron_network['id'])
+                        except:
+                            logger.log_exc("GarbageCollector: delete network %s failed" % neutron_network['name'])
+            except:
+                logger.log_exc("GarbageCollector: Error at deployment %s" % deployment)
+                                
+            completed_urls.append(deployment.auth_url) 
+
+    def gc_tenants(self):
+        """
+        Remove sites and slices that no don't exist in openstack db if they 
+        have an enacted time (enacted != None).
+        """ 
+        # some tenants cannot be deleted
+        system_tenants = ['admin','service', 'invisible_to_admin']
+        # get all sites that where enacted != null. We can assume these sites
+        # have previously been synced and need to be checed for deletion.
+        sites = Site.objects.filter(enacted__isnull=False)
+        site_dict = {}
+        for site in sites:
+            site_dict[site.login_base] = site
+
+        # get all slices that where enacted != null. We can assume these slices
+        # have previously been synced and need to be checed for deletion.
+        slices = Slice.objects.filter(enacted__isnull=False)
+        slice_dict = {}
+        for slice in slices:
+            slice_dict[slice.name] = slice
+
+        # delete keystone tenants that don't have a site record
+        # some deployments are at the same url. Keep track of the urls we've visited
+        # to make sure we aren't making redundant calls
+        completed_urls = []
+        for deployment in Deployment.objects.all():
+            # skip deployments that we've already processed
+            if deployment.auth_url in completed_urls:
+                continue
+
+            driver = self.driver.admin_driver(deployment=deployment)
+            tenants = driver.shell.keystone.tenants.findall()
+            for tenant in tenants:
+                if tenant.name in system_tenants: 
+                    continue
+                if tenant.name not in site_dict and tenant.name not in slice_dict:
+                    try:
+                        logger.info("GarbageCollector: deleting tenant: %s" % (tenant))
+                        driver.delete_tenant(tenant.id)
+                    except:
+                        logger.log_exc("GarbageCollector: delete tenant failed: %s" % tenant)
+            completed_urls.append(deployment.auth_url)
+
+    def gc_users(self):
+        """
+        Remove users that do not exist in openstack db if they have an 
+        enacted time (enacted != None).
+        """ 
+        # some users cannot be deleted
+        system_users = ['admin', 'nova', 'quantum', 'neutron' 'glance', \
+                        'cinder', 'swift', 'service', 'demo']
+    
+        # get all users that where enacted != null. We can assume these users
+        # have previously been synced and need to be checed for deletion.
+        users = User.objects.filter(enacted__isnull=False)
+        user_dict = {}
+        for user in users:
+            user_dict[user.kuser_id] = user
+
+        # delete keystone users that don't have a user record
+        # some deployments are at the same url. Keep track of the urls we've visited
+        # to make sure we aren't making redundant calls
+        completed_urls = []
+        for deployment in Deployment.objects.all():
+            # skip deployments that we've already processed
+            if deployment.auth_url in completed_urls:
+                continue
+
+            driver = self.driver.admin_driver(deployment=deployment)
+            users = driver.shell.keystone.users.findall()
+            for user in users:
+                if user.name in system_users:
+                    continue
+                if user.id not in user_dict:
+                    try:
+                        logger.info("GarbageCollector: deleting user: %s" % user)
+                        self.driver.delete_user(user.id)
+                    except:
+                        logger.log_exc("GarbageCollector: delete user failed: %s" % user)
+            completed_urls.append(deployment.auth_url)          
+
+    def gc_user_tenant_roles(self):
+        """
+        Remove roles that don't exist in openstack db if they have 
+        an enacted time (enacted != None).
+        """
+        # get all site privileges and slice memberships that have been enacted 
+        user_tenant_roles = defaultdict(list)
+        for site_priv in SitePrivilege.objects.filter(enacted__isnull=False):
+            user_tenant_roles[(site_priv.user.kuser_id, site_priv.site.tenant_id)].append(site_priv.role.role)
+        for slice_memb in SlicePrivilege.objects.filter(enacted__isnull=False):
+            user_tenant_roles[(slice_memb.user.kuser_id, slice_memb.slice.tenant_id)].append(slice_memb.role.role)  
+
+        # some deployments are at the same url. Keep track of the urls we've visited
+        # to make sure we aren't making redundant calls
+        completed_urls = [] 
+        # Some user tenant role aren't stored in planetstack but they must be preserved. 
+        # Role that fall in this category are
+        # 1. Never remove a user's role that their home site
+        # 2. Never remove a user's role at a slice they've created.
+        # Keep track of all roles that must be preserved.     
+        users = User.objects.all()
+        for deployment in Deployment.objects.all():
+            # skip deployments that we've already processed
+            if deployment.auth_url in completed_urls:
+                continue
+
+            driver = self.driver.admin_driver(deployment=deployment)
+            tenants = driver.shell.keystone.tenants.list() 
+            for user in users:
+                # skip admin roles
+                if user.kuser_id == self.driver.admin_user.id:
+                    continue
+     
+                ignore_tenant_ids = []
+                k_user = driver.shell.keystone.users.find(id=user.kuser_id)
+                ignore_tenant_ids = [s['tenant_id'] for s in user.slices.values()]
+                if user.site:
+                    ignore_tenant_ids.append(user.site.tenant_id) 
+
+                # get user roles in keystone
+                for tenant in tenants:
+                    # skip preserved tenant ids
+                    if tenant.tenant_id in ignore_tenant_ids: 
+                        continue          
+                    # compare user tenant roles
+                    user_tenant_role_ids = user_tenant_roles.get((user.kuser_id, tenant.id), [])
+
+                    if user_tenant_role_ids:
+                        # The user has roles at the tenant. Check if roles need to 
+                        # be updated.
+                        k_user_roles =  driver.shell.keystone.roles.roles_for_user(k_user, tenant)
+                        for k_user_role in k_user_roles:
+                            if k_user_role.role_id not in user_tenant_role_ids: 
+                                logger.info("GarbageCollector: removing user role %s for %s at %s" % \
+                                           (k_user_role, k_user.username, tenant.name))
+                                driver.shell.keyston.remove_user_role(k_user, k_user_role, tenant) 
+                    else:
+                        # remove all roles the user has at the tenant. 
+                        for k_user_role in k_user_roles:
+                            logger.info("GarbageCollector: removing user role %s for %s at %s" % \
+                                       (k_user_role, k_user.username, tenant.name))
+                            driver.shell.keyston.remove_user_role(k_user, k_user_role, tenant)
+            completed_urls.append(deployment.auth_url) 
+    def gc_slivers(self):
+        """
+        Remove slivers that no don't exist in openstack db if they have 
+        an enacted time (enacted != None).
+        """
+        # get all slivers where enacted != null. We can assume these users
+        # have previously been synced and need to be checed for deletion.
+        slivers = Sliver.objects.filter(enacted__isnull=False)
+        sliver_dict = {}
+        for sliver in slivers:
+            sliver_dict[sliver.instance_id] = sliver
+
+        
+        # some deployments are at the same url. Keep track of the urls we've visited
+        # to make sure we aren't making redundant calls
+        completed_urls = []
+        for deployment in Deployment.objects.all():
+            # skip deployments that we've already processed
+            if deployment.auth_url in completed_urls:
+                continue
+
+            try:
+                driver = self.driver.admin_driver(deployment=deployment)
+                for tenant in driver.shell.keystone.tenants.list():
+                    if tenant.name in ['admin', 'services']:
+                        continue
+                    # delete sliver that don't have a sliver record
+                    tenant_driver = self.driver.client_driver(tenant=tenant.name, deployment=deployment)
+                    for instance in tenant_driver.shell.nova.servers.list():
+                        if instance.id not in sliver_dict:
+                            try:
+                                logger.info("GarbageCollector: destroying sliver: %s %s" % (instance, instance.id))
+                                tenant_driver.destroy_instance(instance.id)
+                            except:
+                                logger.log_exc("GarbageCollector: destroy sliver failed: %s" % instance)
+            except:
+                logger.log_exc("GarbageCollector: Error at deployment %s" % deployment) 
+            completed_urls.append(deployment.auth_url)
+               
+
+    def gc_sliver_ips(self):
+        """
+        Update ips that have changed.
+        """
+        # fill in null ip addresses
+        slivers = Sliver.objects.filter(ip=None)
+        for sliver in slivers:
+            # update connection
+            
+            driver = self.driver.client_driver(tenant=sliver.slice.name, deployment=sliver.node.deployment)
+            servers = driver.shell.nova.servers.findall(id=sliver.instance_id)
+            if not servers:
+                continue
+            server = servers[0]
+            ips = server.addresses.get(sliver.slice.name, [])
+            if ips and sliver.ip != ips[0]['addr']:
+                sliver.ip = ips[0]['addr']
+                sliver.save()
+                logger.info("updated sliver ip: %s %s" % (sliver, ips[0]))
+
+    def gc_nodes(self):
+         # collect local nodes
+        nodes = Node.objects.all()
+        nodes_dict = {}
+        for node in nodes:
+            nodes_dict[node.name] = node
+
+        # collect nova nodes:
+        compute_nodes_dict = {}
+        for deployment in Deployment.objets.all():
+            driver = self.driver.admin_driver(deployment=deployment) 
+            compute_nodes = driver.nova.hypervisors.list()
+            for compute_node in compute_nodes:
+                compute_nodes_dict[compute_node.hypervisor_hostname] = compute_node
+
+        # remove old nodes
+        old_node_names = set(nodes_dict.keys()).difference(compute_nodes_dict.keys())
+        Node.objects.filter(name__in=old_node_names).delete()
+
+    def gc_images(self):
+        # collect local images
+        images = Image.objects.all()
+        images_dict = {}
+        for image in images:
+            images_dict[image.name] = image
+
+        # collect glance images
+        glance_images_dict = {}
+        for deployment in Deployment.objects.all():
+            driver = self.driver.admin_driver(deployment=deployment)
+            glance_images = driver.shell.glance.get_images()
+            for glance_image in glance_images:
+                glance_images_dict[glance_image['name']] = glance_image
+
+        # remove old images
+        old_image_names = set(images_dict.keys()).difference(glance_images_dict.keys())
+        Image.objects.filter(name__in=old_image_names).delete()
diff --git a/planetstack/observer/steps/sync_image_deployments.py b/planetstack/observer/steps/sync_image_deployments.py
new file mode 100644 (file)
index 0000000..4a69b1c
--- /dev/null
@@ -0,0 +1,75 @@
+import os
+import base64
+from collections import defaultdict
+from django.db.models import F, Q
+from planetstack.config import Config
+from observer.openstacksyncstep import OpenStackSyncStep
+from core.models import Deployment
+from core.models import Image, ImageDeployments
+from util.logger import Logger, logging
+\r
+logger = Logger(level=logging.INFO)
+
+class SyncImageDeployments(OpenStackSyncStep):
+    provides=[ImageDeployments]
+    requested_interval=0
+
+    def fetch_pending(self):
+         # smbaker: commented out automatic creation of ImageDeployments as
+         #    as they will now be configured in GUI. Not sure if this is
+         #    sufficient.
+
+#        # ensure images are available across all deployments
+#        image_deployments = ImageDeployments.objects.all()
+#        image_deploy_lookup = defaultdict(list)
+#        for image_deployment in image_deployments:
+#            image_deploy_lookup[image_deployment.image].append(image_deployment.deployment)
+#
+#        all_deployments = Deployment.objects.all()
+#        for image in Image.objects.all():
+#            expected_deployments = all_deployments
+#            for expected_deployment in expected_deployments:
+#                if image not in image_deploy_lookup or \
+#                  expected_deployment not in image_deploy_lookup[image]:
+#                    id = ImageDeployments(image=image, deployment=expected_deployment)
+#                    id.save()
+
+        # now we return all images that need to be enacted
+        return ImageDeployments.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
+
+    def sync_record(self, image_deployment):
+        logger.info("Working on image %s on deployment %s" % (image_deployment.image.name, image_deployment.deployment.name))
+        driver = self.driver.admin_driver(deployment=image_deployment.deployment.name)
+        images = driver.shell.glance.get_images()
+        glance_image = None
+        for image in images:
+            if image['name'] == image_deployment.image.name:
+                glance_image = image
+                break
+        if glance_image:
+            logger.info("Found image %s on deployment %s" % (image_deployment.image.name, image_deployment.deployment.name))
+            image_deployment.glance_image_id = glance_image['id']
+        elif image_deployment.image.path:
+            image = {
+                'name': image_deployment.image.name,
+                'is_public': True,
+                'disk_format': 'raw',
+                'container_format': 'bare',
+                'file': image_deployment.image.path,
+            }
+
+            logger.info("Creating image %s on deployment %s" % (image_deployment.image.name, image_deployment.deployment.name))
+
+            glance_image = driver.shell.glanceclient.images.create(name=image_deployment.image.name,
+                                                                   is_public=True,
+                                                                   disk_format='raw',
+                                                                   container_format='bare')
+            glance_image.update(data=open(image_deployment.image.path, 'rb'))
+
+            # While the images returned by driver.shell.glance.get_images()
+            #   are dicts, the images returned by driver.shell.glanceclient.images.create
+            #   are not dicts. We have to use getattr() instead of [] operator.
+            if not glance_image or not getattr(glance_image,"id",None):
+                raise Exception, "Add image failed at deployment %s" % image_deployment.deployment.name
+            image_deployment.glance_image_id = getattr(glance_image, "id")
+        image_deployment.save()
index 2dbd74d..2c24e83 100644 (file)
@@ -10,20 +10,28 @@ class SyncImages(OpenStackSyncStep):
     requested_interval=0
 
     def fetch_pending(self):
+        # get list of images on disk
+        images_path = Config().observer_images_directory 
+        available_images = {}
+        for f in os.listdir(images_path):
+            if os.path.isfile(os.path.join(images_path ,f)):
+                available_images[f] = os.path.join(images_path ,f)
+
         images = Image.objects.all()
         image_names = [image.name for image in images]
+
+        for image_name in available_images:
+            #remove file extension
+            clean_name = ".".join(image_name.split('.')[:-1])
+            if clean_name not in image_names:
+                image = Image(name=clean_name,
+                              disk_format='raw',
+                              container_format='bare', 
+                              path = available_images[image_name])
+                image.save()
        
-        new_images = []
-        glance_images = self.driver.shell.glance.get_images()
-        for glance_image in glance_images:
-            if glance_image['name'] not in image_names:
-                image = Image(image_id=glance_image['id'],
-                              name=glance_image['name'],
-                              disk_format=glance_image['disk_format'],
-                              container_format=glance_image['container_format'])
-                new_images.append(image)   
-        return new_images
+        
+        return Image.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None)) 
 
     def sync_record(self, image):
         image.save()
index d1b51d5..04f3270 100644 (file)
@@ -7,14 +7,14 @@ from planetstack.config import Config
 from observer.openstacksyncstep import OpenStackSyncStep
 from core.models.network import *
 from core.models.slice import *
-from core.models.slice import Sliver
+from core.models.sliver import Sliver
 from util.logger import Logger, logging
 
 logger = Logger(level=logging.INFO)
 
 class SyncNetworkDeployments(OpenStackSyncStep):
     requested_interval = 0 
-    provides=[Networ, NetworkDeployments, Sliver]
+    provides=[Network, NetworkDeployments, Sliver]
     
     def fetch_pending(self):
         # network deployments are not visible to users. We must ensure
@@ -31,9 +31,9 @@ class SyncNetworkDeployments(OpenStackSyncStep):
 
         for network in Network.objects.filter():
             # ignore networks that have
-            # template.visibility = private and template.translation = none
+            # template.visibility = private and translation = none
             if network.template.visibility == 'private' and not network.template.translation == 'none':
-                continue
+                continue                               
             expected_deployments = slice_deploy_lookup[network.owner]
             for expected_deployment in expected_deployments:
                 if network not in network_deploy_lookup or \
index 7e69330..92485a5 100644 (file)
@@ -30,7 +30,7 @@ class SyncNetworkSlivers(OpenStackSyncStep):
         for sliver in slivers:
             slivers_by_instance_id[sliver.instance_id] = sliver
 
-        driver = self.driver.admin_driver(caller=sliver.creator, tenant=sliver.slice.name, deployment=sliver.node.deployment.name)
+        driver = self.driver.client_driver(caller=sliver.creator, tenant=sliver.slice.name, deployment=sliver.node.deployment.name)
         ports = driver.shell.quantum.list_ports()["ports"]
         for port in ports:
             if port["id"] in networkSlivers_by_port:
index bef0ca0..030d57c 100644 (file)
@@ -6,8 +6,7 @@ from django.db.models import F, Q
 from planetstack.config import Config
 from observer.openstacksyncstep import OpenStackSyncStep
 from core.models.node import Node
-from core.models.deployment import Deployment
-from core.models.site import Site
+from core.models.site import Site, Deployment
 
 class SyncNodes(OpenStackSyncStep):
     provides=[Node]
@@ -21,16 +20,18 @@ class SyncNodes(OpenStackSyncStep):
 
         # fetch all nodes from each deployment 
         deployments = Deployment.objects.all()
+        new_nodes = []
         for deployment in deployments:
             driver = self.driver.admin_driver(deployment=deployment.name)
             compute_nodes = driver.shell.nova.hypervisors.list()
-            if compute_node.hypervisor_hostname not in node_hostnames:
-                # XX TODO:figure out how to correctly identify a node's site.
-                # XX pick a random site to add the node to for now
-                site_index = random.randint(0, len(sites))
-                node = Node(name=compute_node.hypervisor_hostname,
-                            site=sites[site_index], deployment=deployment)
-                new_nodes.append(node)
+            for compute_node in compute_nodes:
+                if compute_node.hypervisor_hostname not in node_hostnames:
+                    # XX TODO:figure out how to correctly identify a node's site.
+                    # XX pick a random site to add the node to for now
+                    site_index = random.randint(0, len(sites))
+                    node = Node(name=compute_node.hypervisor_hostname,
+                                site=sites[site_index], deployment=deployment)
+                    new_nodes.append(node)
 
         return new_nodes    
                  
index 5dc30d9..e3a20e9 100644 (file)
@@ -4,9 +4,8 @@ from django.db.models import F, Q
 from planetstack.config import Config
 from observer.openstacksyncstep import OpenStackSyncStep
 from core.models.role import Role
-from core.models.site import SiteRole
+from core.models.site import SiteRole, Deployment, DeploymentRole
 from core.models.slice import SliceRole
-from core.models.deployment import DeploymentRole
 
 class SyncRoles(OpenStackSyncStep):
     provides=[Role]
@@ -31,7 +30,8 @@ class SyncRoles(OpenStackSyncStep):
     def sync_record(self, role):
         if not role.enacted:
             deployments = Deployment.objects.all()
-            for deployment in deployments:
+                   for deployment in deployments:
                 driver = self.driver.admin_driver(deployment=deployment.name)
                 driver.create_role(role.role)
-            role.save()    
+            role.save()
+    
index a996c85..fa89d2c 100644 (file)
@@ -21,7 +21,7 @@ class SyncSiteDeployments(OpenStackSyncStep):
             site_deployment.tenant_id = tenant.id
             site_deployment.save()
         elif site_deployment.site.id and site_deployment.tenant_id:
-            driver = self.driver.admin_driver(deployment=site_deployment.name)
+            driver = self.driver.admin_driver(deployment=site_deployment.deployment.name)
             driver.update_tenant(site_deployment.tenant_id,
                                  description=site_deployment.site.name,
                                  enabled=site_deployment.site.enabled)
index b57ae43..c229257 100644 (file)
@@ -3,8 +3,7 @@ import base64
 from django.db.models import F, Q
 from planetstack.config import Config
 from observer.openstacksyncstep import OpenStackSyncStep
-from core.models.site import *
-from core.models.user import User, UserDeployments    
+from core.models import User, UserDeployments, SitePrivilege, SiteDeployments   
 
 class SyncSitePrivileges(OpenStackSyncStep):
     requested_interval=0
index 580edd1..7cce152 100644 (file)
@@ -5,10 +5,9 @@ from netaddr import IPAddress, IPNetwork
 from django.db.models import F, Q
 from planetstack.config import Config
 from observer.openstacksyncstep import OpenStackSyncStep
-from core.models.deployment import Deployment
-from core.models.site import SiteDeployments
+from core.models.site import Deployment, SiteDeployments
 from core.models.slice import Slice, SliceDeployments
-from core.models.user import UserDeployments
+from core.models.userdeployments import UserDeployments
 from util.logger import Logger, logging
 
 logger = Logger(level=logging.INFO)
@@ -100,8 +99,7 @@ class SyncSliceDeployments(OpenStackSyncStep):
 
         if slice_deployment.tenant_id:
             # update slice/tenant quota
-            driver = self.driver.client_driver(deployment=slice_deployment.deployment.name,
-                                              tenant=slice_deployment.slice.name)
+            driver = self.driver.client_driver(deployment=slice_deployment.deployment.name, tenant=slice_deployment.slice.name)
             driver.shell.nova.quotas.update(tenant_id=slice_deployment.tenant_id, instances=int(slice_deployment.slice.max_slivers)) 
 
         slice_deployment.save()
index b6b1638..d2ec03e 100644 (file)
@@ -4,7 +4,10 @@ from django.db.models import F, Q
 from planetstack.config import Config
 from observer.openstacksyncstep import OpenStackSyncStep
 from core.models.slice import *
-from core.models.user import UserDeployments
+from core.models.userdeployments import UserDeployments
+from util.logger import Logger, logging
+
+logger = Logger(level=logging.INFO)
 
 class SyncSliceMemberships(OpenStackSyncStep):
     requested_interval=0
@@ -15,6 +18,7 @@ class SyncSliceMemberships(OpenStackSyncStep):
 
     def sync_record(self, slice_memb):
         # sync slice memberships at all slice deployments 
+        logger.info("syncing slice privilege: %s %s" % (slice_memb.slice.name, slice_memb.user.email))
         slice_deployments = SliceDeployments.objects.filter(slice=slice_memb.slice)
         for slice_deployment in slice_deployments:
             if not slice_deployment.tenant_id:
index b576bbc..3b81766 100644 (file)
@@ -4,7 +4,7 @@ from django.db.models import F, Q
 from planetstack.config import Config
 from observer.openstacksyncstep import OpenStackSyncStep
 from core.models.sliver import Sliver
-from core.models.slice import SlicePrivilege, SliceDeployments
+from core.models.slice import Slice, SlicePrivilege, SliceDeployments
 from core.models.network import Network, NetworkSlice, NetworkDeployments
 from util.logger import Logger, logging
 
@@ -52,12 +52,11 @@ class SyncSlivers(OpenStackSyncStep):
             # now include network template
             network_templates = [network.template.sharedNetworkName for network in networks \
                                  if network.template.sharedNetworkName]
+            #logger.info("%s %s %s %s" % (driver.shell.quantum.username, driver.shell.quantum.password, driver.shell.quantum.tenant, driver.shell.quantum.url))
             for net in driver.shell.quantum.list_networks()['networks']:
                 if net['name'] in network_templates: 
                     nics.append({'net-id': net['id']}) 
 
-            file("/tmp/scott-manager","a").write("slice: %s\nreq: %s\n" % (str(sliver.slice.name), str(nics)))
-         
             # look up image id
             deployment_driver = self.driver.admin_driver(deployment=sliver.deploymentNetwork.name)
             image_id = None
@@ -74,14 +73,15 @@ class SyncSlivers(OpenStackSyncStep):
                           sliver.slice.name
                 key_fields =  {'name': keyname,
                                'public_key': sliver.creator.public_key}
-                driver.create_keypair(**key_fields)       
+                driver.create_keypair(**key_fields)
+
             instance = driver.spawn_instance(name=sliver.name,
                                 key_name = keyname,
                                 image_id = image_id,
                                 hostname = sliver.node.name,
                                 pubkeys = pubkeys,
-                                nics = nics )
+                                nics = nics,
+                                userdata = sliver.userData )
             sliver.instance_id = instance.id
             sliver.instance_name = getattr(instance, 'OS-EXT-SRV-ATTR:instance_name')
             sliver.save()    
index 39943f7..a6995ab 100644 (file)
@@ -6,7 +6,8 @@ from django.db.models import F, Q
 from planetstack.config import Config
 from observer.openstacksyncstep import OpenStackSyncStep
 from core.models.site import SiteDeployments, Deployment
-from core.models.user import User, UserDeployments
+from core.models.user import User
+from core.models.userdeployments import UserDeployments
 from util.logger import Logger, logging
 
 logger = Logger(level=logging.INFO)
index 71f9c0f..9d88918 100644 (file)
@@ -4,7 +4,8 @@ import hashlib
 from django.db.models import F, Q
 from planetstack.config import Config
 from observer.openstacksyncstep import OpenStackSyncStep
-from core.models.user import User, UserDeployments
+from core.models.user import User
+from core.models.userdeployments import  UserDeployments
 
 class SyncUsers(OpenStackSyncStep):
     provides=[User]
index 187b318..fc0cb0b 100644 (file)
@@ -49,7 +49,8 @@ class SyncStep:
     
     def check_dependencies(self, obj, failed):
         for dep in self.dependencies:
-            peer_object = getattr(obj, dep.lower())
+            peer_name = dep[0].lower() + dep[1:]    # django names are camelCased with the first letter lower
+            peer_object = getattr(obj, peer_name)
             if (peer_object.pk==failed.pk):
                 raise FailedDependency
 
index c543947..af91387 100644 (file)
@@ -1,6 +1,8 @@
+import urlparse
 try:
     from keystoneclient.v2_0 import client as keystone_client
     from glance import client as glance_client
+    import glanceclient
     from novaclient.v1_1 import client as nova_client
     from quantumclient.v2_0 import client as quantum_client
     from nova.db.sqlalchemy import api as nova_db_api 
@@ -13,7 +15,6 @@ except:
     has_openstack = False
 
 from planetstack.config import Config
-from deployment_auth import deployment_auth
 
 def require_enabled(callable):
     def wrapper(*args, **kwds):
@@ -41,22 +42,13 @@ def parse_novarc(filename):
 
 class Client:
     def __init__(self, username=None, password=None, tenant=None, url=None, token=None, endpoint=None, deployment=None, admin=True, *args, **kwds):
-        
-            
-        if not deployment or deployment not in deployment_auth:
-            auth = deployment_auth['default']
-        else:
-            auth = deployment_auth[deployment]
-            
+       
         self.has_openstack = has_openstack
-
-        self.url = auth['url']
+        self.url = deployment.auth_url
         if admin:
-            self.username = auth['user']
-            self.password = auth['password']
-            self.tenant = auth['tenant']
-            self.endpoint = auth['endpoint']
-            self.token = auth['token']  
+            self.username = deployment.admin_user
+            self.password = deployment.admin_password
+            self.tenant = deployment.admin_tenant
         else:
             self.username = None
             self.password = None
@@ -96,9 +88,7 @@ class KeystoneClient(Client):
             self.client = keystone_client.Client(username=self.username,
                                                  password=self.password,
                                                  tenant_name=self.tenant,
-                                                 auth_url=self.url,
-                                                 endpoint=self.endpoint,
-                                                 token=self.token
+                                                 auth_url=self.url
                                                 )
 
     @require_enabled
@@ -123,6 +113,16 @@ class GlanceClient(Client):
     def __getattr__(self, name):
         return getattr(self.client, name)
 
+class GlanceClientNew(Client):
+    def __init__(self, version, endpoint, token, *args, **kwds):
+        Client.__init__(self, *args, **kwds)
+        if has_openstack:
+            self.client = glanceclient.Client(version, endpoint=endpoint, token=token)
+
+    @require_enabled
+    def __getattr__(self, name):
+        return getattr(self.client, name)        
+
 class NovaClient(Client):
     def __init__(self, *args, **kwds):
         Client.__init__(self, *args, **kwds)
@@ -187,11 +187,17 @@ class OpenStackClient:
     def __init__ ( self, *args, **kwds) :
         # instantiate managers
         self.keystone = KeystoneClient(*args, **kwds)
+        url_parsed = urlparse.urlparse(self.keystone.url)
+        hostname = url_parsed.netloc.split(':')[0]
+        token = self.keystone.client.tokens.authenticate(username=self.keystone.username, password=self.keystone.password, tenant_name=self.keystone.tenant)
         self.keystone_db = KeystoneDB()
         self.glance = GlanceClient(*args, **kwds)
+        
+        self.glanceclient = GlanceClientNew('1', endpoint='http://%s:9292' % hostname, token=token.id, **kwds)
         self.nova = NovaClient(*args, **kwds)
         self.nova_db = NovaDB(*args, **kwds)
         self.quantum = QuantumClient(*args, **kwds)
+    
 
     @require_enabled
     def connect(self, *args, **kwds):
index 91807f1..c3e1f35 100644 (file)
@@ -1,6 +1,7 @@
 import commands
 import hashlib
 from planetstack.config import Config
+from core.models import Deployment
 
 try:
     from openstack.client import OpenStackClient
@@ -12,38 +13,41 @@ manager_enabled = Config().api_nova_enabled
 
 class OpenStackDriver:
 
-    def __init__(self, config = None, client=None, deployment=None):
+    def __init__(self, config = None, client=None):
         if config:
             self.config = Config(config)
         else:
             self.config = Config()
 
-        self.admin_client = OpenStackClient(deployment=deployment)
-        self.admin_user = self.admin_client.keystone.users.find(name=self.admin_client.keystone.username)
-
         if client:
             self.shell = client
-        else:
-            self.shell = OpenStackClient(deployment=deployment)
 
         self.enabled = manager_enabled
         self.has_openstack = has_openstack
+        self.deployment = None
+        self.admin_user = None
 
     def client_driver(self, caller=None, tenant=None, deployment=None):
+        admin_driver = self.admin_driver(tenant=tenant, deployment=deployment)
         if caller:
             auth = {'username': caller.email,
                     'password': hashlib.md5(caller.password).hexdigest()[:6],
                     'tenant': tenant}
-            client = OpenStackClient(deployment=deployment, **auth)
+            client = OpenStackClient(deployment=admin_driver.deployment, **auth)
         else:
-            client = OpenStackClient(tenant=tenant, deployment=deployment)
+            client = OpenStackClient(tenant=tenant, deployment=admin_driver.deployment)
 
-        driver = OpenStackDriver(client=client, deployment=deployment)
+        driver = OpenStackDriver(client=client)
+        driver.admin_user = admin_driver.admin_user
+        driver.deployment = admin_driver.deployment
         return driver
 
     def admin_driver(self, tenant=None, deployment=None):
+        deployment = Deployment.objects.get(name=deployment)
         client = OpenStackClient(tenant=tenant, deployment=deployment)
-        driver = OpenStackDriver(client=client, deployment=deployment)
+        driver = OpenStackDriver(client=client)
+        driver.admin_user = client.keystone.users.find(name=deployment.admin_user)
+        driver.deployment = deployment
         return driver    
 
     def create_role(self, name):
@@ -413,7 +417,7 @@ class OpenStackDriver:
 
         return (subnet_id, subnet)
 
-    def spawn_instance(self, name, key_name=None, hostname=None, image_id=None, security_group=None, pubkeys=[], nics=None, metadata=None):
+    def spawn_instance(self, name, key_name=None, hostname=None, image_id=None, security_group=None, pubkeys=[], nics=None, metadata=None, userdata=None):
         flavor_name = self.config.nova_default_flavor
         flavor = self.shell.nova.flavors.find(name=flavor_name)
         #if not image:
@@ -439,7 +443,8 @@ class OpenStackDriver:
                                             availability_zone=availability_zone,
                                             nics=nics,
                                             networks=nics,
-                                            meta=metadata)
+                                            meta=metadata,
+                                            userdata=userdata)
         return server
 
     def destroy_instance(self, id):
index 8a2eff2..596ecdd 100755 (executable)
@@ -29,6 +29,10 @@ def main():
     parser = argparse.ArgumentParser(usage='%(prog)s [options]')
     parser.add_argument('-d', '--daemon', dest='daemon', action='store_true', default=False, 
                         help='Run as daemon.')
+    # smbaker: util/config.py parses sys.argv[] directly to get config file name; include the option here to avoid
+    #   throwing unrecognized argument exceptions
+    parser.add_argument('-C', '--config', dest='config_file', action='store', default="/opt/planetstack/plstackapi_config",
+                        help='Name of config file.')
     args = parser.parse_args()
        
     if args.daemon: daemon()
diff --git a/planetstack/planetstack-config.py b/planetstack/planetstack-config.py
new file mode 100755 (executable)
index 0000000..7aa375b
--- /dev/null
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+import sys
+from planetstack.config import Config
+
+def help():
+    print "syntax: %s get name [default]" % sys.argv[0]
+
+def main():
+    c = Config()
+
+    if len(sys.argv)<=1:
+        help()
+        return
+
+    if sys.argv[1] == "get":
+        if len(sys.argv)==4:
+            print getattr(c, sys.argv[2], sys.argv[3])
+        elif len(sys.argv)==3:
+            print getattr(c, sys.argv[2])
+        else:
+            help()
+    else:
+        help()
+
+main()
index ce13f08..811c413 100644 (file)
@@ -1,4 +1,5 @@
 from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP
+from django import VERSION as DJANGO_VERSION
 
 # Django settings for planetstack project.
 from config import Config
@@ -80,6 +81,7 @@ STATIC_URL = '/static/'
 
 # Additional locations of static files
 STATICFILES_DIRS = ( "/opt/planetstack/core/static/",
+                     "/opt/planetstack/core/xoslib/static/",
     # Put strings here, like "/home/html/static" or "C:/www/django/static".
     # Always use forward slashes, even on Windows.
     # Don't forget to use absolute paths, not relative paths.
@@ -122,7 +124,8 @@ TEMPLATE_DIRS = (
     # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
     # Always use forward slashes, even on Windows.
     # Don't forget to use absolute paths, not relative paths.
-    "/opt/planetstack/templates"
+    "/opt/planetstack/templates",
+    "/opt/planetstack/core/xoslib/templates",    
 )
 
 INSTALLED_APPS = (
@@ -143,14 +146,24 @@ INSTALLED_APPS = (
     'core',
     'hpc',
     'requestrouter',
+    'cassandra',
+    'kairos',
+    'nagios',
     'syndicate',
     'geoposition',
 )
 
+if DJANGO_VERSION[1]>=7:
+    # if django >= 1.7, then remove evolution and change the admin module
+    INSTALLED_APPS = list(INSTALLED_APPS)
+    INSTALLED_APPS[INSTALLED_APPS.index('django.contrib.admin')] = 'django.contrib.admin.apps.SimpleAdminConfig'
+    INSTALLED_APPS.remove('django_evolution')
+    INSTALLED_APPS = tuple(INSTALLED_APPS)
 
 # Added for django-suit form 
 TEMPLATE_CONTEXT_PROCESSORS = TCP + (
     'django.core.context_processors.request',
+    'core.context_processors.planetstack',
 )
 
 # Django Suit configuration example
@@ -197,9 +210,13 @@ SUIT_CONFIG = {
         {'label': 'Sites', 'icon':'icon-site', 'url': '/admin/core/site/'},
         {'label': 'Slices', 'icon':'icon-slice', 'url': '/admin/core/slice/'},
         {'label': 'Users', 'icon':'icon-user', 'url': '/admin/core/user/'},
-        {'label': 'Request Routing', 'icon':'icon-cog', 'app': 'requestrouter'},
+        {'label': 'RequestRouter', 'icon':'icon-cog', 'app': 'requestrouter'},
         {'label': 'HyperCache', 'icon':'icon-cog', 'app': 'hpc'},
         {'label': 'Syndicate', 'icon':'icon-cog', 'app': 'syndicate'},
+        {'label': 'Cassandra', 'icon':'icon-cog', 'app': 'cassandra'},
+#        {'label': 'KairosDB', 'icon':'icon-cog', 'app': 'kairos'},
+#        {'label': 'Nagios', 'icon':'icon-cog', 'app': 'nagios'},
+
         #{'label': 'Configured Services', 'icon':'icon-cog', 'models': [{'label': 'Content Delivery Network', 'app':'hpc'}]},
     #     'sites',
     #     {'app': 'auth', 'icon':'icon-lock', 'models': ('user', 'group')},
@@ -242,3 +259,5 @@ LOGGING = {
 }
 
 BIGQUERY_TABLE = getattr(config, "bigquery_table", "demoevents")
+
+DISABLE_MINIDASHBOARD = getattr(config, "gui_disable_minidashboard", False)
index 99119e2..3513a38 100644 (file)
@@ -2,27 +2,17 @@ from django.conf.urls import patterns, include, url
 
 # Uncomment the next two lines to enable the admin:
 from django.contrib import admin
-from core.views.deployments import DeploymentList, DeploymentDetail
-from core.views.images import ImageList, ImageDetail
-from core.views.nodes import NodeList, NodeDetail
-from core.views.projects import ProjectList, ProjectDetail
-from core.views.reservations import ReservationList, ReservationDetail
-from core.views.roles import RoleList, RoleDetail
-from core.views.serviceclasses import ServiceClassList, ServiceClassDetail
-from core.views.serviceresources import ServiceResourceList, ServiceResourceDetail
-from core.views.sites import SiteList, SiteDetail
-from core.views.site_privileges import SitePrivilegeList, SitePrivilegeDetail
-from core.views.slices import SliceList, SliceDetail
-from core.views.slice_privileges import SlicePrivilegeList, SlicePrivilegeDetail
-from core.views.slivers import SliverList, SliverDetail
-from core.views.tags import TagList, TagDetail
-from core.views.users import UserList, UserDetail
+
+# This is the generated API
+from genapi import *
+
 from core.views.legacyapi import LegacyXMLRPC
+#from core.views.analytics import AnalyticsAjaxView
 from core.models import *
-from core.api_root import api_root
 from rest_framework import generics
-from core.plus.sites import SitePlus
+from core.dashboard.sites import SitePlus
 from django.http import HttpResponseRedirect
+#from core.xoslib import XOSLibDataView
 
 admin.site = SitePlus()
 admin.autodiscover()
@@ -45,14 +35,31 @@ urlpatterns = patterns('',
     url(r'^', include(admin.site.urls)),
     #url(r'^profile/home', 'core.views.home'),
 
+#    url(r'^admin/xoslib/(?P<name>\w+)/$', XOSLibDataView.as_view(), name="xoslib"),
+
     url(r'^plstackapi/$', api_root),
-    
+
+    url(r'^plstackapi/dashboardviews/$', DashboardViewList.as_view(), name='dashboardview-list'),
+    url(r'^plstackapi/dashboardview/(?P<pk>[a-zA-Z0-9\-]+)/$', DashboardViewDetail.as_view(), name='dashboardview-detail'),
+
+    url(r'^plstackapi/payments/$', PaymentList.as_view(), name='payment-list'),
+    url(r'^plstackapi/payments/(?P<pk>[a-zA-Z0-9\-]+)/$', PaymentDetail.as_view(), name='payment-detail'),
+
+    url(r'^plstackapi/charges/$', ChargeList.as_view(), name='charge-list'),
+    url(r'^plstackapi/charges/(?P<pk>[a-zA-Z0-9\-]+)/$', ChargeDetail.as_view(), name='charge-detail'),
+
+    url(r'^plstackapi/accounts/$', AccountList.as_view(), name='account-list'),
+    url(r'^plstackapi/accounts/(?P<pk>[a-zA-Z0-9\-]+)/$', AccountDetail.as_view(), name='account-detail'),
+
     url(r'^plstackapi/deployments/$', DeploymentList.as_view(), name='deployment-list'),
     url(r'^plstackapi/deployments/(?P<pk>[a-zA-Z0-9\-]+)/$', DeploymentDetail.as_view(), name='deployment-detail'),
 
     url(r'^plstackapi/images/$', ImageList.as_view(), name='image-list'),
     url(r'^plstackapi/images/(?P<pk>[a-zA-Z0-9_\-]+)/$', ImageDetail.as_view(), name='image-detail'),
 
+    url(r'^plstackapi/networkparametertypes/$', NodeList.as_view(), name='node-list'),
+    url(r'^plstackapi/networkparametertypes/(?P<pk>[a-zA-Z0-9_\-]+)/$', NodeDetail.as_view(), name='node-detail'),
+
     url(r'^plstackapi/nodes/$', NodeList.as_view(), name='node-list'),
     url(r'^plstackapi/nodes/(?P<pk>[a-zA-Z0-9_\-]+)/$', NodeDetail.as_view(), name='node-detail'),
     
@@ -77,8 +84,22 @@ urlpatterns = patterns('',
     url(r'^plstackapi/sites/$', SiteList.as_view(), name='site-list'),
     url(r'^plstackapi/sites/(?P<pk>[a-zA-Z0-9_\-]+)/$', SiteDetail.as_view(), name='site-detail'),
 
-    url(r'^plstackapi/slices/$', SliceList.as_view(), name='slice-list'),
+    url(r'^plstackapi/accounts/$', AccountList.as_view(), name='account-list'),
+    url(r'^plstackapi/accounts/(?P<pk>[a-zA-Z0-9_\-]+)/$', AccountDetail.as_view(), name='account-detail'),
+
+    url(r'^plstackapi/networktemplates/$', NetworkSliceList.as_view(), name='networkslice-list'),
+    url(r'^plstackapi/networktemplates/(?P<pk>[a-zA-Z0-9_\-]+)/$', NetworkSliceDetail.as_view(), name='networkslice-detail'),
+
+    url(r'^plstackapi/networkslices/$', NetworkSliceList.as_view(), name='networkslice-list'),
+    url(r'^plstackapi/networkslices/(?P<pk>[a-zA-Z0-9_\-]+)/$', NetworkSliceDetail.as_view(), name='networkslice-detail'),
+
+    url(r'^plstackapi/networks/$', NetworkList.as_view(), name='network-list'),
+    url(r'^plstackapi/networks/(?P<pk>[a-zA-Z0-9_\-]+)/$', NetworkDetail.as_view(), name='network-detail'),
+    
+    url(r'^plstackapi/services/$', SliceList.as_view(), name='service-list'),
+    url(r'^plstackapi/services/(?P<pk>[a-zA-Z0-9_\-]+)/$', SliceDetail.as_view(), name='service-detail'),
 
+    url(r'^plstackapi/slices/$', SliceList.as_view(), name='slice-list'),
     url(r'^plstackapi/slices/(?P<pk>[a-zA-Z0-9_\-]+)/$', SliceDetail.as_view(), name='slice-detail'),
 
     url(r'^plstackapi/slice_memberships/$', SlicePrivilegeList.as_view(), name='sliceprivilege-list'),
@@ -95,9 +116,13 @@ urlpatterns = patterns('',
 
     url(r'^legacyapi/$', 'core.views.legacyapi.LegacyXMLRPC', name='xmlrpc'),
 
+#    url(r'^analytics/(?P<name>\w+)/$', AnalyticsAjaxView.as_view(), name="analytics"),
+
     url(r'^files/', redirect_to_apache),
 
     #Adding in rest_framework urls
     url(r'^plstackapi/', include('rest_framework.urls', namespace='rest_framework')),
-    
+
+    # XOSLib rest methods
+    url(r'^xoslib/', include('core.xoslib.methods', namespace='xoslib')),    
 )
index 5d95231..a61e7ed 100644 (file)
@@ -31,5 +31,6 @@ default_flavor=m1.small
 default_security_group=default
 
 [observer]
+images_directory=/opt/planetstack/images
 dependency_graph=/opt/planetstack/model-deps
 logfile=/var/log/planetstack_backend.log
index 0036c4a..36e5fc6 100644 (file)
@@ -10,7 +10,7 @@ from django.contrib.auth.signals import user_logged_in
 from django.utils import timezone
 from django.contrib.contenttypes import generic
 from suit.widgets import LinkedSelect
-from core.admin import SingletonAdmin,SliceInline,ServiceAttrAsTabInline
+from core.admin import SingletonAdmin,SliceInline,ServiceAttrAsTabInline, SliceROInline,ServiceAttrAsTabROInline, ReadOnlyAwareAdmin
 
 class RequestRouterServiceAdmin(SingletonAdmin):
     model = RequestRouterService
@@ -20,18 +20,25 @@ class RequestRouterServiceAdmin(SingletonAdmin):
     fieldsets = [(None, {'fields': ['name','enabled','versionNumber', 'description','behindNat','defaultTTL','defaultAction','lastResortAction','maxAnswers'], 'classes':['suit-tab suit-tab-general']})]
     inlines = [SliceInline,ServiceAttrAsTabInline]
 
+    user_readonly_fields = ["name", "enabled", "versionNumber", "description", "behindNat", "defaultTTL", "defaultAction", "lastResortAction", "maxAnswers"]
+    user_readonly_inlines = [SliceROInline, ServiceAttrAsTabROInline]
+
     suit_form_tabs =(('general', 'Request Router Service Details'),
         ('slices','Slices'),
         ('serviceattrs','Additional Attributes'),
     )
 
-class ServiceMapAdmin(SingletonAdmin):
+class ServiceMapAdmin(ReadOnlyAwareAdmin):
     model = ServiceMap
     verbose_name = "Service Map"
     verbose_name_plural = "Service Map"
     list_display = ("name", "owner", "slice", "prefix")
-    #readonly_fields = ["name"]
+    fieldsets = [(None, {'fields': ['name','owner','slice', 'prefix','siteMap','accessMap'], 'classes':['suit-tab suit-tab-general']})]
+
+    user_readonly_fields = ["name", "owner", "slice", "prefix", "siteMap", "accessMap"]
 
+    suit_form_tabs =(('general', 'Service Map Details'),
+    )
 
 admin.site.register(RequestRouterService, RequestRouterServiceAdmin)
 admin.site.register(ServiceMap, ServiceMapAdmin)
index ced91cf..8e4cc43 100644 (file)
@@ -16,15 +16,20 @@ class RequestRouterService(SingletonModel,Service):
     lastResortAction = models.CharField(max_length=30, default = "random", help_text="Review if this should be enum")
     maxAnswers = models.PositiveIntegerField(default=3, help_text="Maximum number of answers in DNS response.")
 
-    def __unicode__(self):  return u'RequestRouterService'
+    def __unicode__(self):  return u'Request Router Service'
+
+class ServiceMap(PlCoreBase):
+
+    class Meta:
+        app_label = "requestrouter"
 
-class ServiceMap(models.Model):
     name = models.SlugField(max_length=50, unique=True, blank=False, null=False, help_text="name of this service map")
     owner = models.ForeignKey(Service, help_text="service which owns this map")
     slice = models.ForeignKey(Slice, help_text="slice that implements this service")
     prefix = models.CharField(max_length=256, help_text="FQDN of the region of URI space managed by RR on behalf of this service")
-    siteMap = models.FileField(upload_to="maps/", help_text="maps client requests to service instances")
-    accessMap = models.FileField(upload_to="maps/", help_text="specifies which client requests are allowed")
+       # need to fix the upload location appropriately, for now we are not using access/site map
+    siteMap = models.FileField(upload_to="maps/", help_text="maps client requests to service instances", blank=True)
+    accessMap = models.FileField(upload_to="maps/", help_text="specifies which client requests are allowed", blank=True)
 
     def siteMapName(self):
         return self.name + ".site"
@@ -34,5 +39,3 @@ class ServiceMap(models.Model):
 
     def __unicode__(self): return u'%s' % self.name
 
-
-
diff --git a/planetstack/rr_observer/configurationPush.py b/planetstack/rr_observer/configurationPush.py
new file mode 100644 (file)
index 0000000..857de8b
--- /dev/null
@@ -0,0 +1,30 @@
+import ansible.playbook
+import ansible.constants as C
+import ansible.utils.template
+from ansible import errors
+from ansible import callbacks
+from ansible import utils
+from subprocess import call
+
+class ConfigurationPush:
+       def __init__(self):
+               pass
+
+       def config_push(self, service_name, user, playbook_name,hostfile):
+               '''stats = callbacks.AggregateStats()
+               playbook_cb = callbacks.PlaybookCallbacks(verbose=utils.VERBOSITY)
+               runner_cb = callbacks.PlaybookRunnerCallbacks(stats, verbose=utils.VERBOSITY)
+               pb = ansible.playbook.PlayBook(playbook="playbook/site.yml",
+                                       callbacks=playbook_cb,
+                                       runner_callbacks=runner_cb,
+                                       stats=stats
+                                       )
+               result = pb.run()
+               print result
+               '''
+
+               call("ansible-playbook --private-key=planetw "+playbook_name+" -i "+hostfile+" -u "+user+"  --extra-vars \"name="+service_name+"\"", shell=True)
+       
+
+if __name__ == "__main__":
+        main()
diff --git a/planetstack/rr_observer/deleters/servicemap_deleter.py b/planetstack/rr_observer/deleters/servicemap_deleter.py
new file mode 100644 (file)
index 0000000..b5d4509
--- /dev/null
@@ -0,0 +1,41 @@
+import os
+import sys
+import traceback
+from requestrouter.models import ServiceMap
+from observer.deleter import Deleter
+from util.logger import Logger, logging
+
+parentdir = os.path.join(os.path.dirname(__file__),"..")
+sys.path.insert(0,parentdir)
+
+from rrlib import RequestRouterLibrary
+from configurationPush import ConfigurationPush
+import rrlib_config
+
+logger = Logger(level=logging.INFO)
+
+class ServiceMapDeleter(Deleter, RequestRouterLibrary, ConfigurationPush):
+        model='ServiceMap'
+
+        def __init__(self, **args):
+            Deleter.__init__(self, **args)
+            RequestRouterLibrary.__init__(self)
+            ConfigurationPush.__init__(self)
+
+
+        def call(self, pk, model_dict):
+          try:
+              servicemap = ServiceMap.objects.get(pk=pk)
+              service_uid = self.get_servicemap_uid(servicemap)
+              self.config_push(service_uid, rrlib_config.REDIR_USER, "/opt/planetstack/rr_observer/playbook/site_redir_delete.yml", "/etc/ansible/requestrouter/dnsredir/hosts")
+              self.config_push(service_uid, rrlib_config.DEMUX_USER, "/opt/planetstack/rr_observer/playbook/site_demux_delete.yml", "/etc/ansible/requestrouter/dnsdemux/hosts")
+              print "XXX delete ServiceMap %s", servicemap.name
+              return True
+          except Exception, e:
+              traceback.print_exc()
+              logger.exception("Failed to erase map '%s'" % map_name)
+              return False
+
+if __name__ == "__main__":
+  smap = ServiceMapDeleter()
+  smap.call( 6, {'name': 'Service23'} )
diff --git a/planetstack/rr_observer/model-deps b/planetstack/rr_observer/model-deps
new file mode 100644 (file)
index 0000000..36ef620
--- /dev/null
@@ -0,0 +1,12 @@
+{
+    "ServiceMap": [
+        "Slice"
+    ], 
+    "Slice": [
+        "Site", 
+        "Service"
+    ], 
+    "User": [
+        "Site"
+    ]
+}
diff --git a/planetstack/rr_observer/playbook/roles/delete_demux/handlers/main.yml b/planetstack/rr_observer/playbook/roles/delete_demux/handlers/main.yml
new file mode 100644 (file)
index 0000000..a888468
--- /dev/null
@@ -0,0 +1,3 @@
+---
+- name: restart dnsdemux
+  service: name=dnsdemux state=restarted
diff --git a/planetstack/rr_observer/playbook/roles/delete_demux/tasks/main.yml b/planetstack/rr_observer/playbook/roles/delete_demux/tasks/main.yml
new file mode 100644 (file)
index 0000000..417401a
--- /dev/null
@@ -0,0 +1,5 @@
+---
+# This playbook contains plays to delete configuration files from dnsdemux slice
+- name: delete dnsdemux config files
+  file: path={{dst_dnsdemux_conf}}/{{name}}.conf state=absent
+  notify: restart dnsdemux
diff --git a/planetstack/rr_observer/playbook/roles/delete_demux/vars/main.yml b/planetstack/rr_observer/playbook/roles/delete_demux/vars/main.yml
new file mode 100644 (file)
index 0000000..b457050
--- /dev/null
@@ -0,0 +1,6 @@
+---
+# Variables listed here are applicable to all host groups
+
+src_dnsdemux: ../../../../temp_config/dnsdemux
+dst_dnsdemux_conf: /etc/dnsdemux/default/
+
diff --git a/planetstack/rr_observer/playbook/roles/delete_redir/handlers/main.yml b/planetstack/rr_observer/playbook/roles/delete_redir/handlers/main.yml
new file mode 100644 (file)
index 0000000..8aa497e
--- /dev/null
@@ -0,0 +1,3 @@
+---
+- name: restart dnsredir
+  service: name=dnsredir state=restarted
diff --git a/planetstack/rr_observer/playbook/roles/delete_redir/tasks/main.yml b/planetstack/rr_observer/playbook/roles/delete_redir/tasks/main.yml
new file mode 100644 (file)
index 0000000..58833bb
--- /dev/null
@@ -0,0 +1,13 @@
+---
+# This playbook contains plays to delete configuration files from dnsredir slice
+- name: delete  maps.d directory ( and deletes all intermeadiate directories )
+  #copy: src={{src_dnsredir}}/{{name}}.d dest={{dst_dnsredir_confdir}}
+  file: path={{dst_dnsredir_confdir}}/{{name}}.d/maps.d state=absent
+- name: delete config directory
+  file: path={{dst_dnsredir_confdir}}/{{name}}.d/ state=absent
+- name: copy dnsredir config file
+  file: path={{dst_dnsredir_conf}}/{{name}}.conf state=absent
+  notify: restart dnsredir
+
diff --git a/planetstack/rr_observer/playbook/roles/delete_redir/vars/main.yml b/planetstack/rr_observer/playbook/roles/delete_redir/vars/main.yml
new file mode 100644 (file)
index 0000000..dc79d35
--- /dev/null
@@ -0,0 +1,6 @@
+---
+# Variables listed here are applicable to all host groups
+
+src_dnsredir: ../../../../temp_config/dnsredir
+dst_dnsredir_conf: /etc/dnsredir/conf.d/
+dst_dnsredir_confdir: /etc/dnsredir
diff --git a/planetstack/rr_observer/playbook/roles/demux/handlers/main.yml b/planetstack/rr_observer/playbook/roles/demux/handlers/main.yml
new file mode 100644 (file)
index 0000000..a888468
--- /dev/null
@@ -0,0 +1,3 @@
+---
+- name: restart dnsdemux
+  service: name=dnsdemux state=restarted
diff --git a/planetstack/rr_observer/playbook/roles/demux/tasks/main.yml b/planetstack/rr_observer/playbook/roles/demux/tasks/main.yml
new file mode 100644 (file)
index 0000000..0339aed
--- /dev/null
@@ -0,0 +1,9 @@
+---
+# This playbook contains plays to copy configurations to destination
+- name: copy dnsdemux config files
+  copy: src={{src_dnsdemux}}/{{name}}.conf dest={{dst_dnsdemux_conf}}/{{name}}.conf
+  notify: restart dnsdemux
+
+#- name: Start the dnsdemux service
+  #service: name=dnsdemux state=started enabled=true
+
diff --git a/planetstack/rr_observer/playbook/roles/demux/vars/main.yml b/planetstack/rr_observer/playbook/roles/demux/vars/main.yml
new file mode 100644 (file)
index 0000000..b457050
--- /dev/null
@@ -0,0 +1,6 @@
+---
+# Variables listed here are applicable to all host groups
+
+src_dnsdemux: ../../../../temp_config/dnsdemux
+dst_dnsdemux_conf: /etc/dnsdemux/default/
+
diff --git a/planetstack/rr_observer/playbook/roles/redir/handlers/main.yml b/planetstack/rr_observer/playbook/roles/redir/handlers/main.yml
new file mode 100644 (file)
index 0000000..8aa497e
--- /dev/null
@@ -0,0 +1,3 @@
+---
+- name: restart dnsredir
+  service: name=dnsredir state=restarted
diff --git a/planetstack/rr_observer/playbook/roles/redir/tasks/main.yml b/planetstack/rr_observer/playbook/roles/redir/tasks/main.yml
new file mode 100644 (file)
index 0000000..e390ed9
--- /dev/null
@@ -0,0 +1,19 @@
+---
+# This playbook contains plays to copy configurations to destination
+- name: create  maps.d directory ( and creates all intermeadiate directories )
+  #copy: src={{src_dnsredir}}/{{name}}.d dest={{dst_dnsredir_confdir}}
+  file: src={{src_dnsredir}}/{{name}}.d/maps.d dest={{dst_dnsredir_confdir}}/{{name}}.d/maps.d state=directory
+- name: copy map.conf
+  copy: src={{src_dnsredir}}/{{name}}.d/maps.d/map.conf dest={{dst_dnsredir_confdir}}/{{name}}.d/maps.d/map.conf
+- name: copy codeen_nodes.conf
+  copy: src={{src_dnsredir}}/{{name}}.d/codeen_nodes.conf dest={{dst_dnsredir_confdir}}/{{name}}.d/codeen_nodes.conf
+  
+- name: copy node-to-ip.txt
+  copy: src={{src_dnsredir}}/{{name}}.d/node-to-ip.txt dest={{dst_dnsredir_confdir}}/{{name}}.d/node-to-ip.txt
+
+- name: copy dnsredir config file
+  copy: src={{src_dnsredir}}/{{name}}.conf dest={{dst_dnsredir_conf}}/{{name}}.conf
+  notify: restart dnsredir
+
diff --git a/planetstack/rr_observer/playbook/roles/redir/vars/main.yml b/planetstack/rr_observer/playbook/roles/redir/vars/main.yml
new file mode 100644 (file)
index 0000000..dc79d35
--- /dev/null
@@ -0,0 +1,6 @@
+---
+# Variables listed here are applicable to all host groups
+
+src_dnsredir: ../../../../temp_config/dnsredir
+dst_dnsredir_conf: /etc/dnsredir/conf.d/
+dst_dnsredir_confdir: /etc/dnsredir
diff --git a/planetstack/rr_observer/playbook/site_demux.yml b/planetstack/rr_observer/playbook/site_demux.yml
new file mode 100644 (file)
index 0000000..b5261dc
--- /dev/null
@@ -0,0 +1,9 @@
+---
+# This playbook copies the dnsdemux configuration files from temp directory.
+
+- name: copies the configuration files from temp directory
+  hosts: all
+  #remote_user: {{r_user}}
+
+  roles:
+    - demux
diff --git a/planetstack/rr_observer/playbook/site_demux_delete.yml b/planetstack/rr_observer/playbook/site_demux_delete.yml
new file mode 100644 (file)
index 0000000..49a7c87
--- /dev/null
@@ -0,0 +1,9 @@
+---
+# This playbook deletes the dnsdemux configuration files from request router instances
+
+- name: deletes the configuration files from request router instances
+  hosts: all
+  #remote_user: {{r_user}}
+
+  roles:
+    - delete_demux
diff --git a/planetstack/rr_observer/playbook/site_redir.yml b/planetstack/rr_observer/playbook/site_redir.yml
new file mode 100644 (file)
index 0000000..50a7284
--- /dev/null
@@ -0,0 +1,9 @@
+---
+# This playbook copies the dnsredir configuration files from temp directory.
+
+- name: copies the configuration files from temp directory
+  hosts: all
+  #remote_user: {{r_user}}
+
+  roles:
+    - redir
diff --git a/planetstack/rr_observer/playbook/site_redir_delete.yml b/planetstack/rr_observer/playbook/site_redir_delete.yml
new file mode 100644 (file)
index 0000000..9a8611d
--- /dev/null
@@ -0,0 +1,9 @@
+---
+# This playbook deletes the dnsredir configuration files from request router instances
+
+- name: deletes the configuration files from request router instances
+  hosts: all
+  #remote_user: {{r_user}}
+
+  roles:
+    - delete_redir
diff --git a/planetstack/rr_observer/rr_observer_config b/planetstack/rr_observer/rr_observer_config
new file mode 100644 (file)
index 0000000..1fb52d0
--- /dev/null
@@ -0,0 +1,36 @@
+
+[plc]
+name=plc
+#deployment=VICCI
+deployment=VINI
+
+[db]
+name=planetstack
+user=plstackuser
+#password=2uMDYtJK
+password=1HL07C0E
+host=localhost
+port=5432
+
+[api]
+host=128.112.171.237
+port=8000
+ssl_key=None
+ssl_cert=None
+ca_ssl_cert=None
+ratelimit_enabled=0
+omf_enabled=0
+mail_support_address=support@localhost
+nova_enabled=True
+
+[observer]
+dependency_graph=/opt/planetstack/rr_observer/model-deps
+steps_dir=/opt/planetstack/rr_observer/steps
+deleters_dir=/opt/planetstack/rr_observer/deleters
+log_file=console
+#/var/log/hpc.log
+driver=None
+
+#[feefie]
+#client_id='vicci_dev_central'
+#user_id='pl'
diff --git a/planetstack/rr_observer/rrlib.py b/planetstack/rr_observer/rrlib.py
new file mode 100644 (file)
index 0000000..10a5171
--- /dev/null
@@ -0,0 +1,203 @@
+import os
+import base64
+import string
+import sys
+import socket
+from sets import Set
+if __name__ == '__main__':
+    sys.path.append("/opt/planetstack")
+    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "planetstack.settings")
+
+from planetstack.config import Config
+from core.models import Service
+from requestrouter.models import RequestRouterService, ServiceMap
+from util.logger import Logger, logging
+import rrlib_config
+
+logger = Logger(level=logging.INFO)
+
+'''
+Conventions:
+1) All dnsredir backend will listen at port 9000+ servicemap.pk ( where pk is the primary key generated in django model)
+'''
+
+class RequestRouterLibrary:
+
+    def __init__(self):
+        pass
+    
+    def gen_slice_info(self, service=None):   
+        """generates sliver information from slice of request router
+        """
+
+        if (service is None ):
+            service = RequestRouterService.objects.get()
+
+        mapping = {}
+        #static mapping for demo purpose 
+        #mapping["node47.princeton.vicci.org"] = "128.112.171.112"
+        mapping["node48.princeton.vicci.org"] = "128.112.171.114"
+    
+        '''for slice in service.service.all():
+            name = slice.name
+            for sliver in slice.slivers.all():
+                mapping[sliver.name] = str(sliver.ip)
+        '''
+        return mapping
+
+    def gen_servicemap_slice_info(self, servicemap):
+        """generates sliver information from slice of servicemap
+        """
+
+        wzone = Set(['arizona', 'stanford', 'on.lab', 'housten']) # zone=1 in cooden.conf
+        ezone = Set(['princeton', 'atlanta', 'new york', 'georgia tech']) # zone=2 in coodeen.conf
+
+        mapping_zone = {}
+        mapping_ip = {}
+        slice = servicemap.slice
+        name = slice.name
+        for sliver in slice.slivers.all():
+            mapping_ip[sliver.node.name] = socket.gethostbyname(sliver.node.name)
+            #print "sliver name "+sliver.name+str(sliver.ip)+"\n"
+            site = sliver.node.site.name
+            if(site.lower() in wzone):
+                mapping_zone[sliver.node.name] = str(1)
+            else:
+                mapping_zone[sliver.node.name] = str(2)
+
+        return mapping_ip, mapping_zone
+
+
+
+    def gen_slice_file(self, service):
+        """ generates host file for the slice information
+            to be used by ansible to push configuration files
+        """
+
+        mapping = self.gen_slice_info(service)
+
+        fn = "/etc/ansible/requestrouter/dnsredir/hosts"
+        f = open(fn, "w")
+        for (k,v) in mapping.items():
+            f.write("%s\n" % k)
+
+        fn = "/etc/ansible/requestrouter/dnsdemux/hosts"
+        f = open(fn, "w")
+        for (k,v) in mapping.items():
+            f.write("%s\n" % k)
+
+
+    def get_servicemap_uid(self, servicemap):
+        seq = ("service_", str(servicemap.pk));
+        return "".join(seq)
+
+    def get_service_port(self, servicemap):
+                return str(9000+servicemap.pk)
+
+    def gen_dnsredir_serviceconf(self, servicemap):
+        objname = self.get_servicemap_uid(servicemap)
+    
+        rr_mapping = self.gen_slice_info(None)
+    
+        #generate dnsredir.conf file parameters to be used in static file.
+        mapping = {}
+        mapping["port_listen"] = self.get_service_port(servicemap)
+        mapping["configdir"] = rrlib_config.DNSREDIR_CONFIGDIR_PREFIX+objname+".d/"
+        mapping["logdir"] = rrlib_config.DNSREDIR_LOGDIR_PREFIX+objname+".d"
+        mapping["pidfile"] = rrlib_config.DNSREDIR_PIDFILE_PREFIX+objname+".pid"
+        mapping["domain_name"] = servicemap.prefix      
+        mapping["heartbeat_port"] = rrlib_config.HEARTBEAT_PORT
+
+        #generate dnsredir.conf file 
+
+        fn = "./temp_config/dnsredir/"+objname+".conf"
+        f = open(fn, "w")
+        for (k,v) in rr_mapping.items():
+                        f.write(mapping["domain_name"]+". NS "+k+". "+v+" 3600 \n" % mapping)
+
+
+        f.write("""
+Default_TTL 30
+
+Port %(port_listen)s
+
+ConfigDir %(configdir)s
+
+MapsDir maps.d
+
+HTTPPort %(heartbeat_port)d
+
+PidFile %(pidfile)s
+
+HttpRequestPort 8081
+
+""" % mapping)
+
+        #generate configdirectory
+        
+        os.mkdir("./temp_config/dnsredir/"+objname+".d")
+        
+        #geenrate codeen_nodes.conf
+        mapping_ip, mapping_zone = self.gen_servicemap_slice_info(servicemap)
+
+        codeen_name = "./temp_config/dnsredir/"+objname+".d/codeen_nodes.conf"
+        f = open(codeen_name, "w")
+        for (k,v) in mapping_zone.items():
+            f.write(k+" zone="+v+" \n")
+
+        iptxt = "./temp_config/dnsredir/"+objname+".d/node-to-ip.txt"
+        f = open(iptxt, "w")
+        for (k,v) in mapping_ip.items():
+            f.write(k+" "+v+" \n")
+
+        #generate maps directory
+        os.mkdir("./temp_config/dnsredir/"+objname+".d/maps.d")
+
+        # redirection map
+        map = "./temp_config/dnsredir/"+objname+".d/maps.d/map.conf"
+        f = open(map, "w")
+               #hardcoded probable public IP masks from arizona and princeton region respectively
+        f.write("prefix "+servicemap.prefix+" \n")
+        f.write("map 150.135.211.252/32 zone 1 || zone 2 \n")
+        f.write("map 128.112.171.112/24 zone 2 || zone 1 \n")
+        f.write("map 0.0.0.0/0 zone 1 || zone 2 \n")
+
+
+    def gen_dnsdemux_serviceconf(self, servicemap):
+        '''
+        generates frontend service*.conf file for each of the service
+        It assumes that there is a dnsdemux frontend running on the RR istallation and will
+        just add a conf file for each service in /etc/dnsdemux/default
+        '''
+        objname = self.get_servicemap_uid(servicemap)
+        #generate dnsdemux.conf file parameters to be used in static file.
+       
+        port_listen = self.get_service_port(servicemap)
+        domain_name = servicemap.prefix  
+        #generate service specific .conf file
+
+        rr_mapping = self.gen_slice_info(None)
+
+        fn = "./temp_config/dnsdemux/"+objname+".conf"
+        f = open(fn, "w")
+
+        for (k,v) in rr_mapping.items():
+            f.write("Forward "+v+" "+port_listen+" 8081 "+domain_name+".\n")
+
+    
+    def teardown_temp_configfiles(self, objname):
+        if os.path.exists("./temp_config/dnsdemux/"+objname+".conf"):
+            os.remove("./temp_config/dnsdemux/"+objname+".conf")
+        if os.path.exists("./temp_config/dnsredir/"+objname+".d/maps.d/map.conf"):
+            os.remove("./temp_config/dnsredir/"+objname+".d/maps.d/map.conf")
+        if os.path.exists("./temp_config/dnsredir/"+objname+".d/maps.d"):
+            os.rmdir("./temp_config/dnsredir/"+objname+".d/maps.d")
+        if os.path.exists("./temp_config/dnsredir/"+objname+".d/node-to-ip.txt"):
+            os.remove("./temp_config/dnsredir/"+objname+".d/node-to-ip.txt")
+        if os.path.exists("./temp_config/dnsredir/"+objname+".d/codeen_nodes.conf"):
+            os.remove("./temp_config/dnsredir/"+objname+".d/codeen_nodes.conf")
+        if os.path.exists("./temp_config/dnsredir/"+objname+".d"):
+            os.rmdir("./temp_config/dnsredir/"+objname+".d")
+        if os.path.exists("./temp_config/dnsredir/"+objname+".conf"):
+            os.remove("./temp_config/dnsredir/"+objname+".conf")
+
diff --git a/planetstack/rr_observer/rrlib_config.py b/planetstack/rr_observer/rrlib_config.py
new file mode 100644 (file)
index 0000000..6d785e7
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/python
+
+DNSREDIR_CONFIGDIR_PREFIX = "/etc/dnsredir/"
+DNSREDIR_LOGDIR_PREFIX = "/var/log/dnsredir/"
+DNSREDIR_PIDFILE_PREFIX = "/var/run/dnsredir."
+REDIR_USER = "princeton_coredirect"
+#REDIR_USER = "arizona_tools1"
+#DEMUX_USER = "arizona_tools1"
+DEMUX_USER = "princeton_codnsdemux"
+HEARTBEAT_PORT = 9000
+#not required as of now, as there will be only one frontend dnsdemux for all the services
+#DNSDEMUX_CONFIGDIR_PREFIX = "/etc/dnsdemux/"
+#DNSDEMUX_LOGDIR_PREFIX = "/var/log/dnsdemux/"
+#DNSDEMUX_PIDFILE_PREFIX = "/var/run/dnsdemux."
+
+TBD = "TBD"
diff --git a/planetstack/rr_observer/steps/sync_requestrouterservices.py b/planetstack/rr_observer/steps/sync_requestrouterservices.py
new file mode 100644 (file)
index 0000000..546b45d
--- /dev/null
@@ -0,0 +1,46 @@
+import os
+import sys
+import base64
+import traceback
+from django.db.models import F, Q
+from planetstack.config import Config
+from observer.syncstep import SyncStep
+from core.models import Service
+from requestrouter.models import RequestRouterService
+from util.logger import Logger, logging
+
+parentdir = os.path.join(os.path.dirname(__file__),"..")
+sys.path.insert(0,parentdir)
+
+from rrlib import RequestRouterLibrary
+
+logger = Logger(level=logging.INFO)
+
+class SyncRequestRouterService(SyncStep, RequestRouterLibrary):
+    provides=[RequestRouterService]
+    requested_interval=0
+
+    def __init__(self, **args):
+        SyncStep.__init__(self, **args)
+        RequestRouterLibrary.__init__(self)
+
+    def fetch_pending(self):
+       try:
+               ret = RequestRouterService.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
+               return ret
+       except Exception, e:
+               traceback.print_exc()
+               return None     
+
+    def sync_record(self, rr_service):
+       try:
+               print "syncing service!"
+               logger.info("sync'ing rr_service %s" % str(rr_service))
+               self.gen_slice_file(rr_service)
+               rr_service.save()
+               return True
+       except Exception, e:
+                traceback.print_exc()
+                return False
+
+
diff --git a/planetstack/rr_observer/steps/sync_servicemap.py b/planetstack/rr_observer/steps/sync_servicemap.py
new file mode 100644 (file)
index 0000000..76d2fdd
--- /dev/null
@@ -0,0 +1,60 @@
+#!/usr/bin/python
+
+import os
+import sys
+import base64
+import traceback
+from django.db.models import F, Q
+from planetstack.config import Config
+from observer.syncstep import SyncStep
+from core.models import Service
+from requestrouter.models import ServiceMap
+from util.logger import Logger, logging
+
+parentdir = os.path.join(os.path.dirname(__file__),"..")
+sys.path.insert(0,parentdir)
+
+from rrlib import RequestRouterLibrary
+from configurationPush import ConfigurationPush
+import rrlib_config
+
+logger = Logger(level=logging.INFO)
+
+class SyncServiceMap(SyncStep, RequestRouterLibrary, ConfigurationPush):
+    provides=[ServiceMap]
+    requested_interval=0
+
+    def __init__(self, **args):
+        SyncStep.__init__(self, **args)
+       RequestRouterLibrary.__init__(self)
+       ConfigurationPush.__init__(self)
+
+    def fetch_pending(self):
+       try:
+               ret = ServiceMap.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
+               return ret
+       except Exception, e:
+               traceback.print_exc()
+               return None
+
+    def sync_record(self, servicemap):
+       try:
+               print "sync! %s " % self.get_servicemap_uid(servicemap)
+               self.gen_dnsredir_serviceconf(servicemap)
+               self.gen_dnsdemux_serviceconf(servicemap)
+               # push generated files from temp_config
+               service_uid = self.get_servicemap_uid(servicemap)
+               self.config_push(service_uid, rrlib_config.REDIR_USER, "/opt/planetstack/rr_observer/playbook/site_redir.yml", "/etc/ansible/requestrouter/dnsredir/hosts")
+               self.config_push(service_uid, rrlib_config.DEMUX_USER, "/opt/planetstack/rr_observer/playbook/site_demux.yml", "/etc/ansible/requestrouter/dnsdemux/hosts")
+               self.teardown_temp_configfiles(service_uid)
+       except Exception, e:
+                traceback.print_exc()
+                return False
+
+if __name__ == "__main__":
+    sv = SyncServiceMap()
+
+    recs = sv.fetch_pending()
+
+    for rec in recs:
+        sv.sync_record( rec )
index 3005865..d8e367a 100755 (executable)
@@ -1,28 +1,41 @@
 #!/bin/sh
 
 if [ -z "$1" ]; then
-    echo usage: $0 "[initdb | resetdb ]"
+    echo usage: $0 "[initdb | createdb | dropdb | syncdb | runserver | resetdb | dumpdata]"
     exit
 fi
 
+BACKUP_DIR=/opt/planetstack_backups
+
 cd /opt/planetstack
 
-function initdb {
-    #Figure out if the script is running on Fedora 16 or 17
-    if grep 16 /etc/fedora-release;  then
+function ensure_postgres_running {
+    # "sudo -u postgres pg_ctl -D /var/lib/postgres/data status" doesn't work
+    # right on Vicci, so let's try to detect it by seeing if the port is
+    # being listened on
+
+    netstat -nl | grep -i ":5432 "
+    if [[ $? == 0 ]]; then
+        echo "Postgres is already running"
+        return
+    fi
+
+    /sbin/service postgresql initdb
+    /sbin/service postgresql start
+    /sbin/chkconfig postgresql on
+
+    netstat -nl | grep -i ":5432 "
+    if [[ $? != 0 ]]; then
+        # it's still not running
+        echo "Trying fallback mechanism to start Postgres"
         sudo -u postgres initdb -D /var/lib/pgsql/data/
         sudo -u postgres pg_ctl -D /var/lib/pgsql/data -l logfile start
-    else
-        #Try normal Fedora 17 commands
-        echo "Trying Fedora 17 commands" > /dev/stdout
-        /sbin/service postgresql initdb
-        /sbin/service postgresql start
-        /sbin/chkconfig postgresql on
     fi
+
 }
 function createdb {
     echo "Creating OpenCloud database..."
-    sudo -u postgres createdb planetstack 
+    sudo -u postgres createdb planetstack
 }
 function dropdb {
     echo "Dropping OpenCloud database..."
@@ -32,31 +45,94 @@ function syncdb {
     echo "Syncing OpenCloud services..."
     python /opt/planetstack/manage.py syncdb --noinput
 }
+function evolvedb {
+    echo "Syncing OpenCloud services..."
+    python /opt/planetstack/manage.py evolve --hint --execute --noinput
+}
+function stopserver {
+    echo "Stopping any running OpenCloud Service(s)"
+    pkill -f "python.*runserver"
+}
 function runserver {
-#    python manage.py runserver 128.95.1.128:8000
-    echo "Starting OpenCloud Service on $HOSTNAME:8000"
-    python manage.py runserver  $HOSTNAME:8000&
+    PUBLIC_HOSTNAME=`/opt/planetstack/planetstack-config.py get server_hostname $HOSTNAME`
+    echo "Starting OpenCloud Service on $PUBLIC_HOSTNAME:8000"
+    python manage.py runserver  $PUBLIC_HOSTNAME:8000&
+}
+
+function dumpdata {
+    mkdir -p $BACKUP_DIR
+    FN="$BACKUP_DIR/dumpdata-`date +%Y-%m-%d_%H:%M:%S`.json"
+    echo "Saving data to $FN"
+    python manage.py dumpdata core hpc syndicate requestrouter --indent 4 > $FN
+    if [[ ! -f $FN ]]; then
+        echo "FAILED to create $FN"
+        exit
+    fi
+    SIZE=$(du -k "$FN" | cut -f 1)
+    if [[ $SIZE -lt 9 ]]; then
+        echo "Dumpdata was empty. Deleting and aborting"
+        rm $FN
+        exit
+    fi
+    rm -f $BACKUP_DIR/dumpdata-latest.json
+    ln -s $FN $BACKUP_DIR/dumpdata-latest.json
 }
 
 COMMAND=$1
 
 if [ "$COMMAND" = "initdb" ]; then
-    initdb
+    stopserver
+    ensure_postgres_running
     createdb
     syncdb
-    runserver
+fi
+if [ "$COMMAND" = "repairdb" ]; then
+    stopserver
+    ensure_postgres_running
+    dumpdata
+    # TODO: This is where we could run migration scripts to upgrade the
+    #   dumped data to the new models.
+    mv /opt/planetstack/core/fixtures/initial_data.json /opt/planetstack/core/fixtures/initial_data.json-old
+    cp $BACKUP_DIR/dumpdata-latest.json /opt/planetstack/core/fixtures/initial_data.json
+    dropdb
+    createdb
+    syncdb
+fi
+if [ "$COMMAND" = "restoredb" ]; then
+    if [[ ! -f $BACKUP_DIR/dumpdata-latest.json ]]; then
+       echo There is no dumpdata to restore
+       exit
+    fi
+    stopserver
+    ensure_postgres_running
+    mv /opt/planetstack/core/fixtures/initial_data.json /opt/planetstack/core/fixtures/initial_data.json-old
+    cp $BACKUP_DIR/dumpdata-latest.json /opt/planetstack/core/fixtures/initial_data.json
+    dropdb
+    createdb
+    syncdb
+fi
+if [ "$COMMAND" = "evolvedb" ]; then
+    stopserver
+    ensure_postgres_running
+    evolvedb
 fi
 if [ "$COMMAND" = "resetdb" ]; then
+    stopserver
     dropdb
     createdb
     syncdb
-    runserver
 fi
 if [ "$COMMAND" = "syncdb" ]; then
+    stopserver
     syncdb
-    runserver
 fi
 if [ "$COMMAND" = "runserver" ]; then
+    stopserver
     runserver
 fi
-
+if [ "$COMMAND" = "stopserver" ]; then
+    stopserver
+fi
+if [ "$COMMAND" = "dumpdata" ]; then
+    dumpdata
+fi
index 85c3ebd..e9f499c 100644 (file)
@@ -14,6 +14,7 @@ from core.admin import ReadOnlyTabularInline,ReadOnlyAwareAdmin,SingletonAdmin,S
 from suit.widgets import LinkedSelect
 from bitfield import BitField
 from bitfield.forms import BitFieldCheckboxSelectMultiple
+from django.core.exceptions import ValidationError, ObjectDoesNotExist
 
 class SyndicateServiceAdmin(SingletonAdmin,ReadOnlyAwareAdmin):
     model = SyndicateService
@@ -31,6 +32,7 @@ class SyndicateServiceAdmin(SingletonAdmin,ReadOnlyAwareAdmin):
         ('serviceattrs','Additional Attributes'),
     )
 
+
 class VolumeAccessRightForUserROInline(ReadOnlyTabularInline):
     model = VolumeAccessRight
     extra = 0
@@ -47,40 +49,10 @@ class VolumeAccessRightInline(PlStackTabularInline):
     model = VolumeAccessRight
     extra = 0
     suit_classes = 'suit-tab suit-tab-volumeAccessRights'
-
-class VolumeAccessRightAdmin(ReadOnlyAwareAdmin):
-    model = VolumeAccessRight
-
-    formfield_overrides = { BitField: {'widget': BitFieldCheckboxSelectMultiple},}
-    list_display = ['owner_id', 'volume']
-    user_readonly_fields = ['owner_id','volume','gateway_caps']
-    user_readonly_inlines = []
-
-class VolumeAccessRequestForUserROInline(ReadOnlyTabularInline):
-    model = VolumeAccessRequest
-    extra = 0
-    suit_classes = 'suit-tab suit-tab-volumeAccessRequests'
-    fields = ['volume', 'message']
-
-class VolumeAccessRequestROInline(ReadOnlyTabularInline):
-    model = VolumeAccessRequest
-    extra = 0
-    suit_classes = 'suit-tab suit-tab-volumeAccessRequests'
-    fields = ['owner_id', 'message']
-
-class VolumeAccessRequestInline(PlStackTabularInline):
-    model = VolumeAccessRequest
-    extra = 0
-    suit_classes = 'suit-tab suit-tab-volumeAccessRequests'
-    fields = ['owner_id', 'message']
-
-class VolumeAccessRequestAdmin(ReadOnlyAwareAdmin):
-    model = VolumeAccessRequest
-
-    formfield_overrides = { BitField: {'widget': BitFieldCheckboxSelectMultiple},}
-    list_display = ['owner_id', 'volume', 'message']
-    user_readonly_fields = ['volume','owner_id','message','message', 'gateway_caps']
-    user_readonly_inlines = []
+    formfield_overrides = {
+        BitField: {'widget': BitFieldCheckboxSelectMultiple}
+    }
+    fields = ('owner_id', 'gateway_caps')
 
 class VolumeInline(PlStackTabularInline):
     model = Volume
@@ -94,56 +66,123 @@ class VolumeROInline(ReadOnlyTabularInline):
     suit_classes = 'suit-tab suit-tab-volumes'
     fields = ['name', 'owner_id']
 
+
+class VolumeSliceFormSet( forms.models.BaseInlineFormSet ):
+    # verify that our VolumeSlice is valid
+
+    @classmethod
+    def verify_unchanged( cls, volume_pk, slice_pk, field_name, new_value ):
+        vs = None
+        try:
+           vs = VolumeSlice.objects.get( volume_id=volume_pk, slice_id=slice_pk )
+        except ObjectDoesNotExist, dne:
+           return True, None
+
+        old_value = getattr( vs, field_name )
+        if old_value != new_value:
+            return False, old_value
+        else:
+            return True, None
+
+
+    def clean( self ):
+        for form in self.forms:
+            # check each inline's cleaned data, if it's valid
+            cleaned_data = None
+            try:
+                if form.cleaned_data:
+                    cleaned_data = form.cleaned_data
+            except AttributeError:
+                continue
+
+            # verify that the ports haven't changed 
+            volume_pk = cleaned_data['volume_id'].pk
+            slice_pk = cleaned_data['slice_id'].pk
+           
+            if not cleaned_data.has_key('peer_portnum'):
+                raise ValidationError("Missing client peer-to-peer cache port number")
+
+            if not cleaned_data.has_key('replicate_portnum'):
+                raise ValidationError("Missing replication service port number")
+
+            rc1, old_peer_port = VolumeSliceFormSet.verify_unchanged( volume_pk, slice_pk, 'peer_portnum', cleaned_data['peer_portnum'] )
+            rc2, old_replicate_port = VolumeSliceFormSet.verify_unchanged( volume_pk, slice_pk, 'replicate_portnum', cleaned_data['replicate_portnum'] )
+
+            err1str = ""
+            err2str = ""
+            if not rc1:
+                err1str = "change %s back to %s" % (cleaned_data['peer_portnum'], old_peer_port)
+            if not rc2:
+                err2str = " and change %s back to %s" % (cleaned_data['replicate_portnum'], old_replicate_port )
+
+            if not rc1 or not rc2:
+                raise ValidationError("Port numbers cannot be changed once they are set. Please %s %s" % (err1str, err2str))
+            
+            
+
+class VolumeSliceInline(PlStackTabularInline):
+    model = VolumeSlice
+    extra = 0
+    suit_classes = 'suit-tab suit-tab-volumeSlices'
+    fields = ['volume_id', 'slice_id', 'gateway_caps', 'peer_portnum', 'replicate_portnum']
+    formfield_overrides = { BitField: {'widget': BitFieldCheckboxSelectMultiple},}
+
+    formset = VolumeSliceFormSet
+    
+    readonly_fields = ['credentials_blob']
+
+class VolumeSliceROInline(ReadOnlyTabularInline):
+    model = VolumeSlice
+    extra = 0
+    suit_classes = 'suit-tab suit-tab-volumeSlices'
+    fields = ['volume_id', 'slice_id', 'gateway_caps', 'peer_portnum', 'replicate_portnum']
+    formfield_overrides = { BitField: {'widget': BitFieldCheckboxSelectMultiple},}
+
+    formset = VolumeSliceFormSet
+
+    readonly_fields = ['credentials_blob']
+
+
 class VolumeAdmin(ReadOnlyAwareAdmin):
     model = Volume
-    read_only_fields = ['blockSize']
+   
+    def get_readonly_fields(self, request, obj=None ):
+       always_readonly = list(super(VolumeAdmin, self).get_readonly_fields(request, obj))
+       if obj == None:
+          # all fields are editable on add
+          return always_readonly
+
+       else:
+          # can't change owner, slice id, or block size on update
+          return ['blocksize', 'owner_id'] + always_readonly
+
+
     list_display = ['name', 'owner_id']
 
     formfield_overrides = { BitField: {'widget': BitFieldCheckboxSelectMultiple},}
 
-    detailsFieldList = ['name', 'owner_id', 'description','file_quota','blocksize', 'private','archive', 'default_gateway_caps' ]
-    keyList = ['metadata_public_key','metadata_private_key','api_public_key']
-
+    #detailsFieldList = ['name', 'owner_id', 'description','file_quota','blocksize', 'private','archive', 'default_gateway_caps' ]
+    detailsFieldList = ['name', 'owner_id', 'description','blocksize', 'private','archive', 'default_gateway_caps' ]
+    
     fieldsets = [
         (None, {'fields': detailsFieldList, 'classes':['suit-tab suit-tab-general']}),
-        (None, {'fields': keyList, 'classes':['suit-tab suit-tab-volumeKeys']}),
+        #(None, {'fields': keyList, 'classes':['suit-tab suit-tab-volumeKeys']}),
     ]
 
-    inlines = [VolumeAccessRightInline, VolumeAccessRequestInline]
-
-    user_readonly_fields = ['name','owner_id','description','blocksize','private','metadata_public_key','metadata_private_key','api_public_key','file_quota','default_gateway_caps']
-    user_readonly_inlines = [VolumeAccessRightROInline, VolumeAccessRequestROInline]
+    inlines = [VolumeAccessRightInline, VolumeSliceInline]
 
-    suit_form_tabs =(('general', 'Volume Details'),
-                     ('volumeKeys', 'Access Keys'),
-                     ('volumeAccessRequests', 'Volume Access Requests'),
-                     ('volumeAccessRights', 'Volume Access Rights'),
-    )
+    user_readonly_fields = ['name','owner_id','description','blocksize','private','default_gateway_caps']
     
-    
-
-class SyndicateUserAdmin(ReadOnlyAwareAdmin):
-    model = SyndicateUser
-    verbose_name = "Users"
-    verbose_name = "Users"
-    list_display = ['user','is_admin', 'max_volumes']
-    inlines = [VolumeInline,VolumeAccessRequestInline,VolumeAccessRightInline]
-    user_readonly_fields = ['user','is_admin','max_volumes','max_UGs','max_RGs','max_AGs']
-    user_readonly_inlines = [VolumeROInline,VolumeAccessRequestForUserROInline,VolumeAccessRightForUserROInline]
-
-    fieldsets = [
-        (None, {'fields': ['user','is_admin','max_volumes','max_UGs','max_RGs','max_AGs'], 'classes':['suit-tab suit-tab-general']}),
-    ]
+    user_readonly_inlines = [VolumeAccessRightROInline, VolumeSliceROInline]
 
     suit_form_tabs =(('general', 'Volume Details'),
-                     ('volumes', 'Volumes'),
-                     ('volumeAccessRequests', 'Volume Access Requests'),
+                     #('volumeKeys', 'Access Keys'),
+                     ('volumeSlices', 'Slices'),
                      ('volumeAccessRights', 'Volume Access Rights'),
     )
+    
 
+# left panel:
 admin.site.register(SyndicateService, SyndicateServiceAdmin)
-admin.site.register(VolumeAccessRight, VolumeAccessRightAdmin)
-admin.site.register(VolumeAccessRequest, VolumeAccessRequestAdmin)
 admin.site.register(Volume, VolumeAdmin)
-admin.site.register(SyndicateUser, SyndicateUserAdmin)
-
index efc08c6..656e881 100644 (file)
@@ -1,8 +1,9 @@
-from core.models import User,Site,Service,SingletonModel,PlCoreBase
+from core.models import User,Site,Service,SingletonModel,PlCoreBase,Slice
 import os
 from django.db import models
 from django.forms.models import model_to_dict
 from bitfield import BitField
+from django.core.exceptions import ValidationError
 
 # Create your models here.
 
@@ -14,51 +15,79 @@ class SyndicateService(SingletonModel,Service):
 
     def __unicode__(self):  return u'Syndicate Service'
 
-class SyndicateUser(models.Model):
 
-    user = models.ForeignKey(User)
-    is_admin = models.BooleanField(default=False, help_text="Indicates this user has Administrative purposes for the Syndicate Service")
-    max_volumes = models.PositiveIntegerField(help_text="Maximum number of Volumes this user may create.", default=1)
-    max_UGs = models.PositiveIntegerField(help_text="Maximum number of User Gateways this user may create.", default=500)
-    max_RGs = models.PositiveIntegerField(help_text="Maximum number of Replica Gateways this user may create.", default=500)
-    max_AGs = models.PositiveIntegerField(help_text="Maximum number of Aquisition Gateways this user may create.", default=10)
-    
-    def __unicode__(self):  return self.user.email
-    
-class Volume(models.Model):
+class SyndicatePrincipal(PlCoreBase):
+    class Meta:
+        app_label = "syndicate"
+
+    # for now, this is a user email address 
+    principal_id = models.TextField()
+    public_key_pem = models.TextField()
+    sealed_private_key = models.TextField()
+
+    def __unicode__self(self):  return "%s" % self.principal_id
+
+
+class Volume(PlCoreBase):
+    class Meta:
+        app_label = "syndicate"
+
     name = models.CharField(max_length=64, help_text="Human-readable, searchable name of the Volume")
-    owner_id = models.ForeignKey(SyndicateUser, verbose_name='Owner')
+    
+    owner_id = models.ForeignKey(User, verbose_name='Owner')
+
     description = models.TextField(null=True, blank=True,max_length=130, help_text="Human-readable description of what this Volume is used for.")
     blocksize = models.PositiveIntegerField(help_text="Number of bytes per block.")
     private = models.BooleanField(default=True, help_text="Indicates if the Volume is visible to users other than the Volume Owner and Syndicate Administrators.")
-    archive = models.BooleanField(default=True, help_text="Indicates if this Volume is read-only, and only an Aquisition Gateway owned by the Volume owner (or Syndicate admin) can write to it.")
-    metadata_public_key = models.TextField(null=True, blank=True, max_length=1024, help_text="Public key Gateways will use to verify the authenticity of metadata from this Volume")
-    metadata_private_key = models.TextField(null=True, blank=True, max_length=1024, help_text="Private key the Volume should use to sign metadata served to Gateways")
-    api_public_key = models.TextField(null=True, blank=True, max_length=1024, help_text="Public key used to verify writes to these fields from Volume owner")
-
-    file_quota = models.IntegerField(help_text='Maximum number of files and directories allowed in this Volume (-1 means "unlimited")')
+    archive = models.BooleanField(default=False, help_text="Indicates if this Volume is read-only, and only an Aquisition Gateway owned by the Volume owner (or Syndicate admin) can write to it.")
 
-    default_gateway_caps = BitField(flags=('GATEWAY_CAP_READ_DATA','GATEWAY_CAP_READ_METADATA', 'GATEWAY_CAP_WRITE_DATA', 'GATEWAY_CAP_WRITE_METADATA', 'GATEWAY_CAP_COORDINATE'), verbose_name='Default Gateway Capabilities')
-    #default_gateway_caps = models.PositiveIntegerField(verbose_name='Default Gateway Capabilities')
-    #default_gateway_caps2 = models.CharField(max_length=32,null=True,default = "readonly", verbose_name='Default Gateway Capabilities')
+    CAP_READ_DATA = 1
+    CAP_WRITE_DATA = 2
+    CAP_HOST_DATA = 4
+    
+    # NOTE: preserve order of capabilities here...
+    default_gateway_caps = BitField(flags=("read data", "write data", "host files"), verbose_name='Default User Capabilities')
 
     def __unicode__(self):  return self.name
 
-class VolumeAccessRight(models.Model):
-    owner_id = models.ForeignKey(SyndicateUser, verbose_name='user')
-    volume = models.ForeignKey(Volume)
-    gateway_caps = BitField(flags=('GATEWAY_CAP_READ_DATA','GATEWAY_CAP_READ_METADATA', 'GATEWAY_CAP_WRITE_DATA', 'GATEWAY_CAP_WRITE_METADATA', 'GATEWAY_CAP_COORDINATE'), verbose_name='Gateway Capabilities')
-    #gateway_caps = models.PositiveIntegerField(verbose_name='Gateway Capabilities')
-    #gateway_caps2 = models.CharField(max_length=32, default='readonly',null=True,verbose_name='Default Gateway Capabilities')
 
-    def __unicode__(self):  return self.owner_id.user.email
+class VolumeAccessRight(PlCoreBase):
+    class Meta:
+        app_label = "syndicate"
 
-class VolumeAccessRequest(models.Model):
-    owner_id = models.ForeignKey(SyndicateUser, verbose_name='user')
+    owner_id = models.ForeignKey(User, verbose_name='user')
+    
     volume = models.ForeignKey(Volume)
-    message = models.TextField(null=True, blank=True, max_length=1024, help_text="Description of why the user wants access to the volume.")
-    gateway_caps = BitField(flags=('GATEWAY_CAP_READ_DATA','GATEWAY_CAP_READ_METADATA', 'GATEWAY_CAP_WRITE_DATA', 'GATEWAY_CAP_WRITE_METADATA', 'GATEWAY_CAP_COORDINATE'), verbose_name='Gateway Capabilities')
-    #gateway_caps = models.PositiveIntegerField(verbose_name='Gateway Capabilities')
-    #gateway_caps2 = models.CharField(max_length=32,default='readonly',null=True,verbose_name='Default Gateway Capabilities')
+    gateway_caps = BitField(flags=("read data", "write data", "host files"), verbose_name="User Capabilities")
+
+    def __unicode__(self):  return "%s-%s" % (self.owner_id.email, self.volume.name)
+
+
+class VolumeSlice(PlCoreBase):
+    class Meta:
+        app_label = "syndicate"
+
+    volume_id = models.ForeignKey(Volume, verbose_name="Volume")
+    slice_id = models.ForeignKey(Slice, verbose_name="Slice")
+    gateway_caps = BitField(flags=("read data", "write data", "host files"), verbose_name="Slice Capabilities")
+    
+    peer_portnum = models.PositiveIntegerField(help_text="User Gateway port", verbose_name="Client peer-to-peer cache port")
+    replicate_portnum = models.PositiveIntegerField(help_text="Replica Gateway port", verbose_name="Replication service port")
+
+    credentials_blob = models.TextField(null=True, blank=True, help_text="Encrypted slice credentials")
+    def __unicode__(self):  return "%s-%s" % (self.volume_id.name, self.slice_id.name)
+
+    def clean(self):
+        """
+        Verify that our fields are in order:
+            * peer_portnum and replicate_portnum have to be valid port numbers between 1025 and 65534
+            * peer_portnum and replicate_portnum cannot be changed once set.
+        """
+
+        if self.peer_portnum < 1025 or self.peer_portnum > 65534:
+            raise ValidationError( "Client peer-to-peer cache port number must be between 1025 and 65534" )
+
+        if self.replicate_portnum < 1025 or self.replicate_portnum > 65534:
+            raise ValidationError( "Replication service port number must be between 1025 and 65534" )
 
-    def __unicode__(self):  return self.owner_id.user.email
index dd8ab75..dc92ca9 100644 (file)
@@ -11,6 +11,7 @@
   <script type="text/javascript">window.__admin_media_prefix__ = "{% filter escapejs %}{% static "admin/" %}{% endfilter %}";</script>
   <script src="{% static 'suit/js/jquery-1.9.1.min.js' %}"></script>
   <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
+  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
 <script type="text/javascript" src="{% static 'log4javascript-1.4.6/log4javascript.js' %}"></script>
 
 
 
   <script src="{% static 'suit/bootstrap/js/bootstrap.min.js' %}"></script>
   <script src="{% static 'suit/js/suit.js' %}"></script>
-  <script src="{% static 'page_analytics.js' %}"></script>
   <script type="text/javascript" src="//www.google.com/jsapi"></script>
   <script src="{% static 'planetstack_graphs.js' %}"></script>
   <!-- src="{% static 'planetstack_graphs_old.js' %}" -->
index cea2f7e..d93667d 100644 (file)
@@ -72,8 +72,15 @@ function updateCDNNodeData(data) {
 }
 
 function updateCDNNodes() {
-    var url= '/analytics/bigquery/?event=hpc_heartbeat&sum=@bytes_sent,@bytes_hit,@healthy,@elapsed&computed=@bytes_sent/@elapsed&groupBy=@hostname&cached=1&cachedGroupBy=@hostname';
-    console.log(url);
+    var contentProvider = $("#cdn-node-data-slicename").val();
+
+    var filterPart = ""
+    if ((contentProvider!="") && (contentProvider!="all")) {
+         filterPart = "&cp=" + contentProvider
+    }
+
+    var url= '/analytics/bigquery/?event=hpc_heartbeat&sum=@bytes_sent,@bytes_hit,@healthy,@elapsed&computed=@bytes_sent/@elapsed&groupBy=@hostname&cached=hpc&cachedGroupBy=@hostname' + filterPart;
+
     $.ajax({
     url: url,
     dataType : 'json',
@@ -86,5 +93,14 @@ function updateCDNNodes() {
     setTimeout(updateCDNNodes, 30000);
 }
 
-setTimeout(updateCDNNodes, 5000);
+google.setOnLoadCallback(function () {
+    $('#cdn-node-data-slicename').change(function()
+    {
+        updateCDNNodes();
+    });
+
+    updateCDNNodes();
+});
+
+//setTimeout(updateCDNNodes, 5000);
 </script>
diff --git a/planetstack/templates/admin/dashboard/cdnoperations.html b/planetstack/templates/admin/dashboard/cdnoperations.html
new file mode 100644 (file)
index 0000000..167b558
--- /dev/null
@@ -0,0 +1,263 @@
+    <div id="HPCDashboard">
+    <h1>CDN Operations View</h1>
+    <span id="hpcSummary">
+        <span class="summary-attr"><b>Allocated Slivers:</b> <span id="active-slivers-value"> </span> </span>
+        <span class="summary-attr"><b>CDN Bandwidth:</b> <span id="overall-throughput-value"> </span>  </span>
+        <span class="summary-attr-util"><b>CDN Load:</b> <span id="cpu-utilization-value"> </span>  </span>
+    </span>
+    <div id="map-us" ></div>
+    <div style="line-height: 30%"><br></div><table border=0><tr>
+    <td>Least Loaded&nbsp;&nbsp;</td>
+    <td bgcolor="#0000FF" width=40>&nbsp;</td>
+    <td bgcolor="#00FFFF" width=40>&nbsp;</td>
+    <td bgcolor="#00FF00" width=40>&nbsp;</td>
+    <td bgcolor="#FFFF00" width=40>&nbsp;</td>
+    <td bgcolor="#FF0000" width=40>&nbsp;</td>
+    <td>&nbsp;&nbsp;Most Loaded</td>
+    </tr></table>
+    </div>
+
+    <div id="confirmNodeAdded" title="Added Node to Site"><p>Added Node to Site</p></div>
+    <div id="confirmNodeRemoved" title="Removed Node from Site"><p>Added Node to Site</p></div>
+
+<script>
+$( "#confirmNodeAdded" ).dialog({ autoOpen: false,
+                    modal: true,
+                    buttons: {
+                        Ok: function() {
+                           $( this ).dialog( "close" );
+                        }
+                    }});
+$( "#confirmNodeRemoved" ).dialog({ autoOpen: false });
+
+L.Map = L.Map.extend({
+    openPopup: function(popup) {
+        this._popup = popup;
+
+        return this.addLayer(popup).fire('popupopen', {
+            popup: this._popup
+        });
+    }
+});
+
+
+//Iterate through data and find the max/min coordinates to include all of our points to start
+var map = L.map('map-us'); //.setView([0, 0], 1);
+map.scrollWheelZoom.disable();
+
+//
+// Great tiles, but starting to occasionally see 403 errors on certain tiles causing grey out effect
+//L.tileLayer('http://{s}.tile.cloudmade.com/BC9A493B41014CAABB98F0471D759707/997/256/{z}/{x}/{y}.png', {
+//
+// Swapping out cloudmade tiles to openstreetmap - too many grey tiles showing
+L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
+    maxZoom: 18,
+    attribution: 'Test'
+}).addTo(map);
+
+var arrayOfLatLngs = [];
+var mapData = {{ cdnData|safe }};
+log.debug( mapData );
+
+for ( var key in mapData ) {
+    arrayOfLatLngs.push([mapData[key]['lat'],mapData[key]['long']]);
+    log.debug( arrayOfLatLngs );
+
+    mapData[key]['marker'] = L.marker([mapData[key]['lat'], mapData[key]['long']], {icon: getIcon(mapData[key]['numNodes'], mapData[key]['numHPCSlivers'], 0, mapData[key]['hot']) });
+    mapData[key]['marker'].addTo(map).bindPopup(setPopupVals(key, mapData[key]));
+
+}
+var bounds = new L.LatLngBounds(arrayOfLatLngs);
+map.fitBounds(bounds);
+
+var popup = L.popup();
+
+
+function setPopupVals (site, siteData) {
+    var retVal = '<span class="SiteDetail"><b>' + site + '</b></span>' +
+                   '</br><a href="' + siteData['siteUrl'] + '">' + siteData['siteUrl'] + '</a>' +
+                   '</br><b>HPC Slivers: </b>' + siteData['numHPCSlivers'] +
+                   '</br><b>Total Nodes: </b>' + siteData['numNodes'] +
+//                   '</br><b>Hot: </b>' + Math.round(siteData['hot']*100) +
+                   '</br><b>Measured Load: </b>' + siteData['load'] + '%' +
+                   '<span id="addSlivers"></br><a href="#" id="addHPCSliver" data-site="' + site + '" data-availNodes="' + siteData['numNodes'] +'">Add HPC Slivers</a> </span>' +
+                   '<span id="remSlivers"><a href="#" id="remHPCSliver" data-site="' + site + '">Remove HPC Slivers</a> </span>';
+
+   return retVal;
+}
+
+$('#map-us').on('click', '#remHPCSliver', function() {
+
+    $.ajax({
+        url : '/dashboardaddorremsliver/',
+        dataType : 'json',
+        data: {site: $(this).data('site'),
+               actionToDo: "rem",
+               csrfmiddlewaretoken: "{{ csrf_token }}",   // < here
+               state:"inactive" },
+        type : 'POST',
+        success:function(){
+            confirmDialog("Info","Removed an HPC Sliver from Site ");
+        },
+        error:function (xhr, textStatus, thrownError){
+            errorDialog("Error", textStatus + " " + xhr.responseText);
+        }
+    });
+});
+
+$('#map-us').on('click', '#addHPCSliver', function() {
+
+    $.ajax({
+        url : '/dashboardaddorremsliver/',
+        dataType : 'json',
+        data: {site: $(this).data('site'),
+               actionToDo: "add",
+               csrfmiddlewaretoken: "{{ csrf_token }}",   // < here
+               state:"inactive" },
+        type : 'POST',
+        success: function(response)
+        {
+            confirmDialog("Info","Added an HPC Sliver to Site ");
+        },
+        error:function (xhr, textStatus, thrownError){
+            errorDialog("Error", textStatus + " " + xhr.responseText);
+        }
+    });
+});
+
+function getIcon(numNodes, numHPCSlivers, currentBW, hot) {
+    //var colorChoices = ["#007FFF", "#0000FF", "#7f00ff", "#FF00FF", "#FF007F", "#FF0000"];
+    var colorChoices = ["#0000FF", "#00FFFF", "#00FF00", "#FFFF00", "#FF0000"];
+
+    var ratio = hot * 100; //(numHPCSlivers/numNodes) * 100;
+    var numColors = colorChoices.length;
+    var colorBands = 100/numColors;
+
+    //Algorithm for color tone should consider the number of available nodes
+    // on the site, and then how much the current dedicated nodes are impacted
+    //var iconColor = 0;
+    var iconColor = colorChoices.length-1;
+    for (colorBand = 0; colorBand < numColors; colorBand ++) {
+        if (ratio < colorBands * colorBand+1) {
+            iconColor = colorBand
+            break;
+        }
+    }
+
+    if (numHPCSlivers < 1) {
+        iconColor = "#7F7F7F";
+    } else {
+        iconColor = colorChoices[iconColor];
+    }
+
+    var icon = L.MakiMarkers.icon({icon: "star-stroked", color: iconColor , size: "s"});
+    return icon;
+}
+
+function updateMaps() {
+    log.debug("Attempting to update Maps");
+    $.ajax({
+    url : '/hpcdashboard',
+    dataType : 'json',
+    type : 'GET',
+    success: function(newData)
+    {
+        log.debug("Successfully got data back...");
+        log.debug(newData);
+        log.debug("Still have old data too");
+        log.debug(mapData);
+        updateMapData(newData);
+    }
+});
+    setTimeout(updateMaps, 30000)
+
+}
+
+function updateMapData(newData) {
+    for ( site in newData ) {
+        var isNewSite = false;
+        //check to see if the site is new or not
+        if (site in mapData) {
+            log.debug("Site " + site + " already mapped");
+            //take ownership of marker
+            newData[site]['marker'] = mapData[site]['marker'];
+            delete mapData[site];
+            newData[site]['marker'].setIcon(getIcon(newData[site]['numNodes'], newData[site]['numHPCSlivers'],  0, newData[site]['hot']));
+            // workaround, markers currently don't have a setPopup Content method -- so have to grab object directly
+            newData[site]['marker']._popup.setContent(setPopupVals(site, newData[site]));
+        }
+        else {
+            isNewSite = true;
+            log.debug("New Site detected: " + site);
+            newData[site]['marker'] = L.marker([newData[site]['lat'], newData[site]['long']],
+                                              {icon: getIcon(newData[site]['numNodes'], newData[site]['numHPCSlivers'],  0, newData[site]['hot']) });
+            newData[site]['marker'].addTo(map).bindPopup(setPopupVals(site, newData[site])); //.openPopup();
+            log.debug("Should have added the new site");
+
+        }
+    }
+
+    // Anything still in data needs to be removed since it is no longer a valid site
+    for (remSite in mapData) {
+        log.warn("Site: " + remSite + " is no longer valid, removing from map");
+        map.removeLayer(data[remSite]['marker']);
+    }
+    mapData = newData;
+}
+
+function onMapClick(e) {
+    popup
+    .setLatLng(e.latlng)
+    .setContent("You clicked the map at " + e.latlng.toString())
+    .openOn(map);
+}
+
+setTimeout(updateMaps, 5000)
+
+// from stackexchange
+function setInnerText (elementId, text) {
+    var element;
+    if (document.getElementById) {
+        element = document.getElementById(elementId);
+    } else if (document.all) {
+        element = document.all[elementId];
+    }
+    if (element) {
+        if (typeof element.textContent != 'undefined') {
+            element.textContent = text;
+        } else if (typeof element.innerText != 'undefined') {
+            element.innerText = text;
+        } else if (typeof element.removeChild != 'undefined') {
+            while (element.hasChildNodes()) {
+                element.removeChild(element.lastChild);
+            }
+            element.appendChild(document.createTextNode(text)) ;
+        }
+    }
+}
+
+function updateLabelData(summaryData) {
+    setInnerText("active-slivers-value", summaryData["total_slivers"]);
+    setInnerText("overall-throughput-value", (summaryData["total_bandwidth"]*8/1024/1024/1024).toFixed(2) + " Gbps");
+    setInnerText("cpu-utilization-value", summaryData["average_cpu"] + "%");
+}
+
+function updateLabels() {
+    log.debug("Attempting to update Labels");
+    $.ajax({
+    url : '/hpcsummary',
+    dataType : 'json',
+    type : 'GET',
+    success: function(newData)
+    {
+        updateLabelData(newData);
+    }
+});
+    setTimeout(updateLabels, 30000)
+
+}
+
+setTimeout(updateLabels, 5000)
+
+
+</script>
diff --git a/planetstack/templates/admin/dashboard/customize.html b/planetstack/templates/admin/dashboard/customize.html
new file mode 100644 (file)
index 0000000..d2e8a20
--- /dev/null
@@ -0,0 +1,93 @@
+<form>
+    <div class="customize_row">\r
+    <div class="customize_column">\r
+    <div>Available Dashboard Views</div>\r
+    <select name="selectfrom" id="select-from" multiple size="5">\r
+        {% for cp in unusedDashboards %}\r
+           <option value="{{ cp }}">{{ cp }}</option>
+        {% endfor %}\r
+    </select>\r
+    </div>\r
+    <div class="customize_column">\r
+    <br>\r
+    <div class="btn btn-success" id="customize-btn-add">Add &raquo;</div><br><br>\r
+    <div class="btn btn-success" id="customize-btn-remove">&laquo; Remove</div>\r
+    </div>\r
+    <div class="customize_column">\r
+    <div>Selected Dashboard Views</div>\r
+    <select name="selectto" id="select-to" multiple size="5">\r
+        {% for cp in dashboards %}\r
+           <option value="{{ cp }}">{{ cp }}</option>
+        {% endfor %}\r
+    </select>\r
+    <br>\r
+    <div class="btn btn-high btn-info" id="customize-btn-save">Save</div>\r
+    <div style="display: none" id="customize-msg-saving">Saving...</div>\r
+    </div>\r
+    <div class="customize_column">\r
+    <br>\r
+    <div class="btn btn-success" id="customize-btn-up">Up</div><br><br>\r
+    <div class="btn btn-success" id="customize-btn-down">Down</div>\r
+    </div>\r
+    </div>\r
+</form>\r
+
+<script>
+$(document).ready(function() {
+    $('#customize-btn-add').click(function(){\r
+        $('#select-from option:selected').each( function() {\r
+                $('#select-to').append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>");\r
+            $(this).remove();\r
+        });\r
+    });\r
+    $('#customize-btn-remove').click(function(){\r
+        $('#select-to option:selected').each( function() {\r
+            $('#select-from').append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>");\r
+            $(this).remove();\r
+        });\r
+    });\r
+    $('#customize-btn-up').bind('click', function() {\r
+        $('#select-to option:selected').each( function() {\r
+            var newPos = $('#select-to option').index(this) - 1;\r
+            if (newPos > -1) {\r
+                $('#select-to option').eq(newPos).before("<option value='"+$(this).val()+"' selected='selected'>"+$(this).text()+"</option>");\r
+                $(this).remove();\r
+            }\r
+        });\r
+    });\r
+    $('#customize-btn-down').bind('click', function() {\r
+        var countOptions = $('#select-to option').size();\r
+        $('#select-to option:selected').each( function() {\r
+            var newPos = $('#select-to option').index(this) + 1;\r
+            if (newPos < countOptions) {\r
+                $('#select-to option').eq(newPos).after("<option value='"+$(this).val()+"' selected='selected'>"+$(this).text()+"</option>");\r
+                $(this).remove();\r
+            }\r
+        });\r
+    });\r
+    $('#customize-btn-save').bind('click', function() {\r
+         $("#customize-btn-save").hide();\r
+         $("#customize-msg-saving").show();\r
+         var items=[];\r
+         $("#select-to option").each(function() { items.push($(this).val()); });\r
+         $.ajax({\r
+                url: '/customize/',
+                dataType: 'json',
+                data: {
+                        dashboards: items.join(","),
+                       csrfmiddlewaretoken: "{{ csrf_token }}" // < here
+                },
+                type: 'POST',
+                error: function (jqXHR, textStatus, errorThrown) {
+                    errorDialog("Error", textStatus + " " + jqXHR.responseText);
+                    $("#customize-btn-save").show();
+                    $("#customize-msg-saving").hide();
+                },
+                success: function () {
+                        location.reload();
+                }
+        });\r
+    });
+});
+</script>
+
diff --git a/planetstack/templates/admin/dashboard/dashboard_base.html b/planetstack/templates/admin/dashboard/dashboard_base.html
new file mode 100644 (file)
index 0000000..903f3fd
--- /dev/null
@@ -0,0 +1,91 @@
+{% extends "admin/base.html" %}
+{% load admin_static %}
+
+{% block extrahead %}
+<link rel="stylesheet"  href="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.0/css/jquery.dataTables.css">
+<link rel="stylesheet" type="text/css" href="{% static 'suit/css/suit.css' %}" media="all">
+<link rel="stylesheet" type="text/css" href="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.0/css/jquery.dataTables_themeroller.css">
+<link rel="stylesheet" type="text/css" href="{% static 'planetstack.css' %}" media="all">
+<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
+<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.css" />
+<script src="http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.js"></script>
+
+
+<!-- no need to include jquery here as it's already included by base.html. Including it multiple times will break mtuity statistics. -->
+<!-- src="http://code.jquery.com/jquery-1.9.1.js" -->
+
+<script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
+<script src="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.4/jquery.dataTables.min.js"></script>
+<script type="text/javascript" src="{% static 'log4javascript-1.4.6/log4javascript.js' %}"></script>
+<script src="{% static 'js/Leaflet.MakiMarkers.js' %}" > </script>
+  
+<script>
+  $(function() {
+    $( "#hometabs" ).tabs({active: 0, //event: "mouseover"
+      //collapsible: true
+    });
+  });
+
+var consoleAppender = new log4javascript.BrowserConsoleAppender();
+var patternLayout = new log4javascript.PatternLayout("%d{HH:mm:ss,SSS} %l{s:l} %-5p - %m{1}%n");
+consoleAppender.setLayout(patternLayout);
+//var log  = log4javascript.getDefaultLogger();
+var log  = log4javascript.getRootLogger();
+log.addAppender(consoleAppender);
+log.setLevel(log4javascript.Level.ERROR);
+
+function confirmDialog(title,msg) {
+    var dialog = $('<div>'+msg+'</div>');
+    var def = $.Deferred();
+
+    $(dialog).dialog({
+        resizable: false,
+        title: title,
+        autoOpen: true,
+        modal: true,
+        dialogClass: "dashboard-hpc-sliver",
+        buttons: {
+            'OK': function() {
+                def.resolve();
+                log.debug("Chose to add a sliver");
+                $( this ).dialog( "close" );
+            },
+            'Cancel': function() {
+                def.reject();
+                $( this ).dialog( "close" );
+            }
+        },
+        close: {
+        }
+    });
+    return def.promise();
+}
+
+function errorDialog(title,msg) {
+    var dialog = $('<div>'+msg+'</div>');
+    var def = $.Deferred();
+
+    $(dialog).dialog({
+        resizable: false,
+        title: title,
+        autoOpen: true,
+        modal: true,
+        dialogClass: "dashboard-hpc-sliver",
+        buttons: {
+            'OK': function() {
+                def.resolve();
+                $( this ).dialog( "close" );
+            },
+        },
+        close: {
+        }
+    });
+    return def.promise();
+}
+
+</script>
+{% endblock %}
+
+{% block content %}
+dashboard goes here
+{% endblock %}
diff --git a/planetstack/templates/admin/dashboard/developer.html b/planetstack/templates/admin/dashboard/developer.html
new file mode 100644 (file)
index 0000000..13f178f
--- /dev/null
@@ -0,0 +1,84 @@
+<div id="developerview"></div>
+
+<script>
+var oTable;
+
+function updateUserSliceTable(){
+    log.debug("Should grab user slice info");
+    jQuery.ajax({
+        async:true,
+        dataType: 'json',
+        url: '/hpcdashuserslices',
+        success: function(data){
+            log.info("Got Data back for User SliceTable");
+            //parseData(data);
+            //createUserSliceTable(data);
+            setTimeout(function () { updateUserSliceTable() }, 5000);
+        },
+        error: function(data){
+            log.debug("COULDNT GET DATA BACK");
+            setTimeout(function () { updateUserSliceTable() }, 5000);
+        }
+    });
+}
+
+function createUserSliceTable(data) {
+    log.debug("Creating User Slice Table");
+
+    //Add check for #dynamicusersliceinfo_filter label-> input having focus here
+
+    $('#developerview').html( '<table cellpadding="0" cellspacing="0" border="0" class="display" id="dynamicusersliceinfo"></table>' );
+    var actualEntries = [];
+    //log.debug(data['userSliceInfo']['rows'][0]['slicename']);
+
+    var rows = data['userSliceInfo']['rows'];
+    for (row in rows) {
+        log.debug(row[0]);
+        slicename = rows[row]['slicename'];
+        sliceid = rows[row]['sliceid'];
+        role = rows[row]['role'];
+        slivercount = rows[row]['slivercount'];
+        sitecount = rows[row]['sitecount'];
+        actualEntries.push(['<a href="http://{{request.get_host}}/admin/core/slice/' + sliceid + '">' + slicename + '</a>',
+                            role, slivercount, sitecount]);
+    }
+    oTable = $('#dynamicusersliceinfo').dataTable( {
+        "bJQueryUI": true,
+        "aaData":  actualEntries ,
+        "bStateSave": true,
+        "aoColumns": [
+            { "sTitle": "Slice" },
+            { "sTitle": "Privilege" , sClass: "alignCenter"},
+            { "sTitle": "Number of Slivers" , sClass: "alignCenter"},
+            { "sTitle": "Number of Sites" , sClass: "alignCenter"},
+        ]
+    } );
+
+    // If the filter had focus, reapply here
+
+    setTimeout(function() {
+       jQuery.ajax({
+           url: '/hpcdashuserslices',
+           dataType: 'json',
+           success: function(data){ createUserSliceTable(data); },
+           complete: function(){ },
+       });
+    },  10000);
+}
+
+function initTable(){
+    log.debug("Initializing Table")
+    jQuery.ajax({
+        url: '/hpcdashuserslices',
+        dataType: 'json',
+        success: function(data){ createUserSliceTable(data); },
+        complete: function(){
+        }
+    });
+    updateUserSliceTable();
+}
+
+
+initTable();
+
+</script>
diff --git a/planetstack/templates/admin/dashboard/shell.html b/planetstack/templates/admin/dashboard/shell.html
new file mode 100644 (file)
index 0000000..8761f22
--- /dev/null
@@ -0,0 +1,32 @@
+  <div id="terminal">
+    <p class="response">XSH - The XOS Shell</p>
+    <br />
+    <p id="terminal_help1" style="display: none;">type "help" for help</p>
+    <p id="terminal_help2" style="display: none;">type "tutorial" to start the tutorial</p>
+    <p id="terminal_wait">Please wait while we talk to the XOS server...</p>
+
+  </div>
+  <link rel="stylesheet" type="text/css" href="{% static 'shell/opencloud_shell.css' %}" media="all">
+  <script src="{% static 'shell/opencloud.js' %}"></script>
+  <script src="{% static 'shell/opencloud_shell.js' %}"></script>
+  <script src="{% static 'shell/object_id.js' %}"></script>
+  <script src="{% static 'shell/constants.js' %}"></script>
+  <script src="{% static 'shell/utils.js' %}"></script>
+  <script src="{% static 'shell/shell_utils.js' %}"></script>
+  <script src="{% static 'shell/tokens.js' %}"></script>
+
+
+    <!-- script type="text/javascript" src="js/jquery-1.3.2.min.js"></script-->
+
+    <!-- script type="text/javascript" src="js/mongo.js"></script -->
+    <!-- script type="text/javascript" src="js/object_id.js"></script -->
+    <!-- script type="text/javascript" src="js/lib/collection.js"></script -->
+
+    <!-- script type="text/javascript" src="js/constants.js"></script -->
+    <!-- script type="text/javascript" src="js/connection.js"></script -->
+
+    <!-- script type="text/javascript" src="js/utils.js"></script -->
+    <!-- script type="text/javascript" src="js/shell_utils.js"></script-->
+    <!-- script type="text/javascript" src="js/tokens.js"></script -->
+
+
index e52bdd7..3ddaa1f 100644 (file)
@@ -2,7 +2,6 @@
 <style>
 #slice_interaction_chart_placeholder {
     text-align: center;
-    margin: -40px 20px 20px 0px;
     color:#fff;
     position: relative;
     height: 100%;
@@ -61,33 +60,34 @@ button:disabled {
     color:red;
     background-color: lightyellow;
 }
-#sliceEngagementTitle {
-    margin-top: -50px;
-    margin-left: -40px;
-
+.sliceinteractions_column {
+  display: table-cell;\r
+  padding: 10px;\r
+}
+#interactions_function {
+  width: 125px;
 }
 
 </style>
-<h3 id="sliceEngagementTitle"> Involvement between Slices by User Engagement</h3>
+
+<div class="row">
+    <div class="sliceinteractions_column">
+    <select id="interactions_function">
+        <option value="networks">networks</option>
+        <option value="users">users</option>
+        <option value="owner sites">sites</option>
+        <option value="sliver_sites">sliver_sites</option>
+        <option value="sliver_nodes">sliver_nodes</option>
+    </select>
+    </div>
+    <div class="sliceinteractions_column">
+    <h3 id="sliceEngagementTitle">Slice Interactions</h3>
+    </div>
+</div>
+
 <div id="slice_interaction_chart_placeholder"></div>
 
 <script>
-    
-  /*  d3.json(datasetURL, function(error, matrix) {
-
-    if (error) {alert("Error reading file: ", error.statusText); return; }
-    
-    */
-    actualData =  [[2, 2, 2, 2, 2, 2, 2, 1, 2, 1],
- [2, 7, 3, 7, 7, 3, 2, 2, 7, 2],
- [2, 3, 4, 3, 4, 2, 2, 2, 3, 2],
- [2, 7, 3, 7, 7, 3, 2, 2, 7, 2],
- [2, 7, 4, 7, 15, 3, 2, 6, 7, 6],
- [2, 3, 2, 3, 3, 3, 2, 1, 3, 1],
- [2, 2, 2, 2, 2, 2, 2, 1, 2, 1],
- [1, 2, 2, 2, 6, 1, 1, 6, 2, 6],
- [2, 7, 3, 7, 7, 3, 2, 2, 7, 2],
- [1, 2, 2, 2, 6, 1, 1, 6, 2, 6]];
 
 // Chord Diagram for showing Collaboration between users found in an anchor query
 // Collaboration View
@@ -98,80 +98,74 @@ var width = 600,
     outerRadius = Math.min(width, height) / 2 - 100,
     innerRadius = outerRadius - 18;
 
-var dataset = "#allinfo";
-//string url for the initial data set
-//would usually be a file path url, here it is the id
-//selector for the <pre> element storing the data
-
 //create number formatting functions
 var formatPercent = d3.format("%");
 var numberWithCommas = d3.format("0,f");
 
-//create the arc path data generator for the groups
-var arc = d3.svg.arc()
-    .innerRadius(innerRadius)
-    .outerRadius(outerRadius);
-
-//create the chord path data generator for the chords
-var path = d3.svg.chord()
-    .radius(innerRadius);
-
 //define the default chord layout parameters
 //within a function that returns a new layout object;
 //that way, you can create multiple chord layouts
 //that are the same except for the data.
 function getDefaultLayout() {
     return d3.layout.chord()
-//    .padding(0.03)
     .sortSubgroups(d3.descending)
     .sortChords(d3.ascending);
-}  
+}
 var last_layout; //store layout between updates
-var users = [{"color": "#005586", "name": "Owl"}, {"color": "#6ebe49", "name": "DnsDemux"}, {"color": "orange", "name": "Infrastructure"}, {"color": "#707170", "name": "HyperCache"}, {"color": "#00c4b3", "name": "Syndicate"}, {"color": "#077767", "name": "Hadoop"}, {"color": "dodgerblue", "name": "Stork"}, {"color": "#a79b94", "name": "test2"}, {"color": "#c4e76a", "name": "DnsRedir"}, {"color": "red", "name": "test"}];
-
-/*** Initialize the visualization ***/
-var g = d3.select("#slice_interaction_chart_placeholder").append("svg")
-        .attr("width", width)
-        .attr("height", height)
-    .append("g")
-        .attr("id", "circle")
-        .attr("transform", 
-              "translate(" + width / 2 + "," + height / 2 + ")");
-//the entire graphic will be drawn within this <g> element,
-//so all coordinates will be relative to the center of the circle
-
-g.append("circle")
-    .attr("r", outerRadius);
-//this circle is set in CSS to be transparent but to respond to mouse events
-//It will ensure that the <g> responds to all mouse events within
-//the area, even after chords are faded out.
-
-/*** Read in the neighbourhoods data and update with initial data matrix ***/
-//normally this would be done with file-reading functions
-//d3.csv and d3.json and callbacks, 
-//instead we're using the string-parsing functions
-//d3.csv.parse and JSON.parse, both of which return the data,
-//no callbacks required.
-
-
-    updateChords(dataset); 
-    //call the update method with the default dataset
-    
-//} ); //end of d3.csv function
+var g;
+var arc;
+var path;
+
+function init_visualization() {
+    arc = d3.svg.arc()
+        .innerRadius(innerRadius)
+        .outerRadius(outerRadius);
+
+    path = d3.svg.chord()
+        .radius(innerRadius);
+
+
+    /*** Initialize the visualization ***/
+    g = d3.select("#slice_interaction_chart_placeholder").append("svg")
+            .attr("width", width)
+            .attr("height", height)
+        .append("g")
+            .attr("id", "circle")
+            .attr("transform",
+                  "translate(" + width / 2 + "," + height / 2 + ")");
+    //the entire graphic will be drawn within this <g> element,
+    //so all coordinates will be relative to the center of the circle
+
+    g.append("circle")
+        .attr("r", outerRadius);
+}
+
+$( document ).ready(function() {
+    init_visualization();
+    $('#interactions_function').change(function() {
+         updateInteractions();
+     });
+    updateInteractions();
+});
+
+function updateInteractions() {
+ $( "#sliceEngagementTitle" ).html("<h3>Loading...</h3>");
+ $.ajax({
+    url : "/admin/sliceinteractions/" + $("#interactions_function :selected").text() + "/",
+    dataType : 'json',
+    type : 'GET',
+    success: function(newData)
+    {
+        $( "#sliceEngagementTitle" ).html("<h3>" + newData["title"] + "</h3>");
+        updateChords(newData["groups"], newData["matrix"], newData["objectName"])
+    }
+   });
+}
 
 
 /* Create OR update a chord layout from a data matrix */
-function updateChords( datasetURL ) {
-    
-  /*  d3.json(datasetURL, function(error, matrix) {
+function updateChords( users, matrix, objectName ) {
 
-    if (error) {alert("Error reading file: ", error.statusText); return; }
-    
-    */
-    //var matrix = JSON.parse( d3.select(datasetURL).text() );
-    var matrix = actualData;
-        // instead of d3.json
-    
     /* Compute chord layout. */
     layout = getDefaultLayout(); //create a new layout object
     layout.matrix(matrix);
@@ -189,7 +183,7 @@ function updateChords( datasetURL ) {
             .duration(1500)
             .attr("opacity", 0)
             .remove(); //remove after transitions are complete
-    
+
     var newGroups = groupG.enter().append("g")
         .attr("class", "group");
     //the enter selection is stored in a variable so we can
@@ -202,7 +196,7 @@ function updateChords( datasetURL ) {
     //Update the (tooltip) title text based on the data
     groupG.select("title")
         .text(function(d, i) {
-            return "Slice (" + users[i].name + 
+            return "Slice (" + users[i].name +
                 ") "
                 ;
         });
@@ -277,19 +271,19 @@ function updateChords( datasetURL ) {
         .text(function(d) {
             if (users[d.target.index].name !== users[d.source.index].name) {
                 return [numberWithCommas(d.source.value),
-                        " users in common between \n",
+                        " " + objectName + " in common between \n",
                         users[d.source.index].name,
                         " and ",
                         users[d.target.index].name,
                         "\n"
-                        ].join(""); 
+                        ].join("");
                     //joining an array of many strings is faster than
-                    //repeated calls to the '+' operator, 
+                    //repeated calls to the '+' operator,
                     //and makes for neater code!
-            } 
+            }
             else { //source and target are the same
-                return numberWithCommas(d.source.value) 
-                    + " users are only in Slice (" 
+                return numberWithCommas(d.source.value)
+                    + " " + objectName + " are only in Slice ("
                     + users[d.source.index].name + ")";
             }
         });
@@ -311,6 +305,16 @@ function updateChords( datasetURL ) {
         //.transition().duration(100).attr("opacity", 1) //reset opacity
     ;
 
+    // XXX SMBAKER: The way the text was added with newGroups, it's only
+    //   computed when a node is created. This is a problem if we redraw the
+    //   graph with a different set of nodes, because the old labels will
+    //   stick. So, I added this, which *seems* to cause the labels to be
+    //   recomputed.
+    groupG.selectAll("text")
+        .text(function (d) {
+            return users[d.index].name;
+        });
+
     //add the mouseover/fade out behaviour to the groups
     //this is reset on every update, so it will use the latest
     //chordPaths selection
@@ -331,7 +335,13 @@ function updateChords( datasetURL ) {
             chordPaths.classed("fade", false);
     });
     */
-    
+
+    // XXX smbaker: there's a bug where if you hilight a slice of the chord
+    //   graph, and then update the data, the freshly drawn graph is missing
+    //   some of the chords. Flipping the fade bit seems to fix that.
+    chordPaths.classed("fade", true);
+    chordPaths.classed("fade", false);
+
     last_layout = layout; //save for next update
     
 //  }); //end of d3.json
@@ -416,6 +426,8 @@ function chordTween(oldLayout) {
         }
         else {
             //create a zero-width chord object
+/*          XXX SMBAKER: the code commented out below was causing an error,
+                  so I replaced it with the following code from stacktrace
             if (oldLayout) {
                 var oldGroups = oldLayout.groups().filter(function(group) {
                         return ( (group.index == d.source.index) ||
@@ -426,7 +438,7 @@ function chordTween(oldLayout) {
                     //the OR in target is in case source and target are equal
                     //in the data, in which case only one group will pass the
                     //filter function
-                
+
                 if (d.source.index != old.source.index ){
                     //swap source and target to match the new data
                     old = {
@@ -436,13 +448,22 @@ function chordTween(oldLayout) {
                 }
             }
             else old = d;
-                
+
             var emptyChord = {
                 source: { startAngle: old.source.startAngle,
                          endAngle: old.source.startAngle},
                 target: { startAngle: old.target.startAngle,
                          endAngle: old.target.startAngle}
             };
+            tween = d3.interpolate( emptyChord, d );*/
+
+            //create a zero-width chord object
+            var emptyChord = {\r
+                source: { startAngle: d.source.startAngle,\r
+                         endAngle: d.source.startAngle},\r
+                target: { startAngle: d.target.startAngle,\r
+                         endAngle: d.target.startAngle}\r
+            };\r
             tween = d3.interpolate( emptyChord, d );
         }
 
index c3f95ec..bf49471 100644 (file)
                                <select id="new-image" class="tenant-create-slice"></select>
                        </div>
                        <div class="create-slice-row">
-                                <label for="new-network">Network</label>
-                                <select id="new-network" class="tenant-create-slice"></select>
+                                <label for="new-network">Network Ports</label>
+                               <input type="text" name="new-network" id="new-network">
                         </div>
+                       <div class="create-slice-row">
+                               <label for="private-vol">Include Private Vol</label>
+                               <input type="checkbox" name="checkbox" id="private-vol" value="value">
+                       </div>
                        <div class="create-slice-row">
                                 <label for="mount-data-sets">Data Sets</label>
                                 <select id="mount-data-sets" class="tenant-create-slice"></select>
        </script>
        <script>
        $(document).ready(function () {
-               function showSliceData(data,value) {
-                       var imageData = data['image']['rows'];
-                       var networkData = data['network']['rows'];
+               function showSliceData(rows,imageData,serviceLevelData,siteRows,dataSet,value) {
                        $("#service-level-value").empty();
                        $("#slice-image-value").empty();
                        $("#tenantSiteTable").empty();
                        $('#tenantSiteTable').html('<table cellpadding="0" cellspacing="0" border="0" class="display" id="tenantSiteTableData"></table>');
                        $("#tenantSliceDropDown").val(value);
-                       var rows = data['userSliceInfo']['rows'];
                        var siteNames = [];
                        var sliverCount;
                        for (row in rows) {
                                if (rows[row]['sliceName'] == value) {
                                        sliceImageData = rows[row]['preferredImage'];
                                        $("#slice-image-value").html(sliceImageData);
-                                       serviceLevelData = rows[row]['sliceServiceClass'];
-                                       $("#service-level-value").html(serviceLevelData);
+                                       serviceLevelDataBasic = rows[row]['sliceServiceClass'];
+                                       $("#service-level-value").html(serviceLevelDataBasic);
                                        var innerRows = rows[row]['sliceSite'];
                                        for (innerRow in innerRows) {
                                                sliverCount = innerRows[innerRow];
                                                "sTitle": "Allocated",
                                                sClass: "alignCenter"
                                        }
-                                       //{ "sTitle": "Allocated" , sClass: "alignCenter"},
-                                       //{ "sTitle": "Desired" , sClass: "alignCenter"},
                                ]
                        });
                                $('#tenantSliceDropDown').on('change', function () {
                                        var value = $("#tenantSliceDropDown").val();
        //alert(value);
-                                       checkForBasicAdvView(value, data);
+                                       checkForBasicAdvView(value,rows,imageData,serviceLevelData,siteRows,dataSet);
                                });
                }
 
-               function downloadSliceInfo(data,value){
+               function downloadSliceInfo(rows,imageData,serviceLevelData,siteRows,dataSet,value){
                         $("#download-details").unbind().click(function(){
                                                 function download(filename, text) {
                                                var sliceDetails = document.createElement('a');
                                                sliceDetails.setAttribute('download', filename);
                                                sliceDetails.click();
                                        }
-                                       var rows = data['userSliceInfo']['rows'];
                                        var sliceInfo;
                                        for (row in rows){
                                                if(rows[row]['sliceName']==value){
                                var allocatedSlivers = parseInt($(this).parent().siblings(".allocated").html());
                                var td = $(this).parent().siblings(".allocated");
                                var pos = oTable.fnGetPosition(td[0]);
+                               $("#numOfSlivers").val("");;
+                               $("#advNumOfSlivers").val("");;
                                $("#adv-tooltip").css("display", "none");
-                               $("#numOfSlivers").empty();
                                $("#adv-dialog-form").dialog({
                                        autoOpen: false,
                                        height: 200,
                                        buttons: {
                                                "Add": function () {
                                                        allocatedSlivers += parseInt($("#advNumOfSlivers").val());
-                                                       //if (!(parseInt($("#numOfSlivers").val()))) {
                                                                $("#adv-tooltip").css("display", "block");
-                                                       //} else {
                                                                $(this).dialog("close");
                                                                td.html(allocatedSlivers);
-                                                       //}
                                                },
                                                "Remove": function () {
                                                        allocatedSlivers -= parseInt($("#advNumOfSlivers").val());
-                                               //      if (!(parseInt($("#numOfSlivers").val()))) {
                                                                $("#adv-tooltip").css("display", "block");
-                                               //      } else {
                                                                $(this).dialog("close");
                                                                td.html(allocatedSlivers);
-                                               //      }
                                                }
                                        }
                                });
                        });
                }
 
-               function advShowSliceData(data,value) {
-                       var serviceLevelData = data['sliceServiceClass']['rows'];
-                       var imageData = data['image']['rows'];
-                       var networkData = data['network']['rows'];
-                       var siteRows = data['sites']['rows'];
-                       var dataSet = data['mountDataSets']['rows'];
+               function advShowSliceData(rows,imageData,serviceLevelData,siteRows,dataSet,value) {
                        $("#adv-service-level-value").empty();
                        $("#adv-slice-image-value").empty();
                        $("#adv-slice-data-set-value").empty();
-                       $("#adv-slice-network-value").empty();
                        $("#advTenantSliceDropDown").val(value);
                        $("<select></select>").attr('id', 'adv-service-level-dropdown').appendTo('#adv-service-level-value');
                        $("<select></select>").attr('id', 'adv-image-dropdown').appendTo('#adv-slice-image-value');
-                       $("<select></select>").attr('id', 'adv-network-dropdown').appendTo('#adv-slice-network-value');
                        $("<select></select>").attr('id', 'adv-dataset-dropdown').appendTo('#adv-slice-data-set-value');
                        $('#advTenantSiteTable').html('<table cellpadding="0" cellspacing="0" border="0" class="display" id="advTenantSiteTableData"></table>');
-                       var rows = data['userSliceInfo']['rows'];
                        var siteNames = [];
                        var sliverCount;
                        var tableData = {};
                         for (row in imageData) {
                                 $("#adv-image-dropdown").append("<option>" + imageData[row]['Image'] + "</option>");
                         }
-                        for (row in networkData) {
-                                $("#adv-network-dropdown").append("<option>" + networkData[row]['Network'] + "</option>");
-                        }
                         for (row in dataSet) {
                                 $("#adv-dataset-dropdown").append("<option>" + dataSet[row]['DataSet'] + "</option>");
                         }
                                        $("#adv-service-level-dropdown").val(rows[row]['sliceServiceClass']);
                                        $("#adv-image-dropdown").val(rows[row]['preferredImage']);
                                        $("#adv-dataset-dropdown").val(rows[row]['sliceDataSet']);
-                                       $("#adv-network-dropdown").val(rows[row]['sliceNetwork']);
                                        for (innerRow in innerRows) {
                                                tableData[innerRow] = innerRows[innerRow];
                                        }
                                                        },
                                                        type: 'POST',
                                                        complete: function () {
-                                                                //oTable.fnReloadAjax();
-                                                               location.reload();
+                                                               //location.reload();
+                                                               
                                                         }
                                                });
                                        } else if (newTableData[newRow] < tableData[newRow]) {
                                                        },
                                                        type: 'POST',
                                                        complete: function () {
-                                                               // oTable.fnReloadAjax();
-                                                               location.reload();
+                                                               //location.reload();
                                                         }
                                                });
                                        }
                                                                 sliceName: $("#advTenantSliceDropDown").val(),
                                                                serviceClass: $("#adv-service-level-dropdown").val(),
                                                                imageName: $("#adv-image-dropdown").val(),
-                                                               network: $("#adv-network-dropdown").val(),
                                                                dataSet: $("#adv-dataset-dropdown").val(),
+                                                               networkPorts:  $("#adv-network-value").val(),
+                                                               privateVolume: $("#private-vol-checkbox").is(":checked"),
                                                                 actionToDo: "update",
                                                                 csrfmiddlewaretoken: "{{ csrf_token }}", // < here
                                                                 state: "inactive"
                                                         },
                                                         type: 'POST',
-                                                        complete: function () {
-                                                                //oTable.fnReloadAjax();
-                                                                location.reload();
-                                                        }
+                                                        success: function () {
+                                                               $("#tabs-5").empty();
+                                                                initTenant();    //location.reload();
+                                                        },
+                                                         error:function (xhr, textStatus, thrownError){
+                                                                  errorDialog("Error:", textStatus + " " + xhr.responseText);
+                                                       }
+                                                       
                                                 });
 
                        });
                        });
                        editSliverAdv();
                                $('#advTenantSliceDropDown').on('change', function () {
-       var selectedValue = $("#advTenantSliceDropDown").val();
-       //alert(selectedValue);
-                                       checkForBasicAdvView(selectedValue, data);
-                                       //editSliverAdv();
+                                       var selectedValue = $("#advTenantSliceDropDown").val();
+                                       checkForBasicAdvView(selectedValue, rows,imageData,serviceLevelData,siteRows,dataSet);
                                });
                }
 
-               function checkForBasicAdvView(value, data) {
-                       var rows = data['userSliceInfo']['rows'];
+               function checkForBasicAdvView(value, rows,imageData,serviceLevelData,siteRows,dataSet) {
                        for (row in rows) {
                                if (rows[row]['sliceName'] == value) {
                                        if (rows[row]['numOfSites'] > 1) {
-                                               advShowSliceData(data,value);
-                                               downloadSliceInfo(data,value);
+                                               advShowSliceData(rows,imageData,serviceLevelData,siteRows,dataSet,value);
+                                               downloadSliceInfo(rows,imageData,serviceLevelData,siteRows,dataSet,value);
                                                $("#tenantSliceDataWrapper").css("display","none");
                                                $("#advancedTenantSliceDataWrapper").css("display","block");
                                                $("#advTenantSiteTable").css("display","block");
                                                $("#save-btn").css("display","block");
                                                break;
                                        } else if(rows[row]['numOfSites'] <= 1){
-                                               showSliceData(data,value);
-                                               downloadSliceInfo(data,value);
-                                               //editSliverAdv();
+                                               showSliceData(rows,imageData,serviceLevelData,siteRows,dataSet,value);
+                                               downloadSliceInfo(rows,imageData,serviceLevelData,siteRows,dataSet,value);
                                                $("#tenantSliceDataWrapper").css("display","block");
                                                $("#advancedTenantSliceDataWrapper").css("display","none");
                                                $("#advTenantSiteTable").css("display","none");
                        }
                }
 
-               function UserSliceTable(data) {
+               function UserSliceTable(rows,imageData,serviceLevelData,siteRows,dataSet) {
                                //Add check for #dynamicusersliceinfo_filter label-> input having focus here
-                               var rows = data['userSliceInfo']['rows'];
                                $("<div></div>").attr('id', 'tenantSliceDataWrapper').appendTo('#tabs-5');
                                $("<div></div>").attr('id', 'advancedTenantSliceDataWrapper').appendTo('#tabs-5');
                                var sliceData = '';
-                               sliceData += '<div class="tenant-row"><span class="summary-attr"><b>Slice Name:</b> <span id="slice-name-value"> </span> </span><br></div><div class="tenant-row"><span class="summary-attr"><b>Service Level:</b> <span id="service-level-value"> </span>  </span><br></div><div class="tenant-row"><span class="summary-attr"><b>Image:</b> <span id="slice-image-value"> </span>  </span><br></div><div class="btn btn-high btn-info" id="advanced-tenant">Go to Advanced View</div>';
+                               sliceData += '<div class="tenant-row public-key-warning"><span class="summary-attr">You have not uploaded your Public Key. <a href="http://{{ request.get_host}}/admin/core/user/{{user.id}}">Click here</a> to upload it now.</span></div><div class="tenant-row"><span class="summary-attr"><b>Slice Name:</b> <span id="slice-name-value"> </span> </span><br></div><div class="tenant-row"><span class="summary-attr"><b>Service Level:</b> <span id="service-level-value"> </span>  </span><br></div><div class="tenant-row"><span class="summary-attr"><b>Image:</b> <span id="slice-image-value"> </span>  </span><br></div><div class="btn btn-high btn-info" id="advanced-tenant">Go to Advanced View</div>';
                                var advSliceData = '';
-                               advSliceData += '<div class="adv-tenant-row"><span class="summary-attr"><b>Slice Name:</b> <span id="adv-slice-name-value"> </span> </span><br><br></div><div class="tenant-row"><span class="summary-attr"><b>Service Level:</b> <span id="adv-service-level-value"> </span> <span class="help-inline">Changes are potentially disruptive to existing slivers</span> </span><br></div><div class="tenant-row"><span class="summary-attr"><b>Image:</b> <span id="adv-slice-image-value"> </span><span class="help-inline">Changes are potentially disruptive to existing slivers</span>  </span><br></div><div class="tenant-row"><span class="summary-attr"><b>Network:</b> <span id="adv-slice-network-value"> </span>  <span class="help-inline">Changes are potentially disruptive to existing slivers</span></span></div><div class="tenant-row"><span class="summary-attr"><b>Data Sets:</b> <span id="adv-slice-data-set-value"> </span>  </span></div>';
+                               advSliceData += '<div class="tenant-row public-key-warning"><span class="summary-attr">You have not uploaded your Public Key. <a href="http://{{ request.get_host}}/admin/core/user/{{user.id}}">Click here</a> to upload it now.</span></div><div class="adv-tenant-row"><span class="summary-attr"><b>Slice Name:</b> <span id="adv-slice-name-value"> </span> </span><br><br></div><div class="tenant-row"><span class="summary-attr"><b>Service Level:</b> <span id="adv-service-level-value"> </span> <span class="help-inline">Changes are potentially disruptive to existing slivers</span> </span><br></div><div class="tenant-row"><span class="summary-attr"><b>Image:</b> <span id="adv-slice-image-value"> </span><span class="help-inline">Changes are potentially disruptive to existing slivers</span>  </span><br></div><div class="tenant-row"><span class="summary-attr"><b>Network:</b> <input type="text" name="adv-network-value" id="adv-network-value"> <span class="help-inline">List of port ranges(if any) e.g. 1021-1026,1029</span><br></div><div class="tenant-row"><span class="summary-attr"><b>Data Sets:</b> <span id="adv-slice-data-set-value"> </span>  <input type="checkbox" name="checkbox" id="private-vol-checkbox" value="value"><span class="help-inline">Include Private Volume</span></span></div>';
                                $('#tenantSliceDataWrapper').append(sliceData).css("display", "none");
                                $('#advancedTenantSliceDataWrapper').append(advSliceData);
                                $("#advancedTenantSliceDataWrapper").css("display", "none");
                                $('<div class="btn btn-high btn-info" id="save-btn">Save</div>').appendTo("#tabs-5").css("display", "none");
                                $("#advanced-tenant").unbind().click(function () {
                                        var value = $("#tenantSliceDropDown").val();
-                                       advShowSliceData(data,value);
+                                       advShowSliceData(rows,imageData,serviceLevelData,siteRows,dataSet,value);
                                                 $("#tenantSliceDataWrapper").css("display","none");
                                                 $("#advancedTenantSliceDataWrapper").css("display","block");
                                                 $("#advTenantSiteTable").css("display","block");
 
                        });
                        $("#sliver-btn").click(function () {
-                               $("#numOfSlivers").empty();
                                $("#basic-tooltip").css("display", "none");
                                $("#dialog-form").dialog({
                                        autoOpen: false,
                                                                                return true;
                                                                        }
                                                                },
-                                                               complete: function () {
+                                                               success: function () {
                                                                        location.reload();
+$("#dialog-form").dialog("close");
                                                                }
                                                        });
                                                },
                                                                                return true;
                                                                        }
                                                                },
-                                                               complete: function () {
-                                                                       location.reload();
+                                                               success: function () {
+$("#dialog-form").dialog("close");                                                             
+location.reload();
+
                                                                }
                                                        });
                                                }
                                $("#dialog-form").dialog("open");
                        });
                        $("#create-slice-btn").unbind().click(function () {
-                               var serviceLevelData = data['sliceServiceClass']['rows'];
-                               var imageData = data['image']['rows'];
-                               var dataSet = data['mountDataSets']['rows'];
-                               var networkData = data['network']['rows'];
                                $("#new-service-class").empty();
                                $("#new-image").empty();
                                $("#mount-data-sets").empty();
                                for (row in dataSet) {
                                         $("#mount-data-sets").append("<option>" + dataSet[row]['DataSet'] + "</option>");
                                 }
-                               for (row in networkData) {
-                                        $("#new-network").append("<option>" + networkData[row]['Network'] + "</option>");
-                                }
                                var nameOfSlice = $("#new-slice-name").val();
                                var nameOfServiceClass = $("#new-service-class").val();
                                var nameOfImage = $("#new-image").val();
                                                                        serviceClass: nameOfServiceClass,
                                                                        imageName: $("#new-image").val(),
                                                                        network: $("#new-network").val(),
+                                                                       privateVolume: $("#private-vol").is(":checked"),
                                                                        mountDataSets: $("#mount-data-sets").val(),
                                                                        actionToDo: "add",
                                                                        csrfmiddlewaretoken: "{{ csrf_token }}", // < here 
                                                                                return true;
                                                                        }
                                                                },
-                                                               success: function (response) {},
-                                                               complete: function () {
+                                                               success: function () {
                                                                        location.reload();
                                                                }
                                                        });
                                                                 },
                                                                async: false,
                                                                 type: 'POST',
-                                                                complete: function () {
+                                                                success: function () {
                                                                         location.reload();
                                                                 }
                                                         });
                                $("#create-slice-form").dialog("open");
                        });
                        $("#delete-slice-btn").unbind().click(function () {
-                               var rows = data['userSliceInfo']['rows'];
                                $("#delete-slice").empty();
                                for (row in rows) {
                                        $("#delete-slice").append("<option>" + rows[row]['sliceName'] + "</option>");
                                                                        state: "inactive"
                                                                },
                                                                type: 'POST',
-                                                               success: function (response) {},
-                                                               complete: function () {
+                                                               success: function () {
                                                                        location.reload();
-                                                               }
+                                                               },
+                                                          error:function (xhr, textStatus, thrownError){
+                                                                   errorDialog("Error:", textStatus + " " + xhr.responseText);
+                                                        }
                                                        });
                                                },
                                                Cancel: function () {
                        url: '/tenantview',
                        dataType: 'json',
                        success: function (data) {
-                               UserSliceTable(data);
+                               var rows = data['userSliceInfo']['rows'];
+                               var imageData = data['image']['rows'];
+                               //var networkData = data['network']['rows'];
+                               var serviceLevelData = data['sliceServiceClass']['rows'];
+                               var siteRows = data['sites']['rows'];
+                               var dataSet = data['mountDataSets']['rows'];
+                               UserSliceTable(rows,imageData,serviceLevelData,siteRows,dataSet);
+                               if(!(data['publicKey'])){
+                                       $(".public-key-warning").css("display","block");
+                               }
                                var value = $("#tenantSliceDropDown").val();
-                               checkForBasicAdvView(value, data);
+                               checkForBasicAdvView(value,rows,imageData,serviceLevelData,siteRows,dataSet);
                                $("#tooltip").css("display", "none");
                                $("#basic-tooltip").css("display", "none");
                                $("#adv-tooltip").css("display", "none");
index d8c3b70..0f616e5 100644 (file)
@@ -1,63 +1,7 @@
-{% extends "admin/base.html" %}
+{% extends "admin/dashboard/dashboard_base.html" %}
 {% load admin_static %}
 
 {% block content %}
-<link rel="stylesheet"  href="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.0/css/jquery.dataTables.css">
-<link rel="stylesheet" type="text/css" href="{% static 'suit/css/suit.css' %}" media="all">
-<link rel="stylesheet" type="text/css" href="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.0/css/jquery.dataTables_themeroller.css">
-<link rel="stylesheet" type="text/css" href="{% static 'planetstack.css' %}" media="all">
-<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
-
-<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.css" />
-<script src="http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.js"></script>
-
-
-<!-- no need to include jquery here as it's already included by base.html. Including it multiple times will break mtuity statistics. -->
-<!-- src="http://code.jquery.com/jquery-1.9.1.js" -->
-
-<script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
-<script src="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.4/jquery.dataTables.min.js"></script>
-<script type="text/javascript" src="{% static 'log4javascript-1.4.6/log4javascript.js' %}"></script>
-<script src="{% static 'js/Leaflet.MakiMarkers.js' %}" > </script>
-  
-<script>
-  $(function() {
-    $( "#hometabs" ).tabs({active: 0, //event: "mouseover"
-      //collapsible: true
-    });
-  });
-</script>
-<script>
-
-function confirmDialog(title,msg) {
-    var dialog = $('<div>'+msg+'</div>');
-    var def = $.Deferred();
-
-    $(dialog).dialog({
-        resizable: false,
-        title: title,
-        autoOpen: true,
-        modal: true,
-        dialogClass: "dashboard-hpc-sliver",
-        buttons: {
-            'OK': function() {
-                def.resolve();
-                log.debug("Chose to add a sliver");
-                $( this ).dialog( "close" );
-            },
-            'Cancel': function() {
-                def.reject();
-                $( this ).dialog( "close" );
-            }
-        },
-        close: {
-        }
-    });
-    return def.promise();
-}
-
-  </script>
-
 <!-- <div id="hometabs" class="inner-center-column ui-tabs ui-widget ui-widget-content ui-corner-all"> -->
 <div id="hometabs" >
   <ul id="suit_form_tabs" class="nav nav-tabs nav-tabs-suit" data-tab-prefix="suit-tab">
@@ -68,26 +12,10 @@ function confirmDialog(title,msg) {
     <li><a href="#tabs-5">Tenant</a></li>
   </ul>
 <div id="tabs-1">
+{% include "/opt/planetstack/templates/admin/dashboard/developer.html" %}
 </div>
 <div id="tabs-2">
-    <div id="HPCDashboard">
-    <h1>CDN Operations View</h1>
-    <span id="hpcSummary">
-        <span class="summary-attr"><b>Allocated Slivers:</b> <span id="active-slivers-value"> </span> </span>
-        <span class="summary-attr"><b>Bytes Served:</b> <span id="overall-throughput-value"> </span>  </span>
-        <span class="summary-attr-util"><b>Average CPU Utilization:</b> <span id="cpu-utilization-value"> </span>  </span>
-    </span>
-    <div id="map-us" ></div>
-    <div style="line-height: 30%"><br></div><table border=0><tr>
-    <td>Least Loaded&nbsp;&nbsp;</td>
-    <td bgcolor="#0000FF" width=40>&nbsp;</td>
-    <td bgcolor="#00FFFF" width=40>&nbsp;</td>
-    <td bgcolor="#00FF00" width=40>&nbsp;</td>
-    <td bgcolor="#FFFF00" width=40>&nbsp;</td>
-    <td bgcolor="#FF0000" width=40>&nbsp;</td>
-    <td>&nbsp;&nbsp;Most Loaded</td>
-    </tr></table>
-    </div>
+{% include "/opt/planetstack/templates/admin/dashboard/cdnoperations.html" %}
 </div>
 <div id="tabs-3">
 {% include "/opt/planetstack/templates/admin/dashboard/hpc_historical.html" %}
@@ -100,344 +28,4 @@ function confirmDialog(title,msg) {
 </div>
 </div>
 
-<div id="confirmNodeAdded" title="Added Node to Site"><p>Added Node to Site</p></div>
-<div id="confirmNodeRemoved" title="Removed Node from Site"><p>Added Node to Site</p></div>
-<script>
-var oTable;
-var consoleAppender = new log4javascript.BrowserConsoleAppender();
-var patternLayout = new log4javascript.PatternLayout("%d{HH:mm:ss,SSS} %l{s:l} %-5p - %m{1}%n");
-consoleAppender.setLayout(patternLayout);
-
-//var log  = log4javascript.getDefaultLogger();
-var log  = log4javascript.getRootLogger();
-log.addAppender(consoleAppender);
-log.setLevel(log4javascript.Level.ERROR);
-
-function updateUserSliceTable(){
-    log.debug("Should grab user slice info");
-    jQuery.ajax({
-        async:true,
-        dataType: 'json',
-        url: '/hpcdashuserslices',
-        success: function(data){
-            log.info("Got Data back for User SliceTable");
-            //parseData(data);
-            //createUserSliceTable(data);
-            setTimeout(function () { updateUserSliceTable() }, 5000);
-        },
-        error: function(data){
-            log.debug("COULDNT GET DATA BACK");
-            setTimeout(function () { updateUserSliceTable() }, 5000);
-        }
-    });
-}
-
-function createUserSliceTable(data) {
-    log.debug("Creating User Slice Table");
-
-    //Add check for #dynamicusersliceinfo_filter label-> input having focus here
-
-    $('#tabs-1').html( '<table cellpadding="0" cellspacing="0" border="0" class="display" id="dynamicusersliceinfo"></table>' );
-    var actualEntries = [];
-    log.debug(data['userSliceInfo']['rows'][0]['slicename']);
-
-    var rows = data['userSliceInfo']['rows'];
-    for (row in rows) {
-        log.debug(row[0]);
-        slicename = rows[row]['slicename'];
-        sliceid = rows[row]['sliceid'];
-        role = rows[row]['role'];
-        slivercount = rows[row]['slivercount'];
-        sitecount = rows[row]['sitecount'];
-        actualEntries.push(['<a href="http://{{request.get_host}}/admin/core/slice/' + sliceid + '">' + slicename + '</a>',
-                            role, slivercount, sitecount]);
-    }
-    oTable = $('#dynamicusersliceinfo').dataTable( {
-        "bJQueryUI": true,
-        "aaData":  actualEntries ,
-        "bStateSave": true,
-        "aoColumns": [
-            { "sTitle": "Slice" },
-            { "sTitle": "Privilege" , sClass: "alignCenter"},
-            { "sTitle": "Number of Slivers" , sClass: "alignCenter"},
-            { "sTitle": "Number of Sites" , sClass: "alignCenter"},
-        ]
-    } );
-
-    // If the filter had focus, reapply here
-
-    setTimeout(function() {
-       jQuery.ajax({
-           url: '/hpcdashuserslices',
-           dataType: 'json',
-           success: function(data){ createUserSliceTable(data); },
-           complete: function(){ },
-       });
-    },  10000);
-}
-
-function initTable(){
-    log.debug("Initializing Table")
-    jQuery.ajax({
-        url: '/hpcdashuserslices',
-        dataType: 'json',
-        success: function(data){ createUserSliceTable(data); },
-        complete: function(){
-        }
-    });
-    updateUserSliceTable();
-}
-
-
-initTable();
-
-$( "#confirmNodeAdded" ).dialog({ autoOpen: false,
-                    modal: true,
-                    buttons: {
-                        Ok: function() {
-                           $( this ).dialog( "close" );
-                        }
-                    }});
-$( "#confirmNodeRemoved" ).dialog({ autoOpen: false });
-
-L.Map = L.Map.extend({
-    openPopup: function(popup) {
-        this._popup = popup;
-
-        return this.addLayer(popup).fire('popupopen', {
-            popup: this._popup
-        });
-    }
-});
-
-
-//Iterate through data and find the max/min coordinates to include all of our points to start
-var map = L.map('map-us'); //.setView([0, 0], 1);
-map.scrollWheelZoom.disable();
-
-//
-// Great tiles, but starting to occasionally see 403 errors on certain tiles causing grey out effect
-//L.tileLayer('http://{s}.tile.cloudmade.com/BC9A493B41014CAABB98F0471D759707/997/256/{z}/{x}/{y}.png', {
-//
-// Swapping out cloudmade tiles to openstreetmap - too many grey tiles showing
-L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
-    maxZoom: 18,
-    attribution: 'Test'
-}).addTo(map);
-
-var arrayOfLatLngs = [];
-var mapData = {{ cdnData|safe }};
-log.debug( mapData );
-
-for ( var key in mapData ) {
-    arrayOfLatLngs.push([mapData[key]['lat'],mapData[key]['long']]);
-    log.debug( arrayOfLatLngs );
-
-    mapData[key]['marker'] = L.marker([mapData[key]['lat'], mapData[key]['long']], {icon: getIcon(mapData[key]['numNodes'], mapData[key]['numHPCSlivers'], 0, mapData[key]['hot']) });
-    mapData[key]['marker'].addTo(map).bindPopup(setPopupVals(key, mapData[key]));
-
-}
-var bounds = new L.LatLngBounds(arrayOfLatLngs);
-map.fitBounds(bounds);
-
-var popup = L.popup();
-
-
-function setPopupVals (site, siteData) {
-    var retVal = '<span class="SiteDetail"><b>' + site + '</b></span>' + 
-                   '</br><a href="' + siteData['siteUrl'] + '">' + siteData['siteUrl'] + '</a>' + 
-                   '</br><b>HPC Slivers: </b>' + siteData['numHPCSlivers'] + 
-                   '</br><b>Total Nodes: </b>' + siteData['numNodes'] +
-//                   '</br><b>Hot: </b>' + Math.round(siteData['hot']*100) +
-                   '</br><b>Measured Load: </b>' + siteData['load'] + '%' +
-                   '<span id="addSlivers"></br><a href="#" id="addHPCSliver" data-site="' + site + '" data-availNodes="' + siteData['numNodes'] +'">Add HPC Slivers</a> </span>' +
-                   '<span id="remSlivers"><a href="#" id="remHPCSliver" data-site="' + site + '">Remove HPC Slivers</a> </span>';
-
-   return retVal;
-}
-
-$('#map-us').on('click', '#remHPCSliver', function() {
-   
-    $.ajax({
-        url : '/dashboardaddorremsliver/',
-        dataType : 'json',
-        data: {site: $(this).data('site'),
-               actionToDo: "rem",
-               csrfmiddlewaretoken: "{{ csrf_token }}",   // < here 
-               state:"inactive" },
-        type : 'POST',
-        //success: function(response)
-        //{
-         //   alert("Successfully posted request to REMOVE sliver");
-        //},
-        complete:function(){
-            confirmDialog("Info","Removed an HPC Sliver from Site ");
-        },
-        //error:function (xhr, textStatus, thrownError){
-         //   alert("Could not request to remove HPC Sliver");
-        //}
-    });
-});
-
-$('#map-us').on('click', '#addHPCSliver', function() {
-   
-    $.ajax({
-        url : '/dashboardaddorremsliver/',
-        dataType : 'json',
-        data: {site: $(this).data('site'),
-               actionToDo: "add",
-               csrfmiddlewaretoken: "{{ csrf_token }}",   // < here 
-               state:"inactive" },
-        type : 'POST',
-        success: function(response)
-        {
-            //alert("Successfully posted request to add sliver");
-        },
-        complete:function()
-        { 
-            confirmDialog("Info","Added an HPC Sliver to Site ");
-        },
-        //error:function (xhr, textStatus, thrownError){
-         //   alert("error doing something");
-        //}
-    });
-  //  confirmDialog("Add HPC Slivers","Add some HPC Slivers to site " + $(this).data('site'));
-});
-
-function getIcon(numNodes, numHPCSlivers, currentBW, hot) {
-    //var colorChoices = ["#007FFF", "#0000FF", "#7f00ff", "#FF00FF", "#FF007F", "#FF0000"];
-    var colorChoices = ["#0000FF", "#00FFFF", "#00FF00", "#FFFF00", "#FF0000"];
-
-    var ratio = hot * 100; //(numHPCSlivers/numNodes) * 100;
-    var numColors = colorChoices.length;
-    var colorBands = 100/numColors;
-
-    //Algorithm for color tone should consider the number of available nodes
-    // on the site, and then how much the current dedicated nodes are impacted
-    //var iconColor = 0;
-    var iconColor = colorChoices.length-1;
-    for (colorBand = 0; colorBand < numColors; colorBand ++) {
-        if (ratio < colorBands * colorBand+1) {
-            iconColor = colorBand
-            break;
-        }
-    }
-
-    if (numHPCSlivers < 1) {
-        iconColor = "#7F7F7F";
-    } else {
-        iconColor = colorChoices[iconColor];
-    }
-
-    var icon = L.MakiMarkers.icon({icon: "star-stroked", color: iconColor , size: "s"});
-    return icon;
-}
-
-function updateMaps() {
-    log.debug("Attempting to update Maps");
-    $.ajax({
-    url : '/hpcdashboard',
-    dataType : 'json',
-    type : 'GET',
-    success: function(newData)
-    {
-        log.debug("Successfully got data back...");
-        log.debug(newData);
-        log.debug("Still have old data too");
-        log.debug(mapData);
-        updateMapData(newData);
-    }
-});
-    setTimeout(updateMaps, 30000)
-
-}
-
-function updateMapData(newData) {
-    for ( site in newData ) {
-        var isNewSite = false;
-        //check to see if the site is new or not
-        if (site in mapData) {
-            log.debug("Site " + site + " already mapped");
-            //take ownership of marker
-            newData[site]['marker'] = mapData[site]['marker'];
-            delete mapData[site];
-            newData[site]['marker'].setIcon(getIcon(newData[site]['numNodes'], newData[site]['numHPCSlivers'],  0, newData[site]['hot']));
-            // workaround, markers currently don't have a setPopup Content method -- so have to grab object directly
-            newData[site]['marker']._popup.setContent(setPopupVals(site, newData[site]));
-        }
-        else {
-            isNewSite = true;
-            log.debug("New Site detected: " + site);
-            newData[site]['marker'] = L.marker([newData[site]['lat'], newData[site]['long']], 
-                                              {icon: getIcon(newData[site]['numNodes'], newData[site]['numHPCSlivers'],  0, newData[site]['hot']) });
-            newData[site]['marker'].addTo(map).bindPopup(setPopupVals(site, newData[site])); //.openPopup();
-            log.debug("Should have added the new site");
-
-        }
-    }
-
-    // Anything still in data needs to be removed since it is no longer a valid site
-    for (remSite in mapData) {
-        log.warn("Site: " + remSite + " is no longer valid, removing from map");
-        map.removeLayer(data[remSite]['marker']);
-    }
-    mapData = newData;
-}
-
-function onMapClick(e) {
-    popup
-    .setLatLng(e.latlng)
-    .setContent("You clicked the map at " + e.latlng.toString())
-    .openOn(map);
-}
-
-setTimeout(updateMaps, 5000)
-
-// from stackexchange
-function setInnerText (elementId, text) {
-    var element;
-    if (document.getElementById) {
-        element = document.getElementById(elementId);
-    } else if (document.all) {
-        element = document.all[elementId];
-    }
-    if (element) {
-        if (typeof element.textContent != 'undefined') {
-            element.textContent = text;
-        } else if (typeof element.innerText != 'undefined') {
-            element.innerText = text;
-        } else if (typeof element.removeChild != 'undefined') {
-            while (element.hasChildNodes()) {
-                element.removeChild(element.lastChild);
-            }
-            element.appendChild(document.createTextNode(text)) ;
-        }
-    }
-}
-
-function updateLabelData(summaryData) {
-    setInnerText("active-slivers-value", summaryData["total_slivers"]);
-    setInnerText("overall-throughput-value", (summaryData["total_bandwidth"]*8/1024/1024/1024).toFixed(2) + " Gbps");
-    setInnerText("cpu-utilization-value", summaryData["average_cpu"] + "%");
-}
-
-function updateLabels() {
-    log.debug("Attempting to update Labels");
-    $.ajax({
-    url : '/hpcsummary',
-    dataType : 'json',
-    type : 'GET',
-    success: function(newData)
-    {
-        updateLabelData(newData);
-    }
-});
-    setTimeout(updateLabels, 30000)
-
-}
-
-setTimeout(updateLabels, 5000)
-               
-
-</script>
 {% endblock %}
index 072f73b..b04f842 100644 (file)
   <div class="submit-row">
     <input type="submit" class="btn btn-info" value="{% trans 'SIGN IN' %}" />
   </div>
+{% url 'django-admindocs-docroot' as docsroot %}
+                  {% if docsroot %}
+<div class="createAccountLink"><a href="{{ docsroot }}">{% trans 'Request a new Account' %}</a></div>
 
-<div class="forgotLink"><a href="{{ password_reset_url }}">{% trans 'Forgot password?' %}</a></div><div class="createAccountLink"><a href="#">{% trans 'Create an Account' %}</a></div>
+                  {% endif %}
 </form>
-
 <script type="text/javascript">
 document.getElementById('id_username').focus()
 </script>
index 1c6d661..af08427 100644 (file)
@@ -1,9 +1,14 @@
+{% load admin_static %}
+
+{% if not DISABLE_MINIDASHBOARD %}
+
 <div id="newMiniDashboard">
     <div class="hide" id="selectedMainNav">{{ opts.verbose_name_plural|capfirst }}</div>
     <div class="hide" id="currentOriginalNode">{{ original|truncatewords:"18" }}</div>
+    <div class="hide" id="minidashStatus"></div>
     <div class="miniDashPair">
         <button type="button" name="nodeCount" id="miniDashNodeCount" class="minidashbutton">--</button>
-        <label for="nodeCount" id="miniDashNodeCountLabel">Node Count</label>
+        <label for="nodeCount" id="miniDashNodeCountLabel">Active Nodes</label>
     </div>
     <div class="miniDashPair">
         <button type="button" name="avgLoad" id="miniDashAvgLoad" class="minidashbutton">--</button>
@@ -29,6 +34,8 @@
 <div id="avgLoadGraph" ></div>
 </div>
 
+<script src="{% static 'page_analytics.js' %}"></script>
+
 <script>
 /** If the analytics have already been set -- read them in on page load **/
 if (typeof window != "undefined") {
@@ -44,7 +51,6 @@ $( "#miniDashNodeCount" ).click(function() {
     $( "#nodeCountGraph" ).html(loadingDiv);
     $( "#nodeCountDialog" ).dialog("open");
     var options = {"title": "Node Count", "vAxis": {"title": "Number of Nodes", "minValue": 0, "maxValue": 250}};
-    console.log(window.pageAnalyticsUrl);
     renderChart(true,"#nodeCountDialog", "#nodeCountGraph", window.pageAnalyticsUrl, 0, 2, google.visualization.data.sum, options);
     });
 
@@ -66,3 +72,4 @@ $( "#miniDashAvgLoad" ).click(function() {
 
 </script>
 
+{% endif %}
diff --git a/planetstack/templates/admin/request_account.html b/planetstack/templates/admin/request_account.html
new file mode 100644 (file)
index 0000000..e69de29
index b3193f4..55d2467 100644 (file)
@@ -10,6 +10,8 @@ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "planetstack.settings")
 from openstack.manager import OpenStackManager
 from core.models import Slice, Sliver, ServiceClass, Reservation, Tag, Network, User, Node, Image, Deployment, Site, NetworkTemplate, NetworkSlice
 
+slice_name_map = {}
+
 def ps_id_to_pl_id(x):
     # Since we don't want the PlanetStack object IDs to conflict with existing
     # PlanetLab object IDs in the CMI, just add 100000 to the PlanetStack object
@@ -20,12 +22,15 @@ def pl_id_to_ps_id(x):
     return x - 100000
 
 def pl_slice_id(slice):
-    if slice.name == "princeton_vcoblitz":
+    if slice.name.startswith("princeton_vcoblitz"):
         # 70 is the slice id of princeton_vcoblitz on vicci
         return 70
     else:
         return ps_id_to_pl_id(slice.id)
 
+def ps_slicename_to_pl_slicename(x):
+    return slice_name_map.get(x,x)
+
 def filter_fields(src, fields):
     dest = {}
     for (key,value) in src.items():
@@ -51,7 +56,7 @@ def GetSlices(filter={}):
                  "slice_tag_ids": [],
                  "peer_id": None,
                  "site_id": ps_id_to_pl_id(ps_slice.site_id),
-                 "name": ps_slice.name}
+                 "name": ps_slicename_to_pl_slicename(ps_slice.name)}
 
                  # creator_person_id, person_ids, expires, created
 
@@ -159,6 +164,22 @@ def GetInterfaces(slicename, node_ids):
                 interfaces.append(interface)
     return interfaces
 
+def find_multi_slicename(orig_slicename):
+    """
+         Because we sometimes have issues deleting a slice in planetstack and
+         creating a new one, allow us to use a prefix match, that way someone
+         can put a version number of the end of the slicename
+    """
+    global slice_name_map
+    slices = Slice.objects.filter()
+    for slice in slices:
+        if slice.name.startswith(orig_slicename):
+            slice_name_map[slice.name] = orig_slicename
+            return slice.name
+
+    return orig_slicename
+
+
 def GetConfiguration(name):
     slicename = name["name"]
     if "node_id" in name:
@@ -166,6 +187,8 @@ def GetConfiguration(name):
     else:
         node_id = 0
 
+    slicename = find_multi_slicename(slicename)
+
     node_sliver_tags = GetTags(slicename, node_id)
 
     slices = GetSlices({"name": slicename})
@@ -215,11 +238,13 @@ def GetConfiguration(name):
             'nodes': nodes}
 
 if __name__ == '__main__':
+    find_multi_slicename("princeton_vcoblitz")  # set up the mapping for princeton_vcoblitz2 -> princeton_vcoblitz
+
     slices = GetSlices()
     nodes = GetNodes()
 
     if ("-d" in sys.argv):
-        config = GetConfiguration({"name": "princeton_coblitz"})
+        config = GetConfiguration({"name": "princeton_vcoblitz"})
         print config
         print slices
         print nodes
index 4fc1374..7fdfbdd 100644 (file)
@@ -1,8 +1,5 @@
 """
-    Basic Sliver Test
-
-    1) Create a slice1
-    2) Create sliver1 on slice1
+    Generates billing sample data
 """
 
 import datetime
@@ -14,6 +11,10 @@ import random
 import sys
 import time
 
+# The granularity at which the charge collection system collects charges. Once
+# per hour makes for a very slow UI, so I upped it to once per 8 hours.
+CHARGE_HOURS = 8
+
 MINUTE_SECONDS = 60
 HOUR_SECONDS = MINUTE_SECONDS * 60
 DAY_SECONDS = HOUR_SECONDS * 24
@@ -86,34 +87,42 @@ def generate_payments(account):
              payment = Payment(account=account, amount=invoice.amount, date=payment_time)
              payment.save()
 
+print "deleting old stuff"
+
 delete_all(Invoice)
 delete_all(Charge)
 delete_all(Payment)
 delete_all(Account)
 delete_all(UsableObject)
 
+print "creating accounts"
+
 for site in Site.objects.all():
     # only create accounts for sites where some slices exist
     if len(site.slices.all()) > 0:
         account = Account(site=site)
         account.save()
 
+print "generating charges"
+
 for slice in Slice.objects.all():
     site = slice.site
     account = site.accounts.all()[0]
     serviceClass =slice.serviceClass
 
-    if not (slice.name in ["DnsRedir", "DnsDemux", "HyperCache"]):
+    if not (slice.name in ["DnsRedir", "DnsDemux", "HyperCache", "Hadoop", "Owl", "Stork", "Syndicate", "test-slice-1", "test-slice-2", "test", "test2"]):
         continue
 
+    print "   generating charges for", slice.name
+
     now = int(time.time())/HOUR_SECONDS*HOUR_SECONDS
 
     charge_kind=None
     for resource in slice.serviceClass.resources.all():
-        if resource.name == "cpu.cores":
+        if resource.name == "numberCores":
             charge_kind = "reservation"
             cost = resource.cost
-        elif (resource.name == "cycles") or (resource.name == "Cycles"):
+        elif (charge_kind==None) and (resource.name == "cycles") or (resource.name == "Cycles"):
             charge_kind = "besteffort"
             cost = resource.cost
 
@@ -121,15 +130,17 @@ for slice in Slice.objects.all():
         print "failed to find resource for", slice.serviceClass
         continue
 
-    for sliver in slice.slivers.all():
+    for sliver in slice.slivers.all()[:4]:    # only do up to 4 slivers; it's way too much data otherwise
         hostname = sliver.node.name
-        for i in range(now-MONTH_SECONDS, now, HOUR_SECONDS):
+        for i in range(now-MONTH_SECONDS, now, CHARGE_HOURS*HOUR_SECONDS):
             if charge_kind == "besteffort":
-                core_hours = random.randint(1,60)/100.0
+                core_hours = random.randint(20,60)/100.0
             else:
                 core_hours = 1
 
-            amount = core_hours * cost
+            core_hours = core_hours * CHARGE_HOURS
+
+            amount = float(core_hours * cost) / 100.0
 
             object = get_usable_object(hostname)
 
@@ -138,6 +149,8 @@ for slice in Slice.objects.all():
             charge = Charge(account=account, slice=slice, kind=charge_kind, state="pending", date=date, object=object, coreHours=core_hours, amount=amount)
             charge.save()
 
+print "doing invoices and payments"
+
 for account in Account.objects.all():
     generate_invoices(account)
     generate_payments(account)
diff --git a/planetstack/uwsgi/planetstack.ini b/planetstack/uwsgi/planetstack.ini
new file mode 100644 (file)
index 0000000..c712568
--- /dev/null
@@ -0,0 +1,14 @@
+[uwsgi]
+chdir = /opt/planetstack
+module = planetstack.wsgi:application
+env = DJANGO_SETTINGS_MODULE=planetstack.settings
+socket = /var/run/planestack.uwsgi.sock
+socket = 127.0.0.1:9001
+http = 128.112.139.48:9002
+stats = 127.0.0.1:9003
+workers = 3
+master = true
+processes = 8 
+#--uid=1000 --gid=2000
+harakiri = 20
+daemonize=/var/log/uwsgi/planetstack.log 
index 267f282..a250b29 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -19,7 +19,7 @@ setup(name='planetstack',
       description='PlanetStack',
       scripts=['planetstack/planetstack-backend.py'],
       data_files=[
-        ('/etc/planetstack/', ['planetstack/plstackapi_config', 'planetstack/deployment_auth.py']),
+        ('/etc/planetstack/', ['planetstack/plstackapi_config']),
         ('/lib/systemd/system/', ['planetstack/redhat/planetstack-backend.service']),
         ])