     ] dip write-gadget ;
 
 ! Stream utilities
-M: pack dispose drop ;
-
-M: paragraph dispose drop ;
 
 : gadget-write ( string gadget -- )
     swap dup empty?
     [ 2drop ] [ <label> monospace-font >>font add-gadget drop ] if ;
 
-M: pack stream-write gadget-write ;
+M: pack pane-write gadget-write ;
 
 : gadget-bl ( style stream -- )
     swap " " <word-break-gadget> style-label add-gadget drop ;
 
-M: paragraph stream-write
+M: paragraph pane-write
     swap " " split
     [ H{ } over gadget-bl ] [ over gadget-write ] interleave
     drop ;
 
 : gadget-write1 ( char gadget -- )
-    [ 1string ] dip stream-write ;
-
-M: pack stream-write1 gadget-write1 ;
-
-M: paragraph stream-write1
+    [ 1string ] dip pane-write ;
+
+M: pack pane-write1 gadget-write1 ;
+
+M: paragraph pane-write1
     over CHAR: \s =
     [ H{ } swap gadget-bl drop ] [ gadget-write1 ] if ;
 

    [ [ empty-output? ] 2keep ] dip
    '[ _ _ swap <styled-label> _ swap add-gadget drop ] unless ;

M: pack stream-format
    gadget-format ;

M: paragraph stream-format
    over { presented image-style } [ swap key? ] with any? [
        gadget-format
    ] [

: smash-pane ( pane -- gadget )
    [ pane-nl ] [ output>> smash-line ] bi ;

GENERIC: pane-write ( str gadget -- )
GENERIC: pane-write1 ( char gadget -- )
GENERIC: pane-format ( str style gadget -- )

M: pane pane-write
    [ pane-nl ] [ current>> pane-write ]
    bi-curry interleave ;

M: pane pane-format
    [ nip pane-nl ] [ current>> pane-format ]
    bi-curry bi-curry interleave ;

: do-pane-stream ( pane-stream quot -- )
