         onChange = (event) =>
             value = event.target.value.split ','
             if value.length is 2
-                known = _.clone @state.known
-                known.push(MessageUtils.parseAddress value[0])
-                @props.valueLink.requestChange known
-                @setState unknown: value[1].trim()
-            else
-                @setState unknown: event.target.value
+                @setState
+                    known: MessageUtils.parseAddress value[0]
+                    unknown: value[1].trim()
+            else
+                @setState
+                    unknown: event.target.value
 
         onInput = (event) =>
             input = @refs.contactInput.getDOMNode()


    _setStateFromStores: -> @setState @getStateFromStores()

    shouldComponentUpdate: (nextProps, nextState) ->
        return not(_.isEqual(nextState, @state)) or
            not (_.isEqual(nextProps, @props))

    render: ->
        renderTag = (address, idx) =>
            remove = =>
                known = @state.known.filter (a) ->
                    return a.address isnt address.address
                @props.valueLink.requestChange known

            onDragStart = (event) =>
                event.stopPropagation()

                    event.dataTransfer.setData @props.id, true

            onDragEnd = (event) ->
                remove() if event.dataTransfer.dropEffect is 'move'

            if address.name? and address.name.trim() isnt ''
                display = address.name
