diff --git a/beat/web/backend/api.py b/beat/web/backend/api.py
index 959f91a31a591a5322ea25708aaaf1b6bce58e1f..3316674a7c0da0e5cc4f3d956727c3525414b393 100644
--- a/beat/web/backend/api.py
+++ b/beat/web/backend/api.py
@@ -124,11 +124,11 @@ def scheduler(request):
                 data['workers'][name]['db_status'] = 'Inactive'
                 data['workers'][name]['info'] = 'Worker temporarily deactivated'
 
-            elif data['workers'][name]['cores'] != worker.nb_cores:
+            elif data['workers'][name]['cores'] != worker.cores:
                 data['workers'][name]['db_status'] = 'Mismatch'
                 data['workers'][name]['info'] = \
                         'Number of cores differs (db: %d, scheduler: %d)' % \
-                        (data['workers'][name]['cores'], worker.nb_cores)
+                        (data['workers'][name]['cores'], worker.cores)
             else:
                 data['workers'][name]['db_status'] = 'Active'
                 data['workers'][name]['info'] = 'Worker is declared and active'
@@ -169,7 +169,7 @@ def scheduler(request):
             slots = {}
             for slot in db_queue.slots.iterator():
                 if slot.worker.active:
-                    slots[slot.worker.name] = slot.nb_slots
+                    slots[slot.worker.name] = slot.quantity
 
             environments = []
             for environment in db_queue.environments.filter(active=True):
@@ -181,7 +181,7 @@ def scheduler(request):
             compare = {
                 'memory-in-megabytes':   db_queue.memory_limit,
                 'time-limit-in-minutes': db_queue.time_limit,
-                'nb-cores-per-slot':     db_queue.nb_cores_per_slot,
+                'nb-cores-per-slot':     db_queue.cores_per_slot,
                 'max-slots-per-user':    db_queue.max_slots_per_user,
                 'slots':                 slots,
                 'environments':          environments,
@@ -218,7 +218,7 @@ def scheduler(request):
         slots = {}
         for slot in db_queue.slots.iterator():
             if slot.worker.active:
-                slots[slot.worker.name] = slot.nb_slots
+                slots[slot.worker.name] = slot.quantity
 
         environments = []
         for environment in db_queue.environments.filter(active=True):
@@ -234,7 +234,7 @@ def scheduler(request):
             'status':                'Active',
             'memory-in-megabytes':   db_queue.memory_limit,
             'time-limit-in-minutes': db_queue.time_limit,
-            'nb-cores-per-slot':     db_queue.nb_cores_per_slot,
+            'nb-cores-per-slot':     db_queue.cores_per_slot,
             'max-slots-per-user':    db_queue.max_slots_per_user,
             'slots':                 slots,
             'total-slots':           db_queue.total_slots(),
@@ -585,10 +585,12 @@ def block_finished(request):
             algorithm = beat.core.algorithm.Algorithm(settings.PREFIX,
                     block.algorithm.fullname())
             for field, value in output_data.as_dict().items():
-                result_entry         = Result()
-                result_entry.cache   = block.first_cache()
+                cached_file = block.first_cache()
+                result_entry, created = Result.objects.get_or_create(
+                    name=field,
+                    cache=cached_file,
+                    )
                 result_entry.primary = algorithm.results[field]['display']
-                result_entry.name    = field
                 result_entry.type    = algorithm.results[field]["type"]
 
                 if result_entry.type in ['int32', 'float32', 'bool', 'string']:
diff --git a/beat/web/backend/models.py b/beat/web/backend/models.py
index 368223bb0974ff1d64048fcf86ff34c9b9222305..1a30579e4a5012332e852b0f95741177015dd2a7 100644
--- a/beat/web/backend/models.py
+++ b/beat/web/backend/models.py
@@ -303,6 +303,20 @@ class Queue(models.Model):
         return [w[0] for w in workers]
 
 
+    def as_json(self):
+        return {
+            'memory-in-megabytes': self.memory_limit,
+            'time-limit-in-minutes': self.time_limit,
+            'nb-cores-per-slot':     self.cores_per_slot,
+            'max-slots-per-user':    self.max_slots_per_user,
+            'environments': map(lambda x: {
+                    'name':    x.name,
+                    'version': x.version,
+                }, self.environments.filter(active=True)),
+            'slots': dict([(x.worker.name, x.quantity) for x in self.slots.iterator() if x.worker.active]),
+        }
+
+
 class SlotManager(models.Manager):
 
     def get_by_natural_key(self, queue_name, worker_name):