 
 InputOutputComponent = React.createClass
   displayName: 'InputOutputComponent'
+  mixins: [React.addons.PureRenderMixin]
   render: ->
-    React.DOM.div {className: 'io'}, @props.input_cell?.component, @props.output_cell?.component
+    React.DOM.div {className: 'io'},
+      @props.input_cell?.component cell: @props.input_cell, key: @props.input_cell.key
+      @props.output_cell?.component cell: @props.output_cell, key: @props.output_cell.key
 
 DocumentComponent = React.createClass
   displayName: 'DocumentComponent'

    cell.notebook.cell_focused.push cell
  , 0

OutputCellComponent = React.createIdentityClass
  displayName: 'OutputCellComponent'
  mixins: [React.ObservableMixin, React.addons.PureRenderMixin]
  get_observable: -> @props.cell.component_model

    editor_changes: Editor.as_event_stream editor, 'change'

  editor.lead_cell = cell
  cell.component = InputCellComponent

  # scan changes for the side effect in recompile
  # we have to subscribe so that the events are sent
