 M: image-name cell-dim nip image-dim first2 image-padding ;
 M: image-name draw-cell nip draw-image ;
 
-: table-rows ( table -- rows )
-    [ control-value ] [ renderer>> ] bi '[ _ row-columns ] map ;
-
-: update-table-rows ( table -- )
-    [ table-rows ] [ rows<< ] bi ; inline
-
 : column-offsets ( widths gap -- x xs )
     [ 0 ] dip '[ _ + + ] accumulate ;
 

    [ [ + ] change-nth ] [ 3drop ] if ;

M: table layout*
    [ update-table-rows ]
    [ update-cached-widths ]
    [ update-filled-column ] tri ;

: row-rect ( table row -- rect )
    [ [ line-height ] dip * 0 swap 2array ]

    [ model>> value>> ] [ renderer>> ] bi
    '[ _ row-value? ] with find drop ;

: update-table-rows ( table -- )
    [
        [ control-value ] [ renderer>> ] bi
        '[ _ row-columns ] map
    ]
    [ rows<< ] bi ; inline

: update-selection ( table -- )
    [
        {
