         #log "Container #{name} already exists, skipping..."
         # @TODO check if this container has dependents or not...
         logAction name, "already exists - running in case of dependents"
-        return command.container.start callback
+        return isRunning command.container, (err, running) ->
+          return command.container.start callback if not running
+
+          # container exists AND is running - stop, restart
+          return command.container.stop (err) ->
+            command.container.start callback
 
       logAction name, "creating..."
 

      if not containerDetails[dependency]
        containerDetails[dependency] = config.containers[dependency]

  depTree = new DepTree
  for name, details of containerDetails
    depTree.add name, details.dependencies
    # @NOTE while we're here, work out the longest name in the cluster (dirty)
    maxNameLength = name.length if name.length > maxNameLength

  list = (containerDetails[item] for item in depTree.resolve())


      container.stop callback

    resolveOrder @config, cluster, (list) ->
      async.eachSeries list, fetchIterator, (err) ->
        throw err if err
        async.eachSeries commands, createIterator, (err) ->
          throw err if err
          # @FIXME hack to avoid ghosts with quick start/stop combos
          setTimeout ->
            async.eachLimit list, 5, stopIterator, done
