   reconstrain: (other, constraint) ->
     return unless other.operation && constraint.operation
     if compared = @compare(other.operation, constraint.operation)
-      if compared != true || !@resuggest(other.operation, constraint.operation)
-        @unconstrain(other)
+      if compared != true || !(suggested = @resuggest(other.operation, constraint.operation))
+        @unconstrain(other, undefined, true)
         return
       else
         return true

    #  for constraint in stack
    #    @addConstraint constraint

  unconstrain: (constraint, continuation) ->
    for path in constraint.paths
      if typeof path == 'string'
        if group = @paths[path]

        for group, index in separated
          ops = []
          for constraint, index in group
            @unconstrain constraint, undefined, true
            if constraint.operation
              ops.push constraint.operation
          if ops.length
