                 @setState(obj)
         else
             # change or add cell
-            current = cells.get(id)
-            if record.equals(current)
+            old_cell = cells.get(id)
+            if new_cell.equals(old_cell)
                 return # nothing to do
-            obj = {cells: cells.set(id, record)}
-            if not current? or current.get('pos') != record.get('pos')
+            obj = {cells: cells.set(id, new_cell)}
+            if not old_cell? or old_cell.get('pos') != new_cell.get('pos')
                 cell_list_needs_recompute = true
             @setState(obj)
-            if @_is_project and record.get('state') == 'start'
-                @project_run_cell(id)
+        if @_is_manager
+            @manage_on_cell_change(id, new_cell, old_cell)
         return cell_list_needs_recompute
 
     _syncdb_change: (changes) =>
+        do_init = @_is_manager and not @store.get('cells')?
         #console.log 'changes', changes, changes?.toJS()
-        #@_client.dbg("_syncdb_change")(JSON.stringify(changes?.toJS()))
+        #@dbg("_syncdb_change")(JSON.stringify(changes?.toJS()))
         @set_has_unsaved_changes()
         cell_list_needs_recompute = false
         changes?.forEach (key) =>

            @setState(cell_list : cell_list)
        return

    _syncdb_cell_change: (id, record) =>
        cells = @store.get('cells') ? immutable.Map()
        cell_list_needs_recompute = false
        #@_client.dbg("_syncdb_cell_change")("#{id} #{JSON.stringify(record?.toJS())}")
        if not record?
            # delete cell
            if cells?.get(id)?
                obj = {cells: cells.delete(id)}
                cell_list = @store.get('cell_list')
                if cell_list?

        cur_id = @store.get('cur_id')
        if not cur_id? or not @store.getIn(['cells', cur_id])?
            @set_cur_id(@store.get('cell_list')?.get(0))

        if do_init
            @initialize_manager()

    ensure_there_is_a_cell: =>
        cells = @store.get('cells')
