                    (one-by-one attrs
                      (fn [x] (let [column (attrib-cols x)]
                                (!! table :set-index-at 0 column x))))
-                 )))
+                   (one-by-one objs
+                     (fn [x] (let [row (object-rows x)]
+                               (!! table :set-index-at row 0 x))))
+                   (one-by-one attrs
+                     (fn [a] (one-by-one objs
+                               (fn [o] 
+                                 (let [ row (object-rows o)
+                                        column (attrib-cols a)]
+                                   (!! table :set-index-at row column 
+                                     (get-cross o a))))))))))
 
            
 

                             current-name (object-rows model-row)]
                        (if (= contents current-name) current-name
                          (change-object-name model-row contents)))
                      true contents)
                    other-widgets (filter
                                    (fn [w] (not= (w :table) table))
                                    @assoc-widgets)]

    widget   _the widget object where the paste operation takes place
    old-rows _the number of rows that were present in the table before
    new-rows _the number of rows that will be needed for the paste"
             [table old-rows new-rows]
             (let [ other-widgets (filter
                                    (fn [w] (not= (w :table) table))
                                    @assoc-widgets)]
               (do
                 (one-by-one other-widgets
                   (fn [w] (!!!! (w :table) :extend-rows-to new-rows)))
                 (one-by-one (range old-rows new-rows)
                   (fn [x] (!! table :set-index-at x 0 "new object"))))))

           extend-columns-hook
           (fn-doc "This hook is called when the number of columns is extended
