anchor.diff:    (loop for fn in *synergy-list*
        nconc (funcall fn segment-list-left segment-list-right)))
   
  -(defun find-best-path^2 (segment-lists &key (limit 5))
  -  "same as find-best-path but operates on segment-lists and uses synergies"
  +(defun find-best-path (segment-lists &key (limit 5))
  +  "generalized version of old find-best-path that operates on segment-lists and uses synergies"
     (let ((top (make-instance 'top-array :limit limit)))
       (register-item top 0 nil)
   
       (dolist (segment-list segment-lists)
         (setf (segment-list-top segment-list) (make-instance 'top-array :limit limit)))
   
  +    ;;assume segments are sorted by (start, end) (as is the result of find-substring-words)
       (loop for (seg1 . rest) on segment-lists
            for score1 = (get-segment-score seg1)
          when (> score1 0) do 
  
positive.code:                                       :score ,score)
                          (make-segment-list-from ,segment-list-left ,left)))))))))
  
  
  (defparameter *synergy-list* nil)
  
  (defun filter-is-noun (segment)
  
negative.code:     (loop for tai across (get-array top)
           collect (cons (reverse (tai-payload tai)) (tai-score tai)))))
  
  (defun find-best-path* (segment-lists &key (limit 5))
    "convert find-best-path results to single word format"
    (let ((result (find-best-path segment-lists :limit limit)))
      (dolist (item result result)
        (setf (car item)
              (mapcan (lambda (obj)
  