diff --git a/extra/io/launcher/launcher.factor b/extra/io/launcher/launcher.factor
index e9fbdaea62..e8eb973e34 100755
--- a/extra/io/launcher/launcher.factor
+++ b/extra/io/launcher/launcher.factor
@@ -221,3 +221,9 @@ M: duplex-stream underlying-handle
     [ in>> underlying-handle ]
     [ out>> underlying-handle ] bi
     [ = [ "Invalid duplex stream" throw ] when ] keep ;
+
+M: encoder underlying-handle
+    stream>> underlying-handle ;
+
+M: decoder underlying-handle
+    stream>> underlying-handle ;
diff --git a/extra/ui/ui.factor b/extra/ui/ui.factor
index e864d39f39..7aca45a210 100755
--- a/extra/ui/ui.factor
+++ b/extra/ui/ui.factor
@@ -41,8 +41,9 @@ SYMBOL: stop-after-last-window?
     windows global [ [ first = not ] with filter ] change-at ;
 
 : raised-window ( world -- )
-    windows get-global [ second eq? ] with find drop
-    windows get-global [ length 1- ] keep exchange ;
+    windows get-global
+    [ [ second eq? ] with find drop ] keep
+    [ nth ] [ delete-nth ] [ nip ] 2tri push ;
 
 : focus-gestures ( new old -- )
     drop-prefix <reversed>
diff --git a/extra/windows/com/wrapper/wrapper.factor b/extra/windows/com/wrapper/wrapper.factor
old mode 100644
new mode 100755
index 7f63f529a6..ae5f03a594
--- a/extra/windows/com/wrapper/wrapper.factor
+++ b/extra/windows/com/wrapper/wrapper.factor
@@ -29,7 +29,7 @@ unless
             >r find-com-interface-definition family-tree
             r> 1quotation [ >r iid>> r> 2array ] curry map
         ] map-index concat
-        [ f ] add ,
+        [ f ] prefix ,
         \ case ,
         "void*" heap-size
         [ * rot <displaced-alien> com-add-ref 0 rot set-void*-nth S_OK ]
@@ -99,7 +99,7 @@ unless
 PRIVATE>
 
 : <com-wrapper> ( implementations -- wrapper )
-    (make-vtbls) f com-wrapper construct-boa ;
+    (make-vtbls) f com-wrapper boa ;
 
 M: com-wrapper dispose
     t >>freed?