diff --git a/basis/alarms/alarms-docs.factor b/basis/alarms/alarms-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/alarms/alarms-tests.factor b/basis/alarms/alarms-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/alarms/alarms.factor b/basis/alarms/alarms.factor
old mode 100755
new mode 100644
diff --git a/basis/alias/alias.factor b/basis/alias/alias.factor
old mode 100755
new mode 100644
diff --git a/basis/alien/arrays/arrays-docs.factor b/basis/alien/arrays/arrays-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/alien/c-types/c-types-docs.factor b/basis/alien/c-types/c-types-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/alien/c-types/c-types-tests.factor b/basis/alien/c-types/c-types-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/alien/c-types/c-types.factor b/basis/alien/c-types/c-types.factor
old mode 100755
new mode 100644
diff --git a/basis/alien/remote-control/remote-control.factor b/basis/alien/remote-control/remote-control.factor
old mode 100755
new mode 100644
diff --git a/basis/alien/strings/strings.factor b/basis/alien/strings/strings.factor
old mode 100755
new mode 100644
diff --git a/basis/alien/structs/structs-docs.factor b/basis/alien/structs/structs-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/alien/structs/structs.factor b/basis/alien/structs/structs.factor
old mode 100755
new mode 100644
diff --git a/basis/alien/syntax/syntax-docs.factor b/basis/alien/syntax/syntax-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/alien/syntax/syntax.factor b/basis/alien/syntax/syntax.factor
old mode 100755
new mode 100644
diff --git a/basis/ascii/ascii-docs.factor b/basis/ascii/ascii-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ascii/ascii.factor b/basis/ascii/ascii.factor
old mode 100755
new mode 100644
diff --git a/basis/bit-arrays/bit-arrays-tests.factor b/basis/bit-arrays/bit-arrays-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/bit-arrays/bit-arrays.factor b/basis/bit-arrays/bit-arrays.factor
old mode 100755
new mode 100644
diff --git a/basis/bit-vectors/bit-vectors-docs.factor b/basis/bit-vectors/bit-vectors-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/bit-vectors/bit-vectors-tests.factor b/basis/bit-vectors/bit-vectors-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/bit-vectors/bit-vectors.factor b/basis/bit-vectors/bit-vectors.factor
old mode 100755
new mode 100644
diff --git a/basis/bootstrap/compiler/compiler.factor b/basis/bootstrap/compiler/compiler.factor
old mode 100755
new mode 100644
diff --git a/basis/bootstrap/handbook/handbook.factor b/basis/bootstrap/handbook/handbook.factor
old mode 100755
new mode 100644
diff --git a/basis/bootstrap/help/help.factor b/basis/bootstrap/help/help.factor
old mode 100755
new mode 100644
diff --git a/basis/bootstrap/image/image-tests.factor b/basis/bootstrap/image/image-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/bootstrap/image/image.factor b/basis/bootstrap/image/image.factor
old mode 100755
new mode 100644
diff --git a/basis/bootstrap/image/upload/upload.factor b/basis/bootstrap/image/upload/upload.factor
old mode 100755
new mode 100644
diff --git a/basis/bootstrap/io/io.factor b/basis/bootstrap/io/io.factor
old mode 100755
new mode 100644
diff --git a/basis/bootstrap/random/random.factor b/basis/bootstrap/random/random.factor
old mode 100755
new mode 100644
diff --git a/basis/bootstrap/stage2.factor b/basis/bootstrap/stage2.factor
old mode 100755
new mode 100644
diff --git a/basis/bootstrap/tools/tools.factor b/basis/bootstrap/tools/tools.factor
old mode 100755
new mode 100644
diff --git a/basis/bootstrap/ui/tools/tools.factor b/basis/bootstrap/ui/tools/tools.factor
old mode 100755
new mode 100644
diff --git a/basis/bootstrap/unicode/unicode.factor b/basis/bootstrap/unicode/unicode.factor
old mode 100755
new mode 100644
diff --git a/basis/boxes/boxes-docs.factor b/basis/boxes/boxes-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/boxes/boxes-tests.factor b/basis/boxes/boxes-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/boxes/boxes.factor b/basis/boxes/boxes.factor
old mode 100755
new mode 100644
diff --git a/basis/calendar/calendar-tests.factor b/basis/calendar/calendar-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/calendar/calendar.factor b/basis/calendar/calendar.factor
old mode 100755
new mode 100644
diff --git a/basis/calendar/format/format-tests.factor b/basis/calendar/format/format-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/calendar/format/format.factor b/basis/calendar/format/format.factor
old mode 100755
new mode 100644
diff --git a/basis/calendar/model/model.factor b/basis/calendar/model/model.factor
old mode 100755
new mode 100644
diff --git a/basis/calendar/windows/windows.factor b/basis/calendar/windows/windows.factor
old mode 100755
new mode 100644
diff --git a/basis/channels/channels-tests.factor b/basis/channels/channels-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/channels/channels.factor b/basis/channels/channels.factor
old mode 100755
new mode 100644
diff --git a/basis/channels/examples/examples.factor b/basis/channels/examples/examples.factor
old mode 100755
new mode 100644
diff --git a/basis/channels/remote/remote.factor b/basis/channels/remote/remote.factor
old mode 100755
new mode 100644
diff --git a/basis/checksums/adler-32/adler-32-docs.factor b/basis/checksums/adler-32/adler-32-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/checksums/md5/md5-docs.factor b/basis/checksums/md5/md5-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/checksums/md5/md5-tests.factor b/basis/checksums/md5/md5-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/checksums/md5/md5.factor b/basis/checksums/md5/md5.factor
old mode 100755
new mode 100644
diff --git a/basis/checksums/sha1/sha1-tests.factor b/basis/checksums/sha1/sha1-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/checksums/sha1/sha1.factor b/basis/checksums/sha1/sha1.factor
old mode 100755
new mode 100644
diff --git a/basis/checksums/sha2/sha2-tests.factor b/basis/checksums/sha2/sha2-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/checksums/sha2/sha2.factor b/basis/checksums/sha2/sha2.factor
old mode 100755
new mode 100644
diff --git a/basis/circular/circular-tests.factor b/basis/circular/circular-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/circular/circular.factor b/basis/circular/circular.factor
old mode 100755
new mode 100644
diff --git a/basis/cocoa/application/application-docs.factor b/basis/cocoa/application/application-docs.factor
index 55fa5e10b8..791613e876 100644
--- a/basis/cocoa/application/application-docs.factor
+++ b/basis/cocoa/application/application-docs.factor
@@ -26,6 +26,10 @@ HELP: with-cocoa
 { $values { "quot" quotation } }
 { $description "Sets up an autorelease pool, initializes the " { $snippet "NSApplication" } " singleton, and calls the quotation." } ;
 
+HELP: cocoa-app
+{ $values { "quot" quotation } }
+{ $description "Initializes Cocoa, calls the quotation, and starts the Cocoa event loop." } ;
+
 HELP: do-event
 { $values { "app" "an " { $snippet "NSApplication" } } { "?" "a boolean" } }
 { $description "Processes a pending event in the queue, if any, returning a boolean indicating if there was one. Does not block." } ;
@@ -46,13 +50,16 @@ HELP: objc-error
 { $error-description "Thrown by the Objective C runtime when an error occurs, for example, sending a message to an object with an unrecognized selector." } ;
 
 ARTICLE: "cocoa-application-utils" "Cocoa application utilities"
+"Utilities:"
 { $subsection NSApp }
-{ $subsection with-autorelease-pool }
-{ $subsection with-cocoa }
 { $subsection do-event }
 { $subsection add-observer }
 { $subsection remove-observer }
-{ $subsection install-delegate } ;
+{ $subsection install-delegate }
+"Combinators:"
+{ $subsection cocoa-app }
+{ $subsection with-autorelease-pool }
+{ $subsection with-cocoa } ;
 
 IN: cocoa.application
 ABOUT: "cocoa-application-utils"
diff --git a/basis/cocoa/application/application.factor b/basis/cocoa/application/application.factor
old mode 100755
new mode 100644
index a28952ea33..8f32782d76
--- a/basis/cocoa/application/application.factor
+++ b/basis/cocoa/application/application.factor
@@ -30,7 +30,7 @@ IN: cocoa.application
 FUNCTION: void NSBeep ( ) ;
 
 : with-cocoa ( quot -- )
-    [ NSApp drop call ] with-autorelease-pool ;
+    [ NSApp drop call ] with-autorelease-pool ; inline
 
 : next-event ( app -- event )
     0 f CFRunLoopDefaultMode 1
@@ -50,6 +50,13 @@ FUNCTION: void NSBeep ( ) ;
 
 : finish-launching ( -- ) NSApp -> finishLaunching ;
 
+: cocoa-app ( quot -- )
+    [
+        call
+        finish-launching
+        NSApp -> run
+    ] with-cocoa ; inline
+
 : install-delegate ( receiver delegate -- )
     -> alloc -> init -> setDelegate: ;
 
diff --git a/basis/cocoa/cocoa-docs.factor b/basis/cocoa/cocoa-docs.factor
index a971288251..dd8d331b35 100644
--- a/basis/cocoa/cocoa-docs.factor
+++ b/basis/cocoa/cocoa-docs.factor
@@ -16,9 +16,16 @@ HELP: SUPER->
 
 { send super-send POSTPONE: -> POSTPONE: SUPER-> } related-words
 
+HELP: IMPORT:
+{ $syntax "IMPORT: name" }
+{ $description "Makes an Objective C class available for use." } 
+{ $examples
+    { $code "IMPORT: QTMovie" "QTMovie \"My Movie.mov\" <NSString> f -> movieWithFile:error:" }
+} ;
+
 ARTICLE: "objc-calling" "Calling Objective C code"
 "Before an Objective C class can be used, it must be imported; by default, a small set of common classes are imported automatically, but additional classes can be imported as needed."
-{ $subsection import-objc-class }
+{ $subsection POSTPONE: IMPORT: }
 "Every imported Objective C class has as corresponding class word in the " { $vocab-link "cocoa.classes" } " vocabulary. Class words push the class object in the stack, allowing class methods to be invoked."
 $nl
 "Messages can be sent to classes and instances using a pair of parsing words:"
diff --git a/basis/cocoa/cocoa.factor b/basis/cocoa/cocoa.factor
old mode 100755
new mode 100644
index 744d577c0d..ab86796236
--- a/basis/cocoa/cocoa.factor
+++ b/basis/cocoa/cocoa.factor
@@ -3,7 +3,7 @@
 USING: compiler io kernel cocoa.runtime cocoa.subclassing
 cocoa.messages cocoa.types sequences words vocabs parser
 core-foundation namespaces assocs hashtables compiler.units
-lexer ;
+lexer init ;
 IN: cocoa
 
 : (remember-send) ( selector variable -- )
@@ -27,6 +27,16 @@ SYMBOL: super-sent-messages
     scan dup remember-super-send parsed \ super-send parsed ;
     parsing
 
+SYMBOL: frameworks
+
+frameworks global [ V{ } clone or ] change-at
+
+[ frameworks get [ load-framework ] each ] "cocoa.messages" add-init-hook
+
+: FRAMEWORK: scan [ load-framework ] [ frameworks get push ] bi ; parsing
+
+: IMPORT: scan [ ] import-objc-class ; parsing
+
 "Compiling Objective C bridge..." print
 
 "cocoa.classes" create-vocab drop
diff --git a/basis/cocoa/messages/messages-docs.factor b/basis/cocoa/messages/messages-docs.factor
index f78981c923..9b5e3fdfd9 100644
--- a/basis/cocoa/messages/messages-docs.factor
+++ b/basis/cocoa/messages/messages-docs.factor
@@ -32,11 +32,7 @@ HELP: alien>objc-types
 
 HELP: import-objc-class
 { $values { "name" string } { "quot" "a quotation with stack effect " { $snippet "( -- )" } } }
-{ $description "If a class named " { $snippet "name" } " is already known to the Objective C interface, does nothing. Otherwise, first calls the quotation. The quotation should make the class available to the Objective C runtime if necessary, either by loading a framework or defining it directly. After the quotation returns, this word makes the class available to Factor programs by importing methods and creating a class word the class object in the " { $vocab-link "cocoa.classes" } " vocabulary." }
-{ $notes "In most cases, the quotation should be " { $link f } "." }
-{ $examples
-    { $code "\"QTMovie\" f import-objc-class" "QTMovie \"My Movie.mov\" <NSString> f -> movieWithFile:error:" }
-} ;
+{ $description "If a class named " { $snippet "name" } " is already known to the Objective C interface, does nothing. Otherwise, first calls the quotation. The quotation should make the class available to the Objective C runtime if necessary, either by loading a framework or defining it directly. After the quotation returns, this word makes the class available to Factor programs by importing methods and creating a class word the class object in the " { $vocab-link "cocoa.classes" } " vocabulary." } ;
 
 HELP: root-class
 { $values { "class" alien } { "root" alien } }
diff --git a/basis/cocoa/messages/messages.factor b/basis/cocoa/messages/messages.factor
old mode 100755
new mode 100644
index 7977485b02..09601ef8cc
--- a/basis/cocoa/messages/messages.factor
+++ b/basis/cocoa/messages/messages.factor
@@ -4,7 +4,8 @@ USING: accessors alien alien.c-types alien.strings arrays assocs
 combinators compiler kernel math namespaces make parser
 prettyprint prettyprint.sections quotations sequences strings
 words cocoa.runtime io macros memoize debugger
-io.encodings.ascii effects compiler.generator libc libc.private ;
+io.encodings.ascii effects compiler.generator libc libc.private
+parser lexer init core-foundation ;
 IN: cocoa.messages
 
 : make-sender ( method function -- quot )
diff --git a/basis/cocoa/pasteboard/pasteboard.factor b/basis/cocoa/pasteboard/pasteboard.factor
old mode 100755
new mode 100644
diff --git a/basis/cocoa/subclassing/subclassing.factor b/basis/cocoa/subclassing/subclassing.factor
old mode 100755
new mode 100644
diff --git a/basis/cocoa/windows/windows.factor b/basis/cocoa/windows/windows.factor
old mode 100755
new mode 100644
diff --git a/basis/colors/colors.factor b/basis/colors/colors.factor
index 77a1f46c87..1183c2e46c 100644
--- a/basis/colors/colors.factor
+++ b/basis/colors/colors.factor
@@ -1,48 +1,33 @@
-! Copyright (C) 2003, 2007, 2008 Slava Pestov.
+! Copyright (C) 2003, 2008 Slava Pestov.
+! Copyright (C) 2008 Eduardo Cavazos.
 ! See http://factorcode.org/license.txt for BSD license.
-
-USING: kernel combinators sequences arrays classes.tuple accessors colors.hsv ;
-
+USING: kernel accessors ;
 IN: colors
 
-! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
 TUPLE: color ;
 
 TUPLE: rgba < color red green blue alpha ;
 
-TUPLE: hsva < color hue saturation value alpha ;
-
-TUPLE: gray < color gray alpha ;
-
-! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+C: <rgba> rgba
 
 GENERIC: >rgba ( object -- rgba )
 
 M: rgba >rgba ( rgba -- rgba ) ;
 
-M: hsva >rgba ( hsva -- rgba )
-  { [ hue>> ] [ saturation>> ] [ value>> ] [ alpha>> ] } cleave 4array
-  [ hsv>rgb ] [ peek ] bi suffix first4 rgba boa ;
-
-M: gray >rgba ( gray -- rgba ) [ gray>> dup dup ] [ alpha>> ] bi rgba boa ;
-
 M: color red>>   ( color -- red   ) >rgba red>>   ;
 M: color green>> ( color -- green ) >rgba green>> ;
 M: color blue>>  ( color -- blue  ) >rgba blue>>  ;
 
-! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-: black        T{ rgba f 0.0   0.0   0.0   1.0  } ;
-: blue         T{ rgba f 0.0   0.0   1.0   1.0  } ;
-: cyan         T{ rgba f 0     0.941 0.941 1    } ;
-: gray         T{ rgba f 0.6   0.6   0.6   1.0  } ;
-: green        T{ rgba f 0.0   1.0   0.0   1.0  } ;
-: light-gray   T{ rgba f 0.95  0.95  0.95  0.95 } ;
-: light-purple T{ rgba f 0.8   0.8   1.0   1.0  } ;
-: magenta      T{ rgba f 0.941 0     0.941 1    } ;
-: orange       T{ rgba f 0.941 0.627 0     1    } ;
-: purple       T{ rgba f 0.627 0     0.941 1    } ;
-: red          T{ rgba f 1.0   0.0   0.0   1.0  } ;
-: white        T{ rgba f 1.0   1.0   1.0   1.0  } ;
-: yellow       T{ rgba f 1.0   1.0   0.0   1.0  } ;
+: black        T{ rgba f 0.0   0.0   0.0   1.0  } ; inline
+: blue         T{ rgba f 0.0   0.0   1.0   1.0  } ; inline
+: cyan         T{ rgba f 0     0.941 0.941 1    } ; inline
+: gray         T{ rgba f 0.6   0.6   0.6   1.0  } ; inline
+: green        T{ rgba f 0.0   1.0   0.0   1.0  } ; inline
+: light-gray   T{ rgba f 0.95  0.95  0.95  0.95 } ; inline
+: light-purple T{ rgba f 0.8   0.8   1.0   1.0  } ; inline
+: magenta      T{ rgba f 0.941 0     0.941 1    } ; inline
+: orange       T{ rgba f 0.941 0.627 0     1    } ; inline
+: purple       T{ rgba f 0.627 0     0.941 1    } ; inline
+: red          T{ rgba f 1.0   0.0   0.0   1.0  } ; inline
+: white        T{ rgba f 1.0   1.0   1.0   1.0  } ; inline
+: yellow       T{ rgba f 1.0   1.0   0.0   1.0  } ; inline
diff --git a/basis/colors/gray/gray.factor b/basis/colors/gray/gray.factor
new file mode 100644
index 0000000000..26ec1177b6
--- /dev/null
+++ b/basis/colors/gray/gray.factor
@@ -0,0 +1,11 @@
+! Copyright (C) 2008 Eduardo Cavazos.
+! See http://factorcode.org/license.txt for BSD license.
+USING: colors kernel accessors ;
+IN: colors.gray
+
+TUPLE: gray < color gray alpha ;
+
+C: <gray> gray
+
+M: gray >rgba ( gray -- rgba )
+    [ gray>> dup dup ] [ alpha>> ] bi <rgba> ;
diff --git a/basis/colors/hsv/hsv-tests.factor b/basis/colors/hsv/hsv-tests.factor
new file mode 100644
index 0000000000..8a736553bb
--- /dev/null
+++ b/basis/colors/hsv/hsv-tests.factor
@@ -0,0 +1,26 @@
+IN: colors.hsv.tests
+USING: accessors kernel colors colors.hsv tools.test math ;
+
+: hsv>rgb ( h s v -- r g b )
+    [ 360 * ] 2dip
+    1 <hsva> >rgba [ red>> ] [ green>> ] [ blue>> ] tri ;
+
+[ 1/2 1/2 1/2 ] [ 0 0 1/2 hsv>rgb ] unit-test
+
+[ 1/2 1/4 1/4 ] [ 0 1/2 1/2 hsv>rgb ] unit-test
+[ 1/3 2/9 2/9 ] [ 0 1/3 1/3 hsv>rgb ] unit-test
+
+[ 24/125 1/5 4/25 ] [ 1/5 1/5 1/5 hsv>rgb ] unit-test
+[ 29/180 1/6 5/36 ] [ 1/5 1/6 1/6 hsv>rgb ] unit-test
+
+[ 6/25 2/5 38/125 ] [ 2/5 2/5 2/5 hsv>rgb ] unit-test
+[ 8/25 4/5 64/125 ] [ 2/5 3/5 4/5 hsv>rgb ] unit-test
+
+[ 6/25 48/125 3/5 ] [ 3/5 3/5 3/5 hsv>rgb ] unit-test
+[ 0 0 0 ] [ 3/5 1/5 0 hsv>rgb ] unit-test
+
+[ 84/125 4/25 4/5 ] [ 4/5 4/5 4/5 hsv>rgb ] unit-test
+[ 7/15 1/3 1/2 ] [ 4/5 1/3 1/2 hsv>rgb ] unit-test
+
+[ 5/6 5/36 5/6 ] [ 5/6 5/6 5/6 hsv>rgb ] unit-test
+[ 1/6 0 1/6 ] [ 5/6 1 1/6 hsv>rgb ] unit-test
diff --git a/basis/colors/hsv/hsv.factor b/basis/colors/hsv/hsv.factor
index dd2811822b..6f658818a1 100644
--- a/basis/colors/hsv/hsv.factor
+++ b/basis/colors/hsv/hsv.factor
@@ -1,41 +1,38 @@
-! Copyright (C) 2007 Eduardo Cavazos
+! Copyright (C) 2008 Eduardo Cavazos.
 ! See http://factorcode.org/license.txt for BSD license.
-
-USING: kernel combinators arrays sequences math math.functions ;
-
+USING: colors kernel combinators math math.functions accessors ;
 IN: colors.hsv
 
-<PRIVATE
-
-: H ( hsv -- H ) first ;
-
-: S ( hsv -- S ) second ;
-
-: V ( hsv -- V ) third ;
-
-! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-: Hi ( hsv -- Hi ) H 60 / floor 6 mod ;
-
-: f ( hsv -- f ) [ H 60 / ] [ Hi ] bi - ;
-
-: p ( hsv -- p ) [ S 1 swap - ] [ V ] bi * ;
-
-: q ( hsv -- q ) [ [ f ] [ S ] bi * 1 swap - ] [ V ] bi * ;
-
-: t ( hsv -- t ) [ [ f 1 swap - ] [ S ] bi * 1 swap - ] [ V ] bi * ;
-
-PRIVATE>
-
 ! h [0,360)
 ! s [0,1]
 ! v [0,1]
+TUPLE: hsva < color hue saturation value alpha ;
 
-: hsv>rgb ( hsv -- rgb )
-dup Hi
-{ { 0 [ [ V ] [ t ] [ p ] tri ] }
-  { 1 [ [ q ] [ V ] [ p ] tri ] }
-  { 2 [ [ p ] [ V ] [ t ] tri ] }
-  { 3 [ [ p ] [ q ] [ V ] tri ] }
-  { 4 [ [ t ] [ p ] [ V ] tri ] }
-  { 5 [ [ V ] [ p ] [ q ] tri ] } } case 3array ;
+C: <hsva> hsva
+
+<PRIVATE
+
+: Hi ( hsv -- Hi ) hue>> 60 / floor 6 mod ; inline
+
+: f ( hsv -- f ) [ hue>> 60 / ] [ Hi ] bi - ; inline
+
+: p ( hsv -- p ) [ saturation>> 1 swap - ] [ value>> ] bi * ; inline
+
+: q ( hsv -- q ) [ [ f ] [ saturation>> ] bi * 1 swap - ] [ value>> ] bi * ; inline
+
+: t ( hsv -- t ) [ [ f 1 swap - ] [ saturation>> ] bi * 1 swap - ] [ value>> ] bi * ; inline
+
+PRIVATE>
+
+M: hsva >rgba ( hsva -- rgba )
+    [
+        dup Hi
+        {
+            { 0 [ [ value>> ] [ t ] [ p ] tri ] }
+            { 1 [ [ q ] [ value>> ] [ p ] tri ] }
+            { 2 [ [ p ] [ value>> ] [ t ] tri ] }
+            { 3 [ [ p ] [ q ] [ value>> ] tri ] }
+            { 4 [ [ t ] [ p ] [ value>> ] tri ] }
+            { 5 [ [ value>> ] [ p ] [ q ] tri ] }
+        } case
+    ] [ alpha>> ] bi <rgba> ;
diff --git a/basis/combinators/short-circuit/short-circuit.factor b/basis/combinators/short-circuit/short-circuit.factor
old mode 100755
new mode 100644
diff --git a/basis/compiler/compiler-docs.factor b/basis/compiler/compiler-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/compiler/compiler.factor b/basis/compiler/compiler.factor
old mode 100755
new mode 100644
diff --git a/basis/compiler/constants/constants.factor b/basis/compiler/constants/constants.factor
old mode 100755
new mode 100644
diff --git a/basis/compiler/generator/fixup/fixup.factor b/basis/compiler/generator/fixup/fixup.factor
old mode 100755
new mode 100644
diff --git a/basis/compiler/generator/generator-docs.factor b/basis/compiler/generator/generator-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/compiler/generator/generator.factor b/basis/compiler/generator/generator.factor
old mode 100755
new mode 100644
diff --git a/basis/compiler/generator/registers/registers.factor b/basis/compiler/generator/registers/registers.factor
old mode 100755
new mode 100644
diff --git a/basis/compiler/tests/alien.factor b/basis/compiler/tests/alien.factor
old mode 100755
new mode 100644
diff --git a/basis/compiler/tests/curry.factor b/basis/compiler/tests/curry.factor
old mode 100755
new mode 100644
diff --git a/basis/compiler/tests/float.factor b/basis/compiler/tests/float.factor
old mode 100755
new mode 100644
diff --git a/basis/compiler/tests/intrinsics.factor b/basis/compiler/tests/intrinsics.factor
old mode 100755
new mode 100644
diff --git a/basis/compiler/tests/optimizer.factor b/basis/compiler/tests/optimizer.factor
old mode 100755
new mode 100644
diff --git a/basis/compiler/tests/simple.factor b/basis/compiler/tests/simple.factor
old mode 100755
new mode 100644
diff --git a/basis/compiler/tests/stack-trace.factor b/basis/compiler/tests/stack-trace.factor
old mode 100755
new mode 100644
diff --git a/basis/compiler/tests/templates-early.factor b/basis/compiler/tests/templates-early.factor
old mode 100755
new mode 100644
diff --git a/basis/compiler/tests/templates.factor b/basis/compiler/tests/templates.factor
old mode 100755
new mode 100644
diff --git a/basis/compiler/tests/tuples.factor b/basis/compiler/tests/tuples.factor
old mode 100755
new mode 100644
diff --git a/basis/compiler/tree/dead-code/simple/simple.factor b/basis/compiler/tree/dead-code/simple/simple.factor
old mode 100755
new mode 100644
diff --git a/basis/compiler/tree/def-use/def-use-tests.factor b/basis/compiler/tree/def-use/def-use-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/compiler/tree/def-use/def-use.factor b/basis/compiler/tree/def-use/def-use.factor
old mode 100755
new mode 100644
diff --git a/basis/compiler/tree/propagation/propagation-tests.factor b/basis/compiler/tree/propagation/propagation-tests.factor
index d73e8b7db1..19ee051ac6 100644
--- a/basis/compiler/tree/propagation/propagation-tests.factor
+++ b/basis/compiler/tree/propagation/propagation-tests.factor
@@ -8,7 +8,7 @@ math.functions math.private strings layouts
 compiler.tree.propagation.info compiler.tree.def-use
 compiler.tree.debugger compiler.tree.checker
 slots.private words hashtables classes assocs locals
-float-arrays ;
+float-arrays system ;
 IN: compiler.tree.propagation.tests
 
 \ propagate must-infer
@@ -590,6 +590,8 @@ MIXIN: empty-mixin
 
 [ V{ float-array } ] [ [| | F{ } ] final-classes ] unit-test
 
+[ V{ t } ] [ [ netbsd unix? ] final-literals ] unit-test
+
 ! [ V{ string } ] [
 !     [ dup string? t xor [ "A" throw ] [ ] if ] final-classes
 ! ] unit-test
diff --git a/basis/compiler/tree/propagation/propagation.factor b/basis/compiler/tree/propagation/propagation.factor
old mode 100755
new mode 100644
diff --git a/basis/compiler/tree/propagation/simple/simple.factor b/basis/compiler/tree/propagation/simple/simple.factor
index 7fc38239f1..d586ff398f 100644
--- a/basis/compiler/tree/propagation/simple/simple.factor
+++ b/basis/compiler/tree/propagation/simple/simple.factor
@@ -76,13 +76,25 @@ M: #declare propagate-before
 : fold-call ( #call word -- )
     [ (fold-call) ] [ drop out-d>> ] 2bi set-value-infos ;
 
-: predicate-output-infos ( info class -- info )
+: predicate-output-infos/literal ( info class -- info )
+    [ literal>> ] dip
+    '[ _ _ instance? <literal-info> ]
+    [ drop object-info ]
+    recover ;
+
+: predicate-output-infos/class ( info class -- info )
     [ class>> ] dip {
         { [ 2dup class<= ] [ t <literal-info> ] }
         { [ 2dup classes-intersect? not ] [ f <literal-info> ] }
         [ object-info ]
     } cond 2nip ;
 
+: predicate-output-infos ( info class -- info )
+    over literal?>>
+    [ predicate-output-infos/literal ]
+    [ predicate-output-infos/class ]
+    if ;
+
 : propagate-predicate ( #call word -- infos )
     #! We need to force the caller word to recompile when the class
     #! is redefined, since now we're making assumptions but the
diff --git a/basis/compiler/tree/tree.factor b/basis/compiler/tree/tree.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/combinators/combinators-docs.factor b/basis/concurrency/combinators/combinators-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/combinators/combinators-tests.factor b/basis/concurrency/combinators/combinators-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/combinators/combinators.factor b/basis/concurrency/combinators/combinators.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/conditions/conditions.factor b/basis/concurrency/conditions/conditions.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/count-downs/count-downs-docs.factor b/basis/concurrency/count-downs/count-downs-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/count-downs/count-downs-tests.factor b/basis/concurrency/count-downs/count-downs-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/count-downs/count-downs.factor b/basis/concurrency/count-downs/count-downs.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/distributed/distributed-docs.factor b/basis/concurrency/distributed/distributed-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/distributed/distributed-tests.factor b/basis/concurrency/distributed/distributed-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/distributed/distributed.factor b/basis/concurrency/distributed/distributed.factor
old mode 100755
new mode 100644
index 5e2f1bb6d1..99ad239011
--- a/basis/concurrency/distributed/distributed.factor
+++ b/basis/concurrency/distributed/distributed.factor
@@ -10,7 +10,7 @@ SYMBOL: local-node
 
 : handle-node-client ( -- )
     deserialize
-    [ first2 get-process send ] [ stop-server ] if* ;
+    [ first2 get-process send ] [ stop-this-server ] if* ;
 
 : <node-server> ( addrspec -- threaded-server )
     <threaded-server>
diff --git a/basis/concurrency/exchangers/exchangers-docs.factor b/basis/concurrency/exchangers/exchangers-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/exchangers/exchangers-tests.factor b/basis/concurrency/exchangers/exchangers-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/exchangers/exchangers.factor b/basis/concurrency/exchangers/exchangers.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/flags/flags-tests.factor b/basis/concurrency/flags/flags-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/flags/flags.factor b/basis/concurrency/flags/flags.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/futures/futures-docs.factor b/basis/concurrency/futures/futures-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/futures/futures-tests.factor b/basis/concurrency/futures/futures-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/futures/futures.factor b/basis/concurrency/futures/futures.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/locks/locks-docs.factor b/basis/concurrency/locks/locks-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/locks/locks-tests.factor b/basis/concurrency/locks/locks-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/locks/locks.factor b/basis/concurrency/locks/locks.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/mailboxes/mailboxes-docs.factor b/basis/concurrency/mailboxes/mailboxes-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/mailboxes/mailboxes-tests.factor b/basis/concurrency/mailboxes/mailboxes-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/mailboxes/mailboxes.factor b/basis/concurrency/mailboxes/mailboxes.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/messaging/messaging-docs.factor b/basis/concurrency/messaging/messaging-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/messaging/messaging-tests.factor b/basis/concurrency/messaging/messaging-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/messaging/messaging.factor b/basis/concurrency/messaging/messaging.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/promises/promises-docs.factor b/basis/concurrency/promises/promises-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/promises/promises-tests.factor b/basis/concurrency/promises/promises-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/promises/promises.factor b/basis/concurrency/promises/promises.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/semaphores/semaphores-docs.factor b/basis/concurrency/semaphores/semaphores-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/concurrency/semaphores/semaphores.factor b/basis/concurrency/semaphores/semaphores.factor
old mode 100755
new mode 100644
diff --git a/basis/cpu/architecture/architecture.factor b/basis/cpu/architecture/architecture.factor
old mode 100755
new mode 100644
diff --git a/basis/cpu/ppc/allot/allot.factor b/basis/cpu/ppc/allot/allot.factor
old mode 100755
new mode 100644
diff --git a/basis/cpu/ppc/architecture/architecture.factor b/basis/cpu/ppc/architecture/architecture.factor
old mode 100755
new mode 100644
diff --git a/basis/cpu/ppc/assembler/assembler.factor b/basis/cpu/ppc/assembler/assembler.factor
old mode 100755
new mode 100644
diff --git a/basis/cpu/ppc/bootstrap.factor b/basis/cpu/ppc/bootstrap.factor
old mode 100755
new mode 100644
diff --git a/basis/cpu/ppc/intrinsics/intrinsics.factor b/basis/cpu/ppc/intrinsics/intrinsics.factor
old mode 100755
new mode 100644
diff --git a/basis/cpu/ppc/linux/bootstrap.factor b/basis/cpu/ppc/linux/bootstrap.factor
old mode 100755
new mode 100644
diff --git a/basis/cpu/ppc/macosx/bootstrap.factor b/basis/cpu/ppc/macosx/bootstrap.factor
old mode 100755
new mode 100644
diff --git a/basis/cpu/ppc/ppc.factor b/basis/cpu/ppc/ppc.factor
old mode 100755
new mode 100644
diff --git a/basis/cpu/x86/32/32.factor b/basis/cpu/x86/32/32.factor
old mode 100755
new mode 100644
diff --git a/basis/cpu/x86/32/bootstrap.factor b/basis/cpu/x86/32/bootstrap.factor
old mode 100755
new mode 100644
diff --git a/basis/cpu/x86/64/64.factor b/basis/cpu/x86/64/64.factor
old mode 100755
new mode 100644
diff --git a/basis/cpu/x86/64/bootstrap.factor b/basis/cpu/x86/64/bootstrap.factor
old mode 100755
new mode 100644
diff --git a/basis/cpu/x86/allot/allot.factor b/basis/cpu/x86/allot/allot.factor
old mode 100755
new mode 100644
diff --git a/basis/cpu/x86/architecture/architecture.factor b/basis/cpu/x86/architecture/architecture.factor
old mode 100755
new mode 100644
diff --git a/basis/cpu/x86/assembler/assembler.factor b/basis/cpu/x86/assembler/assembler.factor
old mode 100755
new mode 100644
diff --git a/basis/cpu/x86/bootstrap.factor b/basis/cpu/x86/bootstrap.factor
old mode 100755
new mode 100644
diff --git a/basis/cpu/x86/intrinsics/intrinsics.factor b/basis/cpu/x86/intrinsics/intrinsics.factor
old mode 100755
new mode 100644
diff --git a/basis/cpu/x86/sse2/sse2.factor b/basis/cpu/x86/sse2/sse2.factor
old mode 100755
new mode 100644
diff --git a/basis/db/db-tests.factor b/basis/db/db-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/db/db.factor b/basis/db/db.factor
old mode 100755
new mode 100644
diff --git a/basis/db/postgresql/ffi/ffi.factor b/basis/db/postgresql/ffi/ffi.factor
old mode 100755
new mode 100644
diff --git a/basis/db/postgresql/lib/lib.factor b/basis/db/postgresql/lib/lib.factor
old mode 100755
new mode 100644
diff --git a/basis/db/postgresql/postgresql-tests.factor b/basis/db/postgresql/postgresql-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/db/postgresql/postgresql.factor b/basis/db/postgresql/postgresql.factor
old mode 100755
new mode 100644
diff --git a/basis/db/sqlite/ffi/ffi.factor b/basis/db/sqlite/ffi/ffi.factor
old mode 100755
new mode 100644
diff --git a/basis/db/sqlite/lib/lib.factor b/basis/db/sqlite/lib/lib.factor
old mode 100755
new mode 100644
diff --git a/basis/db/sqlite/sqlite-tests.factor b/basis/db/sqlite/sqlite-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/db/sqlite/sqlite.factor b/basis/db/sqlite/sqlite.factor
old mode 100755
new mode 100644
diff --git a/basis/db/tuples/tuples-tests.factor b/basis/db/tuples/tuples-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/db/tuples/tuples.factor b/basis/db/tuples/tuples.factor
old mode 100755
new mode 100644
diff --git a/basis/db/types/types.factor b/basis/db/types/types.factor
old mode 100755
new mode 100644
diff --git a/basis/debugger/debugger-docs.factor b/basis/debugger/debugger-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/debugger/debugger-tests.factor b/basis/debugger/debugger-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/debugger/debugger.factor b/basis/debugger/debugger.factor
old mode 100755
new mode 100644
diff --git a/basis/delegate/delegate-tests.factor b/basis/delegate/delegate-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/delegate/delegate.factor b/basis/delegate/delegate.factor
old mode 100755
new mode 100644
diff --git a/basis/delegate/protocols/protocols.factor b/basis/delegate/protocols/protocols.factor
old mode 100755
new mode 100644
diff --git a/basis/dlists/dlists-docs.factor b/basis/dlists/dlists-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/dlists/dlists-tests.factor b/basis/dlists/dlists-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/dlists/dlists.factor b/basis/dlists/dlists.factor
old mode 100755
new mode 100644
diff --git a/basis/documents/documents.factor b/basis/documents/documents.factor
old mode 100755
new mode 100644
diff --git a/basis/editors/editors.factor b/basis/editors/editors.factor
old mode 100755
new mode 100644
diff --git a/basis/editors/editpadpro/editpadpro.factor b/basis/editors/editpadpro/editpadpro.factor
old mode 100755
new mode 100644
diff --git a/basis/editors/editplus/editplus.factor b/basis/editors/editplus/editplus.factor
old mode 100755
new mode 100644
diff --git a/basis/editors/emacs/emacs.factor b/basis/editors/emacs/emacs.factor
old mode 100755
new mode 100644
diff --git a/basis/editors/emeditor/emeditor.factor b/basis/editors/emeditor/emeditor.factor
old mode 100755
new mode 100644
diff --git a/basis/editors/gvim/gvim.factor b/basis/editors/gvim/gvim.factor
old mode 100755
new mode 100644
diff --git a/basis/editors/gvim/windows/windows.factor b/basis/editors/gvim/windows/windows.factor
old mode 100755
new mode 100644
diff --git a/basis/editors/jedit/jedit.factor b/basis/editors/jedit/jedit.factor
old mode 100755
new mode 100644
diff --git a/basis/editors/macvim/macvim.factor b/basis/editors/macvim/macvim.factor
old mode 100755
new mode 100644
diff --git a/basis/editors/notepadpp/notepadpp.factor b/basis/editors/notepadpp/notepadpp.factor
old mode 100755
new mode 100644
diff --git a/basis/editors/scite/scite.factor b/basis/editors/scite/scite.factor
old mode 100755
new mode 100644
diff --git a/basis/editors/ted-notepad/ted-notepad.factor b/basis/editors/ted-notepad/ted-notepad.factor
old mode 100755
new mode 100644
diff --git a/basis/editors/textedit/textedit.factor b/basis/editors/textedit/textedit.factor
old mode 100755
new mode 100644
diff --git a/basis/editors/textmate/textmate.factor b/basis/editors/textmate/textmate.factor
old mode 100755
new mode 100644
diff --git a/basis/editors/ultraedit/ultraedit.factor b/basis/editors/ultraedit/ultraedit.factor
old mode 100755
new mode 100644
diff --git a/basis/editors/vim/vim.factor b/basis/editors/vim/vim.factor
old mode 100755
new mode 100644
diff --git a/basis/editors/wordpad/wordpad.factor b/basis/editors/wordpad/wordpad.factor
old mode 100755
new mode 100644
diff --git a/basis/float-arrays/float-arrays-tests.factor b/basis/float-arrays/float-arrays-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/float-arrays/float-arrays.factor b/basis/float-arrays/float-arrays.factor
old mode 100755
new mode 100644
diff --git a/basis/float-vectors/float-vectors-docs.factor b/basis/float-vectors/float-vectors-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/float-vectors/float-vectors-tests.factor b/basis/float-vectors/float-vectors-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/float-vectors/float-vectors.factor b/basis/float-vectors/float-vectors.factor
old mode 100755
new mode 100644
diff --git a/basis/freetype/freetype.factor b/basis/freetype/freetype.factor
old mode 100755
new mode 100644
diff --git a/basis/fry/fry-docs.factor b/basis/fry/fry-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/fry/fry-tests.factor b/basis/fry/fry-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/fry/fry.factor b/basis/fry/fry.factor
old mode 100755
new mode 100644
diff --git a/basis/furnace/actions/actions-tests.factor b/basis/furnace/actions/actions-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/furnace/actions/actions.factor b/basis/furnace/actions/actions.factor
old mode 100755
new mode 100644
diff --git a/basis/furnace/auth/auth.factor b/basis/furnace/auth/auth.factor
old mode 100755
new mode 100644
diff --git a/basis/furnace/auth/basic/basic.factor b/basis/furnace/auth/basic/basic.factor
old mode 100755
new mode 100644
diff --git a/basis/furnace/auth/login/login-tests.factor b/basis/furnace/auth/login/login-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/furnace/auth/login/login.factor b/basis/furnace/auth/login/login.factor
old mode 100755
new mode 100644
diff --git a/basis/furnace/auth/providers/assoc/assoc-tests.factor b/basis/furnace/auth/providers/assoc/assoc-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/furnace/auth/providers/assoc/assoc.factor b/basis/furnace/auth/providers/assoc/assoc.factor
old mode 100755
new mode 100644
diff --git a/basis/furnace/auth/providers/db/db-tests.factor b/basis/furnace/auth/providers/db/db-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/furnace/auth/providers/db/db.factor b/basis/furnace/auth/providers/db/db.factor
old mode 100755
new mode 100644
diff --git a/basis/furnace/auth/providers/null/null.factor b/basis/furnace/auth/providers/null/null.factor
old mode 100755
new mode 100644
diff --git a/basis/furnace/auth/providers/providers.factor b/basis/furnace/auth/providers/providers.factor
old mode 100755
new mode 100644
diff --git a/basis/furnace/db/db.factor b/basis/furnace/db/db.factor
old mode 100755
new mode 100644
diff --git a/basis/furnace/sessions/sessions-tests.factor b/basis/furnace/sessions/sessions-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/furnace/sessions/sessions.factor b/basis/furnace/sessions/sessions.factor
old mode 100755
new mode 100644
diff --git a/basis/generalizations/generalizations-docs.factor b/basis/generalizations/generalizations-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/generalizations/generalizations-tests.factor b/basis/generalizations/generalizations-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/generalizations/generalizations.factor b/basis/generalizations/generalizations.factor
old mode 100755
new mode 100644
diff --git a/basis/globs/globs.factor b/basis/globs/globs.factor
old mode 100755
new mode 100644
diff --git a/basis/hash2/hash2-tests.factor b/basis/hash2/hash2-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/heaps/heaps-docs.factor b/basis/heaps/heaps-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/heaps/heaps-tests.factor b/basis/heaps/heaps-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/heaps/heaps.factor b/basis/heaps/heaps.factor
old mode 100755
new mode 100644
diff --git a/basis/help/cookbook/cookbook.factor b/basis/help/cookbook/cookbook.factor
old mode 100755
new mode 100644
diff --git a/basis/help/crossref/crossref-tests.factor b/basis/help/crossref/crossref-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/help/definitions/definitions-tests.factor b/basis/help/definitions/definitions-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/help/definitions/definitions.factor b/basis/help/definitions/definitions.factor
old mode 100755
new mode 100644
diff --git a/basis/help/handbook/handbook.factor b/basis/help/handbook/handbook.factor
old mode 100755
new mode 100644
diff --git a/basis/help/help-docs.factor b/basis/help/help-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/help/help.factor b/basis/help/help.factor
old mode 100755
new mode 100644
diff --git a/basis/help/lint/lint.factor b/basis/help/lint/lint.factor
old mode 100755
new mode 100644
diff --git a/basis/help/markup/markup.factor b/basis/help/markup/markup.factor
old mode 100755
new mode 100644
diff --git a/basis/help/stylesheet/stylesheet.factor b/basis/help/stylesheet/stylesheet.factor
old mode 100755
new mode 100644
diff --git a/basis/help/syntax/syntax-tests.factor b/basis/help/syntax/syntax-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/help/syntax/syntax.factor b/basis/help/syntax/syntax.factor
old mode 100755
new mode 100644
diff --git a/basis/help/topics/topics.factor b/basis/help/topics/topics.factor
old mode 100755
new mode 100644
diff --git a/basis/help/tutorial/tutorial.factor b/basis/help/tutorial/tutorial.factor
old mode 100755
new mode 100644
diff --git a/basis/html/streams/streams.factor b/basis/html/streams/streams.factor
old mode 100755
new mode 100644
diff --git a/basis/html/templates/fhtml/fhtml-tests.factor b/basis/html/templates/fhtml/fhtml-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/html/templates/fhtml/fhtml.factor b/basis/html/templates/fhtml/fhtml.factor
old mode 100755
new mode 100644
diff --git a/basis/http/client/client-docs.factor b/basis/http/client/client-docs.factor
index a762d1a5ef..d4f277a7c3 100644
--- a/basis/http/client/client-docs.factor
+++ b/basis/http/client/client-docs.factor
@@ -95,6 +95,8 @@ ARTICLE: "http.client.errors" "HTTP client errors"
 ARTICLE: "http.client" "HTTP client"
 "The " { $vocab-link "http.client" } " vocabulary implements an HTTP and HTTPS client on top of " { $link "http" } "."
 $nl
+"For HTTPS support, you must load the " { $vocab-link "urls.secure" } " vocab first. If you don't load it, HTTPS will not load and images generated by " { $vocab-link "tools.deploy" } " will be smaller as a result."
+$nl
 "There are two primary usage patterns, data retrieval with GET requests and form submission with POST requests:"
 { $subsection "http.client.get" }
 { $subsection "http.client.post" }
diff --git a/basis/http/client/client-tests.factor b/basis/http/client/client-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/http/client/client.factor b/basis/http/client/client.factor
old mode 100755
new mode 100644
diff --git a/basis/http/http-tests.factor b/basis/http/http-tests.factor
old mode 100755
new mode 100644
index 9a1421a3ad..49ef03543e
--- a/basis/http/http-tests.factor
+++ b/basis/http/http-tests.factor
@@ -179,7 +179,7 @@ http.server.dispatchers db.tuples ;
 
 : add-quit-action
     <action>
-        [ stop-server "Goodbye" "text/html" <content> ] >>display
+        [ stop-this-server "Goodbye" "text/html" <content> ] >>display
     "quit" add-responder ;
 
 : test-db "test.db" temp-file sqlite-db ;
diff --git a/basis/http/http.factor b/basis/http/http.factor
old mode 100755
new mode 100644
index cfc205dbb5..c90a1872ce
--- a/basis/http/http.factor
+++ b/basis/http/http.factor
@@ -3,7 +3,7 @@
 USING: accessors kernel combinators math namespaces make
 assocs sequences splitting sorting sets debugger
 strings vectors hashtables quotations arrays byte-arrays
-math.parser calendar calendar.format present urls logging
+math.parser calendar calendar.format present urls
 
 io io.encodings io.encodings.iana io.encodings.binary
 io.encodings.8-bit
@@ -96,8 +96,6 @@ TUPLE: cookie name value version comment path domain expires max-age http-only s
         drop
     ] { } make ;
 
-\ parse-cookie DEBUG add-input-logging
-
 : check-cookie-string ( string -- string' )
     dup "=;'\"\r\n" intersect empty?
     [ "Bad cookie name or value" throw ] unless ;
diff --git a/basis/http/parsers/parsers.factor b/basis/http/parsers/parsers.factor
index ce8257dec5..8e8e7358d1 100644
--- a/basis/http/parsers/parsers.factor
+++ b/basis/http/parsers/parsers.factor
@@ -2,7 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: combinators.short-circuit math math.order math.parser
 kernel sequences sequences.deep peg peg.parsers assocs arrays
-hashtables strings unicode.case namespaces make ascii logging ;
+hashtables strings unicode.case namespaces make ascii ;
 IN: http.parsers
 
 : except ( quot -- parser )
@@ -61,8 +61,6 @@ PEG: parse-request-line ( string -- triple )
         'space' ,
     ] seq* just ;
 
-\ parse-request-line DEBUG add-input-logging
-
 : 'text' ( -- parser )
     [ ctl? ] except ;
 
diff --git a/basis/http/server/cgi/cgi.factor b/basis/http/server/cgi/cgi.factor
old mode 100755
new mode 100644
diff --git a/basis/http/server/server.factor b/basis/http/server/server.factor
old mode 100755
new mode 100644
index 547e1b69fb..697dec24ce
--- a/basis/http/server/server.factor
+++ b/basis/http/server/server.factor
@@ -24,6 +24,8 @@ html.elements
 html.streams ;
 IN: http.server
 
+\ parse-cookie DEBUG add-input-logging
+
 : check-absolute ( url -- url )
     dup path>> "/" head? [ "Bad request: URL" throw ] unless ; inline
 
diff --git a/basis/http/server/static/static.factor b/basis/http/server/static/static.factor
old mode 100755
new mode 100644
diff --git a/basis/inspector/inspector.factor b/basis/inspector/inspector.factor
old mode 100755
new mode 100644
diff --git a/basis/interval-maps/interval-maps-docs.factor b/basis/interval-maps/interval-maps-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/interval-maps/interval-maps-tests.factor b/basis/interval-maps/interval-maps-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/interval-maps/interval-maps.factor b/basis/interval-maps/interval-maps.factor
old mode 100755
new mode 100644
diff --git a/basis/io/buffers/buffers-docs.factor b/basis/io/buffers/buffers-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/io/buffers/buffers-tests.factor b/basis/io/buffers/buffers-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/io/buffers/buffers.factor b/basis/io/buffers/buffers.factor
old mode 100755
new mode 100644
diff --git a/basis/io/encodings/8-bit/8-bit.factor b/basis/io/encodings/8-bit/8-bit.factor
old mode 100755
new mode 100644
diff --git a/basis/io/encodings/ascii/ascii-docs.factor b/basis/io/encodings/ascii/ascii-docs.factor
index fa496a3526..e0ab11f1a4 100644
--- a/basis/io/encodings/ascii/ascii-docs.factor
+++ b/basis/io/encodings/ascii/ascii-docs.factor
@@ -4,8 +4,8 @@ IN: io.encodings.ascii
 HELP: ascii
 { $class-description "ASCII encoding descriptor." } ;
 
-ARTICLE: "ascii" "ASCII encoding"
+ARTICLE: "io.encodings.ascii" "ASCII encoding"
 "By default, if there's a non-ASCII character in an input stream, it will be replaced with a replacement character (U+FFFD), and if a non-ASCII character is used in output, an exception is thrown."
 { $subsection ascii } ;
 
-ABOUT: "ascii"
+ABOUT: "io.encodings.ascii"
diff --git a/basis/io/encodings/ascii/ascii.factor b/basis/io/encodings/ascii/ascii.factor
old mode 100755
new mode 100644
diff --git a/basis/io/encodings/iana/iana.factor b/basis/io/encodings/iana/iana.factor
old mode 100755
new mode 100644
diff --git a/basis/io/encodings/utf16/utf16-tests.factor b/basis/io/encodings/utf16/utf16-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/io/encodings/utf16/utf16.factor b/basis/io/encodings/utf16/utf16.factor
old mode 100755
new mode 100644
diff --git a/basis/io/launcher/launcher-docs.factor b/basis/io/launcher/launcher-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/io/launcher/launcher-tests.factor b/basis/io/launcher/launcher-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/io/launcher/launcher.factor b/basis/io/launcher/launcher.factor
old mode 100755
new mode 100644
diff --git a/basis/io/mmap/mmap-docs.factor b/basis/io/mmap/mmap-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/io/mmap/mmap-tests.factor b/basis/io/mmap/mmap-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/io/mmap/mmap.factor b/basis/io/mmap/mmap.factor
old mode 100755
new mode 100644
diff --git a/basis/io/monitors/monitors-docs.factor b/basis/io/monitors/monitors-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/io/monitors/monitors-tests.factor b/basis/io/monitors/monitors-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/io/monitors/monitors.factor b/basis/io/monitors/monitors.factor
old mode 100755
new mode 100644
diff --git a/basis/io/pipes/pipes-tests.factor b/basis/io/pipes/pipes-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/io/ports/ports-docs.factor b/basis/io/ports/ports-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/io/ports/ports.factor b/basis/io/ports/ports.factor
old mode 100755
new mode 100644
diff --git a/basis/io/servers/connection/connection-docs.factor b/basis/io/servers/connection/connection-docs.factor
old mode 100755
new mode 100644
index 839f3d8414..00711ce226
--- a/basis/io/servers/connection/connection-docs.factor
+++ b/basis/io/servers/connection/connection-docs.factor
@@ -58,9 +58,11 @@ ARTICLE: "io.servers.connection" "Threaded servers"
 { $subsection start-server }
 { $subsection start-server* }
 { $subsection wait-for-server }
+"Stopping the server:"
+{ $subsection stop-server }
 "From within the dynamic scope of a client handler, several words can be used to interact with the threaded server:"
 { $subsection remote-address }
-{ $subsection stop-server }
+{ $subsection stop-this-server }
 { $subsection secure-port }
 { $subsection insecure-port }
 "Additionally, the " { $link local-address } " variable is set, as in " { $link with-client } "." ;
@@ -88,7 +90,8 @@ HELP: handle-client*
 
 HELP: start-server
 { $values { "threaded-server" threaded-server } }
-{ $description "Starts a threaded server, returning when a client handler calls " { $link stop-server } "." } ;
+{ $description "Starts a threaded server." }
+{ $notes "Use " { $link stop-server } " or " { $link stop-this-server } " to stop the server." } ;
 
 HELP: wait-for-server
 { $values { "threaded-server" threaded-server } }
@@ -96,9 +99,13 @@ HELP: wait-for-server
 
 HELP: start-server*
 { $values { "threaded-server" threaded-server } }
-{ $description "Starts a threaded server, returning as soon as it is accepting connections." } ;
+{ $description "Starts a threaded server, returning as soon as it is ready to begin accepting connections." } ;
 
 HELP: stop-server
+{ $values { "threaded-server" threaded-server } }
+{ $description "Stops a threaded server, preventing it from accepting any more connections and returning to the caller of " { $link start-server } ". All client connections which have already been opened continue to be serviced." } ;
+
+HELP: stop-this-server
 { $description "Stops the current threaded server, preventing it from accepting any more connections and returning to the caller of " { $link start-server } ". All client connections which have already been opened continue to be serviced." } ;
 
 HELP: secure-port
diff --git a/basis/io/servers/connection/connection-tests.factor b/basis/io/servers/connection/connection-tests.factor
old mode 100755
new mode 100644
index aa8df0b16c..a3223ed2aa
--- a/basis/io/servers/connection/connection-tests.factor
+++ b/basis/io/servers/connection/connection-tests.factor
@@ -33,7 +33,7 @@ concurrency.promises io.encodings.ascii io threads calendar ;
     <threaded-server>
         5 >>max-connections
         1237 >>insecure
-        [ "Hello world." write stop-server ] >>handler
+        [ "Hello world." write stop-this-server ] >>handler
     "server" set
 ] unit-test
 
diff --git a/basis/io/servers/connection/connection.factor b/basis/io/servers/connection/connection.factor
old mode 100755
new mode 100644
index bde4e518ac..0516f24402
--- a/basis/io/servers/connection/connection.factor
+++ b/basis/io/servers/connection/connection.factor
@@ -136,8 +136,11 @@ PRIVATE>
     [ wait-for-server ]
     bi ;
 
-: stop-server ( -- )
-    threaded-server get [ f ] change-sockets drop dispose-each ;
+: stop-server ( threaded-server -- )
+    [ f ] change-sockets drop dispose-each ;
+
+: stop-this-server ( -- )
+    threaded-server get stop-server ;
 
 GENERIC: port ( addrspec -- n )
 
diff --git a/basis/io/sockets/secure/secure-tests.factor b/basis/io/sockets/secure/secure-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/io/sockets/secure/secure.factor b/basis/io/sockets/secure/secure.factor
old mode 100755
new mode 100644
diff --git a/basis/io/sockets/sockets-docs.factor b/basis/io/sockets/sockets-docs.factor
old mode 100755
new mode 100644
index 3c77be254c..3454f3384e
--- a/basis/io/sockets/sockets-docs.factor
+++ b/basis/io/sockets/sockets-docs.factor
@@ -104,7 +104,7 @@ HELP: <client>
 } ;
 
 HELP: with-client
-{ $values { "remote" "an address specifier" } { "encoding" "an encding descriptor" } { "quot" quotation } }
+{ $values { "remote" "an address specifier" } { "encoding" "an encoding descriptor" } { "quot" quotation } }
 { $description "Opens a network connection and calls the quotation in a new dynamic scope with " { $link input-stream } " and " { $link output-stream } " rebound to the network streams. The local address the socket is bound to is stored in the " { $link local-address } " variable." }
 { $errors "Throws an error if the connection cannot be established." } ;
 
diff --git a/basis/io/sockets/sockets-tests.factor b/basis/io/sockets/sockets-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/io/sockets/sockets.factor b/basis/io/sockets/sockets.factor
old mode 100755
new mode 100644
index 9bfcc7e310..c704382dd4
--- a/basis/io/sockets/sockets.factor
+++ b/basis/io/sockets/sockets.factor
@@ -17,10 +17,12 @@ IN: io.sockets
 ! Addressing
 GENERIC: protocol-family ( addrspec -- af )
 
-GENERIC: sockaddr-type ( addrspec -- type )
+GENERIC: sockaddr-size ( addrspec -- n )
 
 GENERIC: make-sockaddr ( addrspec -- sockaddr )
 
+GENERIC: empty-sockaddr ( addrspec -- sockaddr )
+
 GENERIC: address-size ( addrspec -- n )
 
 GENERIC: inet-ntop ( data addrspec -- str )
@@ -28,10 +30,10 @@ GENERIC: inet-ntop ( data addrspec -- str )
 GENERIC: inet-pton ( str addrspec -- data )
 
 : make-sockaddr/size ( addrspec -- sockaddr size )
-    [ make-sockaddr ] [ sockaddr-type heap-size ] bi ;
+    [ make-sockaddr ] [ sockaddr-size ] bi ;
 
 : empty-sockaddr/size ( addrspec -- sockaddr size )
-    sockaddr-type [ <c-object> ] [ heap-size ] bi ;
+    [ empty-sockaddr ] [ sockaddr-size ] bi ;
 
 GENERIC: parse-sockaddr ( sockaddr addrspec -- newaddrspec )
 
@@ -74,7 +76,9 @@ M: inet4 address-size drop 4 ;
 
 M: inet4 protocol-family drop PF_INET ;
 
-M: inet4 sockaddr-type drop "sockaddr-in" c-type ;
+M: inet4 sockaddr-size drop "sockaddr-in" heap-size ;
+
+M: inet4 empty-sockaddr drop "sockaddr-in" <c-object> ;
 
 M: inet4 make-sockaddr ( inet -- sockaddr )
     "sockaddr-in" <c-object>
@@ -128,7 +132,9 @@ M: inet6 address-size drop 16 ;
 
 M: inet6 protocol-family drop PF_INET6 ;
 
-M: inet6 sockaddr-type drop "sockaddr-in6" c-type ;
+M: inet6 sockaddr-size drop "sockaddr-in6" heap-size ;
+
+M: inet6 empty-sockaddr drop "sockaddr-in6" <c-object> ;
 
 M: inet6 make-sockaddr ( inet -- sockaddr )
     "sockaddr-in6" <c-object>
diff --git a/basis/io/streams/duplex/duplex-docs.factor b/basis/io/streams/duplex/duplex-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/io/streams/duplex/duplex-tests.factor b/basis/io/streams/duplex/duplex-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/io/streams/duplex/duplex.factor b/basis/io/streams/duplex/duplex.factor
old mode 100755
new mode 100644
diff --git a/basis/io/streams/null/null.factor b/basis/io/streams/null/null.factor
old mode 100755
new mode 100644
diff --git a/basis/io/thread/thread.factor b/basis/io/thread/thread.factor
old mode 100755
new mode 100644
diff --git a/basis/io/timeouts/timeouts-docs.factor b/basis/io/timeouts/timeouts-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/io/timeouts/timeouts.factor b/basis/io/timeouts/timeouts.factor
old mode 100755
new mode 100644
diff --git a/basis/io/unix/backend/backend.factor b/basis/io/unix/backend/backend.factor
old mode 100755
new mode 100644
diff --git a/basis/io/unix/bsd/bsd.factor b/basis/io/unix/bsd/bsd.factor
old mode 100755
new mode 100644
diff --git a/basis/io/unix/files/files-tests.factor b/basis/io/unix/files/files-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/io/unix/files/files.factor b/basis/io/unix/files/files.factor
old mode 100755
new mode 100644
diff --git a/basis/io/unix/kqueue/kqueue.factor b/basis/io/unix/kqueue/kqueue.factor
old mode 100755
new mode 100644
diff --git a/basis/io/unix/launcher/launcher-tests.factor b/basis/io/unix/launcher/launcher-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/io/unix/launcher/launcher.factor b/basis/io/unix/launcher/launcher.factor
old mode 100755
new mode 100644
diff --git a/basis/io/unix/launcher/parser/parser-tests.factor b/basis/io/unix/launcher/parser/parser-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/io/unix/launcher/parser/parser.factor b/basis/io/unix/launcher/parser/parser.factor
old mode 100755
new mode 100644
diff --git a/basis/io/unix/linux/linux.factor b/basis/io/unix/linux/linux.factor
old mode 100755
new mode 100644
diff --git a/basis/io/unix/mmap/mmap.factor b/basis/io/unix/mmap/mmap.factor
old mode 100755
new mode 100644
diff --git a/basis/io/unix/select/select.factor b/basis/io/unix/select/select.factor
old mode 100755
new mode 100644
diff --git a/basis/io/unix/sockets/secure/secure.factor b/basis/io/unix/sockets/secure/secure.factor
old mode 100755
new mode 100644
diff --git a/basis/io/unix/sockets/sockets.factor b/basis/io/unix/sockets/sockets.factor
old mode 100755
new mode 100644
index 50952dd217..8f9ff4f066
--- a/basis/io/unix/sockets/sockets.factor
+++ b/basis/io/unix/sockets/sockets.factor
@@ -139,7 +139,9 @@ M: unix (send) ( packet addrspec datagram -- )
 ! Unix domain sockets
 M: local protocol-family drop PF_UNIX ;
 
-M: local sockaddr-type drop "sockaddr-un" c-type ;
+M: local sockaddr-size drop "sockaddr-un" heap-size ;
+
+M: local empty-sockaddr drop "sockaddr-un" <c-object> ;
 
 M: local make-sockaddr
     path>> (normalize-path)
diff --git a/basis/io/unix/unix-tests.factor b/basis/io/unix/unix-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/io/unix/unix.factor b/basis/io/unix/unix.factor
old mode 100755
new mode 100644
diff --git a/basis/io/windows/files/files.factor b/basis/io/windows/files/files.factor
old mode 100755
new mode 100644
diff --git a/basis/io/windows/files/unique/unique.factor b/basis/io/windows/files/unique/unique.factor
old mode 100755
new mode 100644
diff --git a/basis/io/windows/launcher/launcher-tests.factor b/basis/io/windows/launcher/launcher-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/io/windows/launcher/launcher.factor b/basis/io/windows/launcher/launcher.factor
old mode 100755
new mode 100644
diff --git a/basis/io/windows/mmap/mmap.factor b/basis/io/windows/mmap/mmap.factor
old mode 100755
new mode 100644
diff --git a/basis/io/windows/nt/backend/backend.factor b/basis/io/windows/nt/backend/backend.factor
old mode 100755
new mode 100644
index 7fbc1dbcf9..73b77508b7
--- a/basis/io/windows/nt/backend/backend.factor
+++ b/basis/io/windows/nt/backend/backend.factor
@@ -1,9 +1,9 @@
 USING: alien alien.c-types arrays assocs combinators
 continuations destructors io io.backend io.ports io.timeouts
-io.windows io.windows.files libc kernel math namespaces
-sequences threads windows windows.errors windows.kernel32
-strings splitting io.files io.buffers qualified ascii system
-accessors locals ;
+io.windows io.windows.files io.files io.buffers io.streams.c
+libc kernel math namespaces sequences threads windows
+windows.errors windows.kernel32 strings splitting qualified
+ascii system accessors locals ;
 QUALIFIED: windows.winsock
 IN: io.windows.nt.backend
 
@@ -120,3 +120,5 @@ M: winnt (wait-to-read) ( port -- )
         [ finish-read ]
         tri
     ] with-destructors ;
+
+M: winnt (init-stdio) init-c-stdio ;
diff --git a/basis/io/windows/nt/files/files-tests.factor b/basis/io/windows/nt/files/files-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/io/windows/nt/files/files.factor b/basis/io/windows/nt/files/files.factor
old mode 100755
new mode 100644
diff --git a/basis/io/windows/nt/launcher/launcher-tests.factor b/basis/io/windows/nt/launcher/launcher-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/io/windows/nt/launcher/launcher.factor b/basis/io/windows/nt/launcher/launcher.factor
old mode 100755
new mode 100644
diff --git a/basis/io/windows/nt/launcher/test/append.factor b/basis/io/windows/nt/launcher/test/append.factor
old mode 100755
new mode 100644
diff --git a/basis/io/windows/nt/launcher/test/env.factor b/basis/io/windows/nt/launcher/test/env.factor
old mode 100755
new mode 100644
diff --git a/basis/io/windows/nt/launcher/test/stderr.factor b/basis/io/windows/nt/launcher/test/stderr.factor
old mode 100755
new mode 100644
diff --git a/basis/io/windows/nt/monitors/monitors-tests.factor b/basis/io/windows/nt/monitors/monitors-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/io/windows/nt/monitors/monitors.factor b/basis/io/windows/nt/monitors/monitors.factor
old mode 100755
new mode 100644
diff --git a/basis/io/windows/nt/nt.factor b/basis/io/windows/nt/nt.factor
old mode 100755
new mode 100644
diff --git a/basis/io/windows/nt/pipes/pipes.factor b/basis/io/windows/nt/pipes/pipes.factor
old mode 100755
new mode 100644
diff --git a/basis/io/windows/nt/privileges/privileges.factor b/basis/io/windows/nt/privileges/privileges.factor
old mode 100755
new mode 100644
diff --git a/basis/io/windows/nt/sockets/sockets.factor b/basis/io/windows/nt/sockets/sockets.factor
old mode 100755
new mode 100644
index 41c5e88f5f..5d94cf2d4a
--- a/basis/io/windows/nt/sockets/sockets.factor
+++ b/basis/io/windows/nt/sockets/sockets.factor
@@ -71,7 +71,7 @@ TUPLE: AcceptEx-args port
     dwLocalAddressLength dwRemoteAddressLength lpdwBytesReceived lpOverlapped ;
 
 : init-accept-buffer ( addr AcceptEx -- )
-    swap sockaddr-type heap-size 16 +
+    swap sockaddr-size 16 +
         [ >>dwLocalAddressLength ] [ >>dwRemoteAddressLength ] bi
         dup dwLocalAddressLength>> 2 * malloc &free >>lpOutputBuffer
         drop ; inline
@@ -135,7 +135,7 @@ TUPLE: WSARecvFrom-args port
     WSARecvFrom-args new
         swap >>port
         dup port>> handle>> handle>> >>s
-        dup port>> addr>> sockaddr-type heap-size
+        dup port>> addr>> sockaddr-size
             [ malloc &free >>lpFrom ]
             [ malloc-int &free >>lpFromLen ] bi
         make-receive-buffer >>lpBuffers
diff --git a/basis/io/windows/privileges/privileges.factor b/basis/io/windows/privileges/privileges.factor
old mode 100755
new mode 100644
diff --git a/basis/io/windows/sockets/sockets.factor b/basis/io/windows/sockets/sockets.factor
old mode 100755
new mode 100644
diff --git a/basis/io/windows/windows.factor b/basis/io/windows/windows.factor
old mode 100755
new mode 100644
diff --git a/basis/json/reader/reader.factor b/basis/json/reader/reader.factor
old mode 100755
new mode 100644
diff --git a/basis/lcs/lcs-docs.factor b/basis/lcs/lcs-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/lcs/lcs-tests.factor b/basis/lcs/lcs-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/lcs/lcs.factor b/basis/lcs/lcs.factor
old mode 100755
new mode 100644
diff --git a/basis/libc/libc-tests.factor b/basis/libc/libc-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/libc/libc.factor b/basis/libc/libc.factor
old mode 100755
new mode 100644
diff --git a/basis/listener/listener-docs.factor b/basis/listener/listener-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/listener/listener-tests.factor b/basis/listener/listener-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/listener/listener.factor b/basis/listener/listener.factor
old mode 100755
new mode 100644
diff --git a/basis/locals/locals-tests.factor b/basis/locals/locals-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/locals/locals.factor b/basis/locals/locals.factor
old mode 100755
new mode 100644
diff --git a/basis/logging/analysis/analysis.factor b/basis/logging/analysis/analysis.factor
old mode 100755
new mode 100644
diff --git a/basis/logging/insomniac/insomniac-docs.factor b/basis/logging/insomniac/insomniac-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/logging/insomniac/insomniac.factor b/basis/logging/insomniac/insomniac.factor
old mode 100755
new mode 100644
diff --git a/basis/logging/logging-docs.factor b/basis/logging/logging-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/logging/logging.factor b/basis/logging/logging.factor
old mode 100755
new mode 100644
diff --git a/basis/logging/parser/parser.factor b/basis/logging/parser/parser.factor
old mode 100755
new mode 100644
diff --git a/basis/logging/server/server.factor b/basis/logging/server/server.factor
old mode 100755
new mode 100644
diff --git a/basis/macros/macros.factor b/basis/macros/macros.factor
old mode 100755
new mode 100644
diff --git a/basis/match/match-tests.factor b/basis/match/match-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/match/match.factor b/basis/match/match.factor
old mode 100755
new mode 100644
diff --git a/basis/math/bitwise/bitwise-tests.factor b/basis/math/bitwise/bitwise-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/math/complex/complex-docs.factor b/basis/math/complex/complex-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/math/complex/complex-tests.factor b/basis/math/complex/complex-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/math/complex/complex.factor b/basis/math/complex/complex.factor
old mode 100755
new mode 100644
diff --git a/basis/math/constants/constants-docs.factor b/basis/math/constants/constants-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/math/constants/constants.factor b/basis/math/constants/constants.factor
old mode 100755
new mode 100644
diff --git a/basis/math/functions/functions-docs.factor b/basis/math/functions/functions-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/math/functions/functions-tests.factor b/basis/math/functions/functions-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/math/functions/functions.factor b/basis/math/functions/functions.factor
old mode 100755
new mode 100644
diff --git a/basis/math/intervals/intervals-tests.factor b/basis/math/intervals/intervals-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/math/intervals/intervals.factor b/basis/math/intervals/intervals.factor
old mode 100755
new mode 100644
diff --git a/basis/math/libm/libm.factor b/basis/math/libm/libm.factor
old mode 100755
new mode 100644
diff --git a/basis/math/ranges/ranges.factor b/basis/math/ranges/ranges.factor
old mode 100755
new mode 100644
diff --git a/basis/math/ratios/ratios-docs.factor b/basis/math/ratios/ratios-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/math/ratios/ratios-tests.factor b/basis/math/ratios/ratios-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/math/ratios/ratios.factor b/basis/math/ratios/ratios.factor
old mode 100755
new mode 100644
diff --git a/basis/math/vectors/vectors-docs.factor b/basis/math/vectors/vectors-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/math/vectors/vectors.factor b/basis/math/vectors/vectors.factor
old mode 100755
new mode 100644
diff --git a/basis/memoize/memoize-docs.factor b/basis/memoize/memoize-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/memoize/memoize.factor b/basis/memoize/memoize.factor
old mode 100755
new mode 100644
diff --git a/basis/mime-types/mime-types.factor b/basis/mime-types/mime-types.factor
old mode 100755
new mode 100644
diff --git a/basis/mirrors/mirrors-docs.factor b/basis/mirrors/mirrors-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/mirrors/mirrors-tests.factor b/basis/mirrors/mirrors-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/mirrors/mirrors.factor b/basis/mirrors/mirrors.factor
old mode 100755
new mode 100644
diff --git a/basis/models/compose/compose-docs.factor b/basis/models/compose/compose-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/models/compose/compose-tests.factor b/basis/models/compose/compose-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/models/compose/compose.factor b/basis/models/compose/compose.factor
old mode 100755
new mode 100644
diff --git a/basis/models/delay/delay-docs.factor b/basis/models/delay/delay-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/models/delay/delay.factor b/basis/models/delay/delay.factor
old mode 100755
new mode 100644
diff --git a/basis/models/filter/filter-docs.factor b/basis/models/filter/filter-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/models/filter/filter-tests.factor b/basis/models/filter/filter-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/models/filter/filter.factor b/basis/models/filter/filter.factor
old mode 100755
new mode 100644
diff --git a/basis/models/history/history-docs.factor b/basis/models/history/history-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/models/history/history-tests.factor b/basis/models/history/history-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/models/history/history.factor b/basis/models/history/history.factor
old mode 100755
new mode 100644
diff --git a/basis/models/mapping/mapping-tests.factor b/basis/models/mapping/mapping-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/models/mapping/mapping.factor b/basis/models/mapping/mapping.factor
old mode 100755
new mode 100644
diff --git a/basis/models/models-docs.factor b/basis/models/models-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/models/models-tests.factor b/basis/models/models-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/models/models.factor b/basis/models/models.factor
old mode 100755
new mode 100644
diff --git a/basis/models/range/range-docs.factor b/basis/models/range/range-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/models/range/range-tests.factor b/basis/models/range/range-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/models/range/range.factor b/basis/models/range/range.factor
old mode 100755
new mode 100644
diff --git a/basis/multiline/multiline-tests.factor b/basis/multiline/multiline-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/multiline/multiline.factor b/basis/multiline/multiline.factor
old mode 100755
new mode 100644
diff --git a/basis/opengl/gl/windows/windows.factor b/basis/opengl/gl/windows/windows.factor
old mode 100755
new mode 100644
diff --git a/basis/opengl/opengl.factor b/basis/opengl/opengl.factor
old mode 100755
new mode 100644
diff --git a/basis/openssl/libcrypto/libcrypto.factor b/basis/openssl/libcrypto/libcrypto.factor
old mode 100755
new mode 100644
diff --git a/basis/openssl/libssl/libssl.factor b/basis/openssl/libssl/libssl.factor
old mode 100755
new mode 100644
diff --git a/basis/openssl/openssl-tests.factor b/basis/openssl/openssl-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/openssl/openssl.factor b/basis/openssl/openssl.factor
old mode 100755
new mode 100644
diff --git a/basis/peg/parsers/parsers-docs.factor b/basis/peg/parsers/parsers-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/peg/parsers/parsers.factor b/basis/peg/parsers/parsers.factor
old mode 100755
new mode 100644
diff --git a/basis/peg/peg.factor b/basis/peg/peg.factor
old mode 100755
new mode 100644
diff --git a/basis/peg/search/search-docs.factor b/basis/peg/search/search-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/peg/search/search-tests.factor b/basis/peg/search/search-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/peg/search/search.factor b/basis/peg/search/search.factor
old mode 100755
new mode 100644
diff --git a/basis/present/present-docs.factor b/basis/present/present-docs.factor
index f148d96b32..bda7723173 100644
--- a/basis/present/present-docs.factor
+++ b/basis/present/present-docs.factor
@@ -8,6 +8,6 @@ ARTICLE: "present" "Converting objects to human-readable strings"
 HELP: present
 { $values { "object" object } { "string" string } }
 { $contract "Outputs a human-readable string from an object." }
-{ $notes "New methods can be defined by user code. Most often, this is done so that the object can be used with various words in the " { $link "html.components" } " or " { $link "urls" } " vocabularies." } ;
+{ $notes "New methods can be defined by user code. Most often, this is done so that the object can be used with various words in the " { $vocab-link "html.components" } " or " { $link "urls" } " vocabularies." } ;
 
 ABOUT: "present"
diff --git a/basis/prettyprint/backend/backend-docs.factor b/basis/prettyprint/backend/backend-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/prettyprint/backend/backend.factor b/basis/prettyprint/backend/backend.factor
old mode 100755
new mode 100644
diff --git a/basis/prettyprint/prettyprint-docs.factor b/basis/prettyprint/prettyprint-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/prettyprint/prettyprint-tests.factor b/basis/prettyprint/prettyprint-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/prettyprint/prettyprint.factor b/basis/prettyprint/prettyprint.factor
old mode 100755
new mode 100644
diff --git a/basis/prettyprint/sections/sections-docs.factor b/basis/prettyprint/sections/sections-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/qualified/qualified-docs.factor b/basis/qualified/qualified-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/random/dummy/dummy.factor b/basis/random/dummy/dummy.factor
old mode 100755
new mode 100644
diff --git a/basis/random/mersenne-twister/mersenne-twister-tests.factor b/basis/random/mersenne-twister/mersenne-twister-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/random/mersenne-twister/mersenne-twister.factor b/basis/random/mersenne-twister/mersenne-twister.factor
old mode 100755
new mode 100644
diff --git a/basis/random/random.factor b/basis/random/random.factor
old mode 100755
new mode 100644
diff --git a/basis/sequences/deep/deep-tests.factor b/basis/sequences/deep/deep-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/sequences/next/next.factor b/basis/sequences/next/next.factor
old mode 100755
new mode 100644
diff --git a/basis/serialize/serialize-docs.factor b/basis/serialize/serialize-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/serialize/serialize-tests.factor b/basis/serialize/serialize-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/serialize/serialize.factor b/basis/serialize/serialize.factor
old mode 100755
new mode 100644
diff --git a/basis/shuffle/shuffle-tests.factor b/basis/shuffle/shuffle-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/smtp/server/server.factor b/basis/smtp/server/server.factor
old mode 100755
new mode 100644
diff --git a/basis/smtp/smtp-tests.factor b/basis/smtp/smtp-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/smtp/smtp.factor b/basis/smtp/smtp.factor
old mode 100755
new mode 100644
diff --git a/basis/stack-checker/backend/backend.factor b/basis/stack-checker/backend/backend.factor
old mode 100755
new mode 100644
diff --git a/basis/stack-checker/known-words/known-words.factor b/basis/stack-checker/known-words/known-words.factor
old mode 100755
new mode 100644
diff --git a/basis/stack-checker/stack-checker-docs.factor b/basis/stack-checker/stack-checker-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/stack-checker/stack-checker-tests.factor b/basis/stack-checker/stack-checker-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/stack-checker/stack-checker.factor b/basis/stack-checker/stack-checker.factor
old mode 100755
new mode 100644
diff --git a/basis/stack-checker/state/state.factor b/basis/stack-checker/state/state.factor
old mode 100755
new mode 100644
diff --git a/basis/stack-checker/transforms/transforms-docs.factor b/basis/stack-checker/transforms/transforms-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/stack-checker/transforms/transforms-tests.factor b/basis/stack-checker/transforms/transforms-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/stack-checker/transforms/transforms.factor b/basis/stack-checker/transforms/transforms.factor
old mode 100755
new mode 100644
diff --git a/basis/state-parser/state-parser-tests.factor b/basis/state-parser/state-parser-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/symbols/symbols-tests.factor b/basis/symbols/symbols-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/symbols/symbols.factor b/basis/symbols/symbols.factor
old mode 100755
new mode 100644
diff --git a/basis/syndication/syndication-tests.factor b/basis/syndication/syndication-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/threads/threads-docs.factor b/basis/threads/threads-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/threads/threads-tests.factor b/basis/threads/threads-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/threads/threads.factor b/basis/threads/threads.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/annotations/annotations-docs.factor b/basis/tools/annotations/annotations-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/annotations/annotations-tests.factor b/basis/tools/annotations/annotations-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/annotations/annotations.factor b/basis/tools/annotations/annotations.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/completion/completion.factor b/basis/tools/completion/completion.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/crossref/crossref-tests.factor b/basis/tools/crossref/crossref-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/crossref/crossref.factor b/basis/tools/crossref/crossref.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/crossref/test/foo.factor b/basis/tools/crossref/test/foo.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/deploy/backend/backend.factor b/basis/tools/deploy/backend/backend.factor
old mode 100755
new mode 100644
index cb899f4b87..a0565c6bab
--- a/basis/tools/deploy/backend/backend.factor
+++ b/basis/tools/deploy/backend/backend.factor
@@ -10,13 +10,15 @@ io.encodings.utf8 destructors accessors ;
 IN: tools.deploy.backend
 
 : copy-vm ( executable bundle-name extension -- vm )
-  [ prepend-path ] dip append vm over copy-file ;
+    [ prepend-path ] dip append vm over copy-file ;
 
 : copy-fonts ( name dir -- )
-  append-path "resource:fonts/" swap copy-tree-into ;
+    deploy-ui? get [
+        append-path "resource:fonts/" swap copy-tree-into
+    ] [ 2drop ] if ;
 
 : image-name ( vocab bundle-name -- str )
-  prepend-path ".image" append ;
+    prepend-path ".image" append ;
 
 : copy-lines ( -- )
     readln [ print flush copy-lines ] when* ;
diff --git a/basis/tools/deploy/config/config-docs.factor b/basis/tools/deploy/config/config-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/deploy/config/config.factor b/basis/tools/deploy/config/config.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/deploy/deploy-docs.factor b/basis/tools/deploy/deploy-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/deploy/deploy-tests.factor b/basis/tools/deploy/deploy-tests.factor
old mode 100755
new mode 100644
index 1d5b59bf0c..db4255cdb1
--- a/basis/tools/deploy/deploy-tests.factor
+++ b/basis/tools/deploy/deploy-tests.factor
@@ -66,7 +66,7 @@ http.server.responses http.server.static io.servers.connection ;
 SINGLETON: quit-responder
 
 M: quit-responder call-responder*
-    2drop stop-server "Goodbye" "text/html" <content> ;
+    2drop stop-this-server "Goodbye" "text/html" <content> ;
 
 : add-quot-responder ( responder -- responder )
     quit-responder "quit" add-responder ;
diff --git a/basis/tools/deploy/deploy.factor b/basis/tools/deploy/deploy.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/deploy/macosx/macosx.factor b/basis/tools/deploy/macosx/macosx.factor
old mode 100755
new mode 100644
index ee60ce3982..d3464993e1
--- a/basis/tools/deploy/macosx/macosx.factor
+++ b/basis/tools/deploy/macosx/macosx.factor
@@ -4,7 +4,7 @@ USING: io io.files kernel namespaces make sequences
 system tools.deploy.backend tools.deploy.config assocs
 hashtables prettyprint io.unix.backend cocoa io.encodings.utf8
 io.backend cocoa.application cocoa.classes cocoa.plists
-qualified ;
+qualified combinators ;
 IN: tools.deploy.macosx
 
 : bundle-dir ( -- dir )
@@ -30,12 +30,26 @@ IN: tools.deploy.macosx
     "Contents/Info.plist" append-path
     write-plist ;
 
+: copy-dll ( bundle-name -- )
+    "Frameworks/libfactor.dylib" copy-bundle-dir ;
+
+: copy-freetype ( bundle-name -- )
+    deploy-ui? get [ "Frameworks" copy-bundle-dir ] [ drop ] if ;
+
+: copy-nib ( bundle-name -- )
+    deploy-ui? get [
+        "Resources/English.lproj/MiniFactor.nib" copy-bundle-dir
+    ] [ drop ] if ;
+
 : create-app-dir ( vocab bundle-name -- vm )
     [
-        nip
-        [ "Frameworks" copy-bundle-dir ]
-        [ "Resources/English.lproj/MiniFactor.nib" copy-bundle-dir ]
-        [ "Contents/Resources/" copy-fonts ] tri
+        nip {
+            [ copy-dll ]
+            [ copy-freetype ]
+            [ copy-nib ]
+            [ "Contents/Resources/" copy-fonts ]
+            [ "Contents/Resources" append-path make-directories ]
+        } cleave
     ]
     [ create-app-plist ]
     [ "Contents/MacOS/" append-path "" copy-vm ] 2tri ;
diff --git a/basis/tools/deploy/shaker/shaker.factor b/basis/tools/deploy/shaker/shaker.factor
old mode 100755
new mode 100644
index b502a4b4a2..7c02e87209
--- a/basis/tools/deploy/shaker/shaker.factor
+++ b/basis/tools/deploy/shaker/shaker.factor
@@ -1,20 +1,18 @@
 ! Copyright (C) 2007, 2008 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors qualified io.streams.c init fry namespaces make
-assocs kernel parser lexer strings.parser tools.deploy.config
-vocabs sequences words words.private memory kernel.private
-continuations io prettyprint vocabs.loader debugger system
-strings sets vectors quotations byte-arrays sorting ;
+USING: accessors qualified io.backend io.streams.c init fry
+namespaces make assocs kernel parser lexer strings.parser
+tools.deploy.config vocabs sequences words words.private memory
+kernel.private continuations io prettyprint vocabs.loader
+debugger system strings sets vectors quotations byte-arrays
+sorting compiler.units definitions ;
 QUALIFIED: bootstrap.stage2
 QUALIFIED: classes
 QUALIFIED: command-line
 QUALIFIED: compiler.errors.private
-QUALIFIED: compiler.units
 QUALIFIED: continuations
 QUALIFIED: definitions
 QUALIFIED: init
-QUALIFIED: io.backend
-QUALIFIED: io.thread
 QUALIFIED: layouts
 QUALIFIED: listener
 QUALIFIED: prettyprint.config
@@ -87,8 +85,8 @@ IN: tools.deploy.shaker
             ] change-props drop
         ] each
     ] [
-        "Remaining word properties:" print
-        [ props>> keys ] gather .
+        "Remaining word properties:\n" show
+        [ props>> keys ] gather unparse show
     ] [
         H{ } clone '[
             [ [ _ [ ] cache ] map ] change-props drop
@@ -198,11 +196,6 @@ IN: tools.deploy.shaker
     strip-word-names? [ dup strip-word-names ] when
     2drop ;
 
-: strip-recompile-hook ( -- )
-    [ [ f ] { } map>assoc ]
-    compiler.units:recompile-hook
-    set-global ;
-
 : strip-vocab-globals ( except names -- words )
     [ child-vocabs [ words ] map concat ] map concat swap diff ;
 
@@ -220,20 +213,21 @@ IN: tools.deploy.shaker
             continuations:restarts
             listener:error-hook
             init:init-hooks
-            io.thread:io-thread
             source-files:source-files
             input-stream
             output-stream
             error-stream
         } %
 
+        "io-thread" "io.thread" lookup ,
+
         "mallocs" "libc.private" lookup ,
 
         deploy-threads? [
             "initial-thread" "threads" lookup ,
         ] unless
 
-        strip-io? [ io.backend:io-backend , ] when
+        strip-io? [ io-backend , ] when
 
         { } {
             "alarms"
@@ -260,9 +254,9 @@ IN: tools.deploy.shaker
                 command-line:main-vocab-hook
                 compiled-crossref
                 compiled-generic-crossref
-                compiler.units:recompile-hook
-                compiler.units:update-tuples-hook
-                compiler.units:definition-observers
+                recompile-hook
+                update-tuples-hook
+                definition-observers
                 definitions:crossref
                 interactive-vocabs
                 layouts:num-tags
@@ -326,6 +320,14 @@ IN: tools.deploy.shaker
         21 setenv
     ] [ drop ] if ;
 
+: strip-c-io ( -- )
+    deploy-io get 2 = [
+        [
+            c-io-backend forget
+            "io.streams.c" forget-vocab
+        ] with-compilation-unit
+    ] unless ;
+
 : compress ( pred string -- )
     "Compressing " prepend show
     instances
@@ -358,15 +360,21 @@ SYMBOL: deploy-vocab
         init-hooks get values concat %
         ,
         strip-io? [ \ flush , ] unless
-    ] [ ] make "Boot quotation: " write dup . flush
+    ] [ ] make "Boot quotation: " show dup unparse show
     set-boot-quot ;
 
+: init-stripper ( -- )
+    t "quiet" set-global
+    f output-stream set-global ;
+
 : strip ( -- )
+    init-stripper
     strip-libc
     strip-cocoa
     strip-debugger
-    strip-recompile-hook
     strip-init-hooks
+    strip-c-io
+    f 5 setenv ! we can't use the Factor debugger or Factor I/O anymore
     deploy-vocab get vocab-main set-boot-quot*
     stripped-word-props >r
     stripped-globals strip-globals
diff --git a/basis/tools/deploy/shaker/strip-cocoa.factor b/basis/tools/deploy/shaker/strip-cocoa.factor
old mode 100755
new mode 100644
index 2cf803e270..d5249dc20c
--- a/basis/tools/deploy/shaker/strip-cocoa.factor
+++ b/basis/tools/deploy/shaker/strip-cocoa.factor
@@ -2,7 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: cocoa cocoa.messages cocoa.application cocoa.nibs assocs
 namespaces kernel kernel.private words compiler.units sequences
-ui ui.cocoa init ;
+init vocabs ;
 IN: tools.deploy.shaker.cocoa
 
 : pool ( obj -- obj' ) \ pool get [ ] cache ;
@@ -23,9 +23,12 @@ IN: cocoa.application
 
 H{ } clone \ pool [
     global [
-        stop-after-last-window? set
+        "stop-after-last-window?" "ui" lookup set
 
-        [ "MiniFactor.nib" load-nib ] cocoa-init-hook set-global
+        "ui.cocoa" vocab [
+            [ "MiniFactor.nib" load-nib ]
+            "cocoa-init-hook" "ui.cocoa" lookup set-global
+        ] when
 
         ! Only keeps those methods that we actually call
         sent-messages get super-sent-messages get assoc-union
diff --git a/basis/tools/deploy/shaker/strip-debugger.factor b/basis/tools/deploy/shaker/strip-debugger.factor
old mode 100755
new mode 100644
index 2302b61715..bdcc6c237e
--- a/basis/tools/deploy/shaker/strip-debugger.factor
+++ b/basis/tools/deploy/shaker/strip-debugger.factor
@@ -1,8 +1,14 @@
-USING: kernel threads threads.private ;
+USING: compiler.units words vocabs kernel threads.private ;
 IN: debugger
 
 : print-error ( error -- ) die drop ;
 
 : error. ( error -- ) die drop ;
 
-M: thread error-in-thread ( error thread -- ) die 2drop ;
+"threads" vocab [
+    [
+        "error-in-thread" "threads" lookup
+        [ die 2drop ]
+        define
+    ] with-compilation-unit
+] when
diff --git a/basis/tools/deploy/shaker/strip-libc.factor b/basis/tools/deploy/shaker/strip-libc.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/deploy/test/1/1.factor b/basis/tools/deploy/test/1/1.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/deploy/test/1/deploy.factor b/basis/tools/deploy/test/1/deploy.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/deploy/test/2/2.factor b/basis/tools/deploy/test/2/2.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/deploy/test/2/deploy.factor b/basis/tools/deploy/test/2/deploy.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/deploy/test/3/3.factor b/basis/tools/deploy/test/3/3.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/deploy/test/3/deploy.factor b/basis/tools/deploy/test/3/deploy.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/deploy/windows/windows-tests.factor b/basis/tools/deploy/windows/windows-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/deploy/windows/windows.factor b/basis/tools/deploy/windows/windows.factor
old mode 100755
new mode 100644
index e0ce2c268a..ce4fee19d7
--- a/basis/tools/deploy/windows/windows.factor
+++ b/basis/tools/deploy/windows/windows.factor
@@ -5,16 +5,23 @@ tools.deploy.backend tools.deploy.config assocs hashtables
 prettyprint combinators windows.shell32 windows.user32 ;
 IN: tools.deploy.windows
 
-: copy-dlls ( bundle-name -- )
-    {
-        "resource:freetype6.dll"
-        "resource:zlib1.dll"
-        "resource:factor.dll"
-    } swap copy-files-into ;
+: copy-dll ( bundle-name -- )
+    "resource:factor.dll" swap copy-file-into ;
+
+: copy-freetype ( bundle-name -- )
+    deploy-ui? get [
+        {
+            "resource:freetype6.dll"
+            "resource:zlib1.dll"
+        } swap copy-files-into
+    ] when ;
 
 : create-exe-dir ( vocab bundle-name -- vm )
-    dup copy-dlls
-    dup "" copy-fonts
+    deploy-ui? get [
+        dup copy-dll
+        dup copy-freetype
+        dup "" copy-fonts
+    ] when
     ".exe" copy-vm ;
 
 M: winnt deploy*
diff --git a/basis/tools/disassembler/disassembler-docs.factor b/basis/tools/disassembler/disassembler-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/disassembler/disassembler-tests.factor b/basis/tools/disassembler/disassembler-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/disassembler/disassembler.factor b/basis/tools/disassembler/disassembler.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/memory/memory-docs.factor b/basis/tools/memory/memory-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/memory/memory.factor b/basis/tools/memory/memory.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/profiler/profiler-docs.factor b/basis/tools/profiler/profiler-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/profiler/profiler-tests.factor b/basis/tools/profiler/profiler-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/profiler/profiler.factor b/basis/tools/profiler/profiler.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/scaffold/scaffold-docs.factor b/basis/tools/scaffold/scaffold-docs.factor
index 479b636fcf..d2989d3cac 100644
--- a/basis/tools/scaffold/scaffold-docs.factor
+++ b/basis/tools/scaffold/scaffold-docs.factor
@@ -5,7 +5,7 @@ IN: tools.scaffold
 
 HELP: developer-name
 { $description "Set this symbol to hold your name so that the scaffold tools can generate the correct file header for copyright. Setting this variable in your .factor-boot-rc file is recommended." }
-{ $unchecked-example "USING: namespaces tools.scaffold ;\n\"Stacky Guy\" developer-name set-global" } ;
+{ $code "USING: namespaces tools.scaffold ;\n\"Stacky Guy\" developer-name set-global" } ;
 
 HELP: help.
 { $values
diff --git a/basis/tools/test/test-docs.factor b/basis/tools/test/test-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/test/test.factor b/basis/tools/test/test.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/test/ui/ui.factor b/basis/tools/test/ui/ui.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/threads/threads.factor b/basis/tools/threads/threads.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/time/time-docs.factor b/basis/tools/time/time-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/vocabs/browser/browser-docs.factor b/basis/tools/vocabs/browser/browser-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/vocabs/browser/browser-tests.factor b/basis/tools/vocabs/browser/browser-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/vocabs/browser/browser.factor b/basis/tools/vocabs/browser/browser.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/vocabs/monitor/monitor.factor b/basis/tools/vocabs/monitor/monitor.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/vocabs/vocabs-docs.factor b/basis/tools/vocabs/vocabs-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/vocabs/vocabs.factor b/basis/tools/vocabs/vocabs.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/walker/debug/debug.factor b/basis/tools/walker/debug/debug.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/walker/walker-tests.factor b/basis/tools/walker/walker-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/tools/walker/walker.factor b/basis/tools/walker/walker.factor
old mode 100755
new mode 100644
diff --git a/basis/tuple-arrays/tuple-arrays-tests.factor b/basis/tuple-arrays/tuple-arrays-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/backend/backend.factor b/basis/ui/backend/backend.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/cocoa/cocoa.factor b/basis/ui/cocoa/cocoa.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/cocoa/tools/tools.factor b/basis/ui/cocoa/tools/tools.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/cocoa/views/views.factor b/basis/ui/cocoa/views/views.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/commands/commands.factor b/basis/ui/commands/commands.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/freetype/freetype-docs.factor b/basis/ui/freetype/freetype-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/freetype/freetype.factor b/basis/ui/freetype/freetype.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/books/books-docs.factor b/basis/ui/gadgets/books/books-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/books/books-tests.factor b/basis/ui/gadgets/books/books-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/books/books.factor b/basis/ui/gadgets/books/books.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/buttons/buttons-docs.factor b/basis/ui/gadgets/buttons/buttons-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/buttons/buttons-tests.factor b/basis/ui/gadgets/buttons/buttons-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/buttons/buttons.factor b/basis/ui/gadgets/buttons/buttons.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/canvas/canvas-tests.factor b/basis/ui/gadgets/canvas/canvas-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/canvas/canvas.factor b/basis/ui/gadgets/canvas/canvas.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/editors/editors-docs.factor b/basis/ui/gadgets/editors/editors-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/editors/editors-tests.factor b/basis/ui/gadgets/editors/editors-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/editors/editors.factor b/basis/ui/gadgets/editors/editors.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/frames/frames-docs.factor b/basis/ui/gadgets/frames/frames-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/gadgets-docs.factor b/basis/ui/gadgets/gadgets-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/gadgets-tests.factor b/basis/ui/gadgets/gadgets-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/gadgets.factor b/basis/ui/gadgets/gadgets.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/grid-lines/grid-lines-docs.factor b/basis/ui/gadgets/grid-lines/grid-lines-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/grid-lines/grid-lines.factor b/basis/ui/gadgets/grid-lines/grid-lines.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/grids/grids-docs.factor b/basis/ui/gadgets/grids/grids-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/incremental/incremental-docs.factor b/basis/ui/gadgets/incremental/incremental-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/incremental/incremental.factor b/basis/ui/gadgets/incremental/incremental.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/labelled/labelled-docs.factor b/basis/ui/gadgets/labelled/labelled-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/labelled/labelled.factor b/basis/ui/gadgets/labelled/labelled.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/labels/labels-docs.factor b/basis/ui/gadgets/labels/labels-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/labels/labels.factor b/basis/ui/gadgets/labels/labels.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/lists/lists-docs.factor b/basis/ui/gadgets/lists/lists-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/lists/lists.factor b/basis/ui/gadgets/lists/lists.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/menus/menus-docs.factor b/basis/ui/gadgets/menus/menus-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/packs/packs-docs.factor b/basis/ui/gadgets/packs/packs-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/packs/packs.factor b/basis/ui/gadgets/packs/packs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/panes/panes-docs.factor b/basis/ui/gadgets/panes/panes-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/panes/panes-tests.factor b/basis/ui/gadgets/panes/panes-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/panes/panes.factor b/basis/ui/gadgets/panes/panes.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/presentations/presentations-docs.factor b/basis/ui/gadgets/presentations/presentations-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/scrollers/scrollers-docs.factor b/basis/ui/gadgets/scrollers/scrollers-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/scrollers/scrollers-tests.factor b/basis/ui/gadgets/scrollers/scrollers-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/scrollers/scrollers.factor b/basis/ui/gadgets/scrollers/scrollers.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/sliders/sliders-docs.factor b/basis/ui/gadgets/sliders/sliders-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/sliders/sliders.factor b/basis/ui/gadgets/sliders/sliders.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/slots/slots.factor b/basis/ui/gadgets/slots/slots.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/status-bar/status-bar-docs.factor b/basis/ui/gadgets/status-bar/status-bar-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/status-bar/status-bar.factor b/basis/ui/gadgets/status-bar/status-bar.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/theme/theme.factor b/basis/ui/gadgets/theme/theme.factor
index 46fa0105a3..5e4a2fbf4c 100644
--- a/basis/ui/gadgets/theme/theme.factor
+++ b/basis/ui/gadgets/theme/theme.factor
@@ -2,7 +2,8 @@
 ! Copyright (C) 2006, 2007 Alex Chapman.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: arrays kernel sequences io.styles ui.gadgets ui.render
-colors accessors ;
+colors colors.gray qualified accessors ;
+QUALIFIED: colors
 IN: ui.gadgets.theme
 
 : solid-interior ( gadget color -- gadget )
@@ -12,7 +13,7 @@ IN: ui.gadgets.theme
     <solid> >>boundary ; inline
 
 : faint-boundary ( gadget -- gadget )
-    gray solid-boundary ; inline
+    colors:gray solid-boundary ; inline
 
 : selection-color ( -- color ) light-purple ;
 
diff --git a/basis/ui/gadgets/tracks/tracks-docs.factor b/basis/ui/gadgets/tracks/tracks-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/viewports/viewports-docs.factor b/basis/ui/gadgets/viewports/viewports-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/viewports/viewports.factor b/basis/ui/gadgets/viewports/viewports.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/worlds/worlds-docs.factor b/basis/ui/gadgets/worlds/worlds-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gadgets/worlds/worlds.factor b/basis/ui/gadgets/worlds/worlds.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/gestures/gestures.factor b/basis/ui/gestures/gestures.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/operations/operations-tests.factor b/basis/ui/operations/operations-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/operations/operations.factor b/basis/ui/operations/operations.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/render/render-docs.factor b/basis/ui/render/render-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/browser/browser-tests.factor b/basis/ui/tools/browser/browser-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/browser/browser.factor b/basis/ui/tools/browser/browser.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/debugger/debugger-docs.factor b/basis/ui/tools/debugger/debugger-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/deploy/deploy-docs.factor b/basis/ui/tools/deploy/deploy-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/deploy/deploy.factor b/basis/ui/tools/deploy/deploy.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/interactor/interactor-docs.factor b/basis/ui/tools/interactor/interactor-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/interactor/interactor-tests.factor b/basis/ui/tools/interactor/interactor-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/interactor/interactor.factor b/basis/ui/tools/interactor/interactor.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/listener/listener-tests.factor b/basis/ui/tools/listener/listener-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/listener/listener.factor b/basis/ui/tools/listener/listener.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/operations/operations.factor b/basis/ui/tools/operations/operations.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/profiler/profiler.factor b/basis/ui/tools/profiler/profiler.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/search/search-tests.factor b/basis/ui/tools/search/search-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/search/search.factor b/basis/ui/tools/search/search.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/tools-docs.factor b/basis/ui/tools/tools-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/tools-tests.factor b/basis/ui/tools/tools-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/tools.factor b/basis/ui/tools/tools.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/traceback/traceback.factor b/basis/ui/tools/traceback/traceback.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/walker/walker-docs.factor b/basis/ui/tools/walker/walker-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/walker/walker-tests.factor b/basis/ui/tools/walker/walker-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/walker/walker.factor b/basis/ui/tools/walker/walker.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/workspace/workspace-tests.factor b/basis/ui/tools/workspace/workspace-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/tools/workspace/workspace.factor b/basis/ui/tools/workspace/workspace.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/traverse/traverse-tests.factor b/basis/ui/traverse/traverse-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/ui-docs.factor b/basis/ui/ui-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/ui.factor b/basis/ui/ui.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/windows/windows.factor b/basis/ui/windows/windows.factor
old mode 100755
new mode 100644
diff --git a/basis/ui/x11/x11.factor b/basis/ui/x11/x11.factor
old mode 100755
new mode 100644
diff --git a/basis/unicode/breaks/breaks-tests.factor b/basis/unicode/breaks/breaks-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/unicode/breaks/breaks.factor b/basis/unicode/breaks/breaks.factor
old mode 100755
new mode 100644
diff --git a/basis/unicode/case/case-tests.factor b/basis/unicode/case/case-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/unicode/case/case.factor b/basis/unicode/case/case.factor
old mode 100755
new mode 100644
diff --git a/basis/unicode/collation/collation-tests.factor b/basis/unicode/collation/collation-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/unicode/collation/collation.factor b/basis/unicode/collation/collation.factor
old mode 100755
new mode 100644
diff --git a/basis/unicode/data/data.factor b/basis/unicode/data/data.factor
old mode 100755
new mode 100644
diff --git a/basis/unicode/normalize/normalize-tests.factor b/basis/unicode/normalize/normalize-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/unicode/normalize/normalize.factor b/basis/unicode/normalize/normalize.factor
old mode 100755
new mode 100644
diff --git a/basis/unicode/script/script-docs.factor b/basis/unicode/script/script-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/unicode/script/script-tests.factor b/basis/unicode/script/script-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/unicode/script/script.factor b/basis/unicode/script/script.factor
old mode 100755
new mode 100644
diff --git a/basis/unicode/syntax/syntax.factor b/basis/unicode/syntax/syntax.factor
old mode 100755
new mode 100644
diff --git a/basis/unix/bsd/bsd.factor b/basis/unix/bsd/bsd.factor
old mode 100755
new mode 100644
diff --git a/basis/unix/linux/ifreq/ifreq.factor b/basis/unix/linux/ifreq/ifreq.factor
old mode 100755
new mode 100644
diff --git a/basis/unix/linux/linux.factor b/basis/unix/linux/linux.factor
old mode 100755
new mode 100644
diff --git a/basis/unix/process/process.factor b/basis/unix/process/process.factor
old mode 100755
new mode 100644
diff --git a/basis/unix/types/freebsd/freebsd.factor b/basis/unix/types/freebsd/freebsd.factor
old mode 100755
new mode 100644
diff --git a/basis/unix/types/netbsd/32/32.factor b/basis/unix/types/netbsd/32/32.factor
old mode 100755
new mode 100644
diff --git a/basis/unix/types/netbsd/64/64.factor b/basis/unix/types/netbsd/64/64.factor
old mode 100755
new mode 100644
diff --git a/basis/unix/types/netbsd/netbsd.factor b/basis/unix/types/netbsd/netbsd.factor
old mode 100755
new mode 100644
diff --git a/basis/unix/types/openbsd/openbsd.factor b/basis/unix/types/openbsd/openbsd.factor
old mode 100755
new mode 100644
diff --git a/basis/unix/unix.factor b/basis/unix/unix.factor
old mode 100755
new mode 100644
diff --git a/basis/urls/secure/secure.factor b/basis/urls/secure/secure.factor
new file mode 100644
index 0000000000..d2fa55f7f3
--- /dev/null
+++ b/basis/urls/secure/secure.factor
@@ -0,0 +1,6 @@
+! Copyright (C) 2008 Slava Pestov.
+! See http://factorcode.org/license.txt for BSD license.
+USING: urls urls.private io.sockets io.sockets.secure ;
+IN: urls.secure
+
+M: abstract-inet >secure-addr <secure> ;
diff --git a/basis/urls/urls.factor b/basis/urls/urls.factor
index 5cc8c9693b..30e8c68f9d 100644
--- a/basis/urls/urls.factor
+++ b/basis/urls/urls.factor
@@ -2,7 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: kernel ascii combinators combinators.short-circuit
 sequences splitting fry namespaces make assocs arrays strings
-io.sockets io.sockets.secure io.encodings.string
+io.sockets io.encodings.string
 io.encodings.utf8 math math.parser accessors parser
 strings.parser lexer prettyprint.backend hashtables present
 peg.ebnf urls.encoding ;
@@ -159,6 +159,12 @@ PRIVATE>
 : secure-protocol? ( protocol -- ? )
     "https" = ;
 
+<PRIVATE
+
+GENERIC: >secure-addr ( addrspec -- addrspec' )
+
+PRIVATE>
+
 : url-addr ( url -- addr )
     [
         [ host>> ]
@@ -166,7 +172,7 @@ PRIVATE>
         [ protocol>> protocol-port ]
         tri or <inet>
     ] [ protocol>> ] bi
-    secure-protocol? [ <secure> ] when ;
+    secure-protocol? [ >secure-addr ] when ;
 
 : ensure-port ( url -- url )
     dup protocol>> '[ _ protocol-port or ] change-port ;
diff --git a/basis/values/values-docs.factor b/basis/values/values-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/values/values-tests.factor b/basis/values/values-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/values/values.factor b/basis/values/values.factor
old mode 100755
new mode 100644
diff --git a/basis/windows/advapi32/advapi32.factor b/basis/windows/advapi32/advapi32.factor
old mode 100755
new mode 100644
diff --git a/basis/windows/com/com-tests.factor b/basis/windows/com/com-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/windows/com/com.factor b/basis/windows/com/com.factor
old mode 100755
new mode 100644
diff --git a/basis/windows/com/syntax/syntax-docs.factor b/basis/windows/com/syntax/syntax-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/windows/com/syntax/syntax.factor b/basis/windows/com/syntax/syntax.factor
old mode 100755
new mode 100644
diff --git a/basis/windows/com/wrapper/wrapper-docs.factor b/basis/windows/com/wrapper/wrapper-docs.factor
old mode 100755
new mode 100644
diff --git a/basis/windows/com/wrapper/wrapper.factor b/basis/windows/com/wrapper/wrapper.factor
old mode 100755
new mode 100644
diff --git a/basis/windows/dinput/constants/constants.factor b/basis/windows/dinput/constants/constants.factor
old mode 100755
new mode 100644
diff --git a/basis/windows/dinput/dinput.factor b/basis/windows/dinput/dinput.factor
old mode 100755
new mode 100644
diff --git a/basis/windows/gdi32/gdi32.factor b/basis/windows/gdi32/gdi32.factor
old mode 100755
new mode 100644
diff --git a/basis/windows/kernel32/kernel32.factor b/basis/windows/kernel32/kernel32.factor
old mode 100755
new mode 100644
diff --git a/basis/windows/messages/messages.factor b/basis/windows/messages/messages.factor
old mode 100755
new mode 100644
diff --git a/basis/windows/ole32/ole32.factor b/basis/windows/ole32/ole32.factor
old mode 100755
new mode 100644
diff --git a/basis/windows/opengl32/opengl32.factor b/basis/windows/opengl32/opengl32.factor
old mode 100755
new mode 100644
diff --git a/basis/windows/user32/user32.factor b/basis/windows/user32/user32.factor
old mode 100755
new mode 100644
diff --git a/basis/windows/winsock/winsock.factor b/basis/windows/winsock/winsock.factor
old mode 100755
new mode 100644
diff --git a/basis/x11/clipboard/clipboard.factor b/basis/x11/clipboard/clipboard.factor
old mode 100755
new mode 100644
diff --git a/basis/x11/windows/windows.factor b/basis/x11/windows/windows.factor
old mode 100755
new mode 100644
diff --git a/basis/x11/xim/xim.factor b/basis/x11/xim/xim.factor
old mode 100755
new mode 100644
diff --git a/basis/x11/xlib/xlib.factor b/basis/x11/xlib/xlib.factor
old mode 100755
new mode 100644
diff --git a/basis/xml-rpc/xml-rpc.factor b/basis/xml-rpc/xml-rpc.factor
old mode 100755
new mode 100644
diff --git a/basis/xml/char-classes/char-classes.factor b/basis/xml/char-classes/char-classes.factor
old mode 100755
new mode 100644
diff --git a/basis/xml/data/data.factor b/basis/xml/data/data.factor
old mode 100755
new mode 100644
diff --git a/basis/xml/errors/errors-tests.factor b/basis/xml/errors/errors-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/xml/tests/soap.factor b/basis/xml/tests/soap.factor
old mode 100755
new mode 100644
diff --git a/basis/xml/utilities/utilities.factor b/basis/xml/utilities/utilities.factor
old mode 100755
new mode 100644
diff --git a/basis/xmode/catalog/catalog.factor b/basis/xmode/catalog/catalog.factor
old mode 100755
new mode 100644
diff --git a/basis/xmode/code2html/code2html.factor b/basis/xmode/code2html/code2html.factor
old mode 100755
new mode 100644
diff --git a/basis/xmode/code2html/responder/responder.factor b/basis/xmode/code2html/responder/responder.factor
old mode 100755
new mode 100644
diff --git a/basis/xmode/loader/loader.factor b/basis/xmode/loader/loader.factor
old mode 100755
new mode 100644
diff --git a/basis/xmode/marker/marker-tests.factor b/basis/xmode/marker/marker-tests.factor
old mode 100755
new mode 100644
diff --git a/basis/xmode/marker/marker.factor b/basis/xmode/marker/marker.factor
old mode 100755
new mode 100644
diff --git a/basis/xmode/marker/state/state.factor b/basis/xmode/marker/state/state.factor
old mode 100755
new mode 100644
diff --git a/basis/xmode/rules/rules.factor b/basis/xmode/rules/rules.factor
old mode 100755
new mode 100644
diff --git a/basis/xmode/tokens/tokens.factor b/basis/xmode/tokens/tokens.factor
old mode 100755
new mode 100644
diff --git a/basis/xmode/utilities/utilities-tests.factor b/basis/xmode/utilities/utilities-tests.factor
old mode 100755
new mode 100644
diff --git a/core/alien/alien-docs.factor b/core/alien/alien-docs.factor
old mode 100755
new mode 100644
diff --git a/core/alien/alien-tests.factor b/core/alien/alien-tests.factor
old mode 100755
new mode 100644
diff --git a/core/alien/alien.factor b/core/alien/alien.factor
old mode 100755
new mode 100644
diff --git a/core/arrays/arrays-docs.factor b/core/arrays/arrays-docs.factor
old mode 100755
new mode 100644
diff --git a/core/arrays/arrays-tests.factor b/core/arrays/arrays-tests.factor
old mode 100755
new mode 100644
diff --git a/core/arrays/arrays.factor b/core/arrays/arrays.factor
old mode 100755
new mode 100644
diff --git a/core/assocs/assocs-docs.factor b/core/assocs/assocs-docs.factor
old mode 100755
new mode 100644
diff --git a/core/assocs/assocs-tests.factor b/core/assocs/assocs-tests.factor
old mode 100755
new mode 100644
diff --git a/core/assocs/assocs.factor b/core/assocs/assocs.factor
old mode 100755
new mode 100644
diff --git a/core/bootstrap/layouts/layouts.factor b/core/bootstrap/layouts/layouts.factor
old mode 100755
new mode 100644
diff --git a/core/bootstrap/primitives.factor b/core/bootstrap/primitives.factor
old mode 100755
new mode 100644
diff --git a/core/bootstrap/stage1.factor b/core/bootstrap/stage1.factor
old mode 100755
new mode 100644
diff --git a/core/bootstrap/syntax.factor b/core/bootstrap/syntax.factor
old mode 100755
new mode 100644
diff --git a/core/byte-arrays/byte-arrays-docs.factor b/core/byte-arrays/byte-arrays-docs.factor
old mode 100755
new mode 100644
diff --git a/core/byte-arrays/byte-arrays-tests.factor b/core/byte-arrays/byte-arrays-tests.factor
old mode 100755
new mode 100644
diff --git a/core/byte-arrays/byte-arrays.factor b/core/byte-arrays/byte-arrays.factor
old mode 100755
new mode 100644
diff --git a/core/byte-vectors/byte-vectors-docs.factor b/core/byte-vectors/byte-vectors-docs.factor
old mode 100755
new mode 100644
diff --git a/core/byte-vectors/byte-vectors-tests.factor b/core/byte-vectors/byte-vectors-tests.factor
old mode 100755
new mode 100644
diff --git a/core/byte-vectors/byte-vectors.factor b/core/byte-vectors/byte-vectors.factor
old mode 100755
new mode 100644
diff --git a/core/checksums/crc32/crc32.factor b/core/checksums/crc32/crc32.factor
old mode 100755
new mode 100644
diff --git a/core/classes/algebra/algebra-docs.factor b/core/classes/algebra/algebra-docs.factor
old mode 100755
new mode 100644
diff --git a/core/classes/algebra/algebra-tests.factor b/core/classes/algebra/algebra-tests.factor
old mode 100755
new mode 100644
diff --git a/core/classes/algebra/algebra.factor b/core/classes/algebra/algebra.factor
old mode 100755
new mode 100644
diff --git a/core/classes/classes-docs.factor b/core/classes/classes-docs.factor
old mode 100755
new mode 100644
diff --git a/core/classes/classes-tests.factor b/core/classes/classes-tests.factor
old mode 100755
new mode 100644
diff --git a/core/classes/classes.factor b/core/classes/classes.factor
old mode 100755
new mode 100644
diff --git a/core/classes/mixin/mixin-docs.factor b/core/classes/mixin/mixin-docs.factor
old mode 100755
new mode 100644
diff --git a/core/classes/mixin/mixin.factor b/core/classes/mixin/mixin.factor
old mode 100755
new mode 100644
diff --git a/core/classes/predicate/predicate-docs.factor b/core/classes/predicate/predicate-docs.factor
old mode 100755
new mode 100644
diff --git a/core/classes/predicate/predicate.factor b/core/classes/predicate/predicate.factor
old mode 100755
new mode 100644
diff --git a/core/classes/singleton/singleton.factor b/core/classes/singleton/singleton.factor
old mode 100755
new mode 100644
diff --git a/core/classes/tuple/tuple-docs.factor b/core/classes/tuple/tuple-docs.factor
old mode 100755
new mode 100644
diff --git a/core/classes/tuple/tuple-tests.factor b/core/classes/tuple/tuple-tests.factor
old mode 100755
new mode 100644
diff --git a/core/classes/tuple/tuple.factor b/core/classes/tuple/tuple.factor
old mode 100755
new mode 100644
diff --git a/core/classes/union/union-docs.factor b/core/classes/union/union-docs.factor
old mode 100755
new mode 100644
diff --git a/core/classes/union/union.factor b/core/classes/union/union.factor
old mode 100755
new mode 100644
diff --git a/core/combinators/combinators-docs.factor b/core/combinators/combinators-docs.factor
old mode 100755
new mode 100644
diff --git a/core/combinators/combinators-tests.factor b/core/combinators/combinators-tests.factor
old mode 100755
new mode 100644
diff --git a/core/combinators/combinators.factor b/core/combinators/combinators.factor
old mode 100755
new mode 100644
diff --git a/core/compiler/errors/errors-docs.factor b/core/compiler/errors/errors-docs.factor
old mode 100755
new mode 100644
diff --git a/core/compiler/errors/errors.factor b/core/compiler/errors/errors.factor
old mode 100755
new mode 100644
diff --git a/core/compiler/units/units-docs.factor b/core/compiler/units/units-docs.factor
old mode 100755
new mode 100644
diff --git a/core/compiler/units/units.factor b/core/compiler/units/units.factor
old mode 100755
new mode 100644
diff --git a/core/continuations/continuations-docs.factor b/core/continuations/continuations-docs.factor
old mode 100755
new mode 100644
diff --git a/core/continuations/continuations-tests.factor b/core/continuations/continuations-tests.factor
old mode 100755
new mode 100644
diff --git a/core/continuations/continuations.factor b/core/continuations/continuations.factor
old mode 100755
new mode 100644
diff --git a/core/definitions/definitions-docs.factor b/core/definitions/definitions-docs.factor
old mode 100755
new mode 100644
diff --git a/core/definitions/definitions-tests.factor b/core/definitions/definitions-tests.factor
old mode 100755
new mode 100644
diff --git a/core/definitions/definitions.factor b/core/definitions/definitions.factor
old mode 100755
new mode 100644
diff --git a/core/destructors/destructors-docs.factor b/core/destructors/destructors-docs.factor
old mode 100755
new mode 100644
diff --git a/core/destructors/destructors-tests.factor b/core/destructors/destructors-tests.factor
old mode 100755
new mode 100644
diff --git a/core/destructors/destructors.factor b/core/destructors/destructors.factor
old mode 100755
new mode 100644
diff --git a/core/effects/effects.factor b/core/effects/effects.factor
old mode 100755
new mode 100644
diff --git a/core/generic/generic-docs.factor b/core/generic/generic-docs.factor
old mode 100755
new mode 100644
diff --git a/core/generic/generic-tests.factor b/core/generic/generic-tests.factor
old mode 100755
new mode 100644
diff --git a/core/generic/generic.factor b/core/generic/generic.factor
old mode 100755
new mode 100644
diff --git a/core/generic/math/math-docs.factor b/core/generic/math/math-docs.factor
old mode 100755
new mode 100644
diff --git a/core/generic/math/math.factor b/core/generic/math/math.factor
old mode 100755
new mode 100644
diff --git a/core/growable/growable-docs.factor b/core/growable/growable-docs.factor
old mode 100755
new mode 100644
diff --git a/core/growable/growable-tests.factor b/core/growable/growable-tests.factor
old mode 100755
new mode 100644
diff --git a/core/hashtables/hashtables-docs.factor b/core/hashtables/hashtables-docs.factor
old mode 100755
new mode 100644
diff --git a/core/hashtables/hashtables-tests.factor b/core/hashtables/hashtables-tests.factor
old mode 100755
new mode 100644
diff --git a/core/hashtables/hashtables.factor b/core/hashtables/hashtables.factor
old mode 100755
new mode 100644
diff --git a/core/init/init.factor b/core/init/init.factor
old mode 100755
new mode 100644
diff --git a/core/io/backend/backend-tests.factor b/core/io/backend/backend-tests.factor
old mode 100755
new mode 100644
diff --git a/core/io/backend/backend.factor b/core/io/backend/backend.factor
old mode 100755
new mode 100644
index 0760063f0d..0c13277106
--- a/core/io/backend/backend.factor
+++ b/core/io/backend/backend.factor
@@ -6,6 +6,10 @@ IN: io.backend
 
 SYMBOL: io-backend
 
+SINGLETON: c-io-backend
+
+c-io-backend io-backend set-global
+
 HOOK: init-io io-backend ( -- )
 
 HOOK: (init-stdio) io-backend ( -- stdin stdout stderr )
diff --git a/core/io/binary/binary-tests.factor b/core/io/binary/binary-tests.factor
old mode 100755
new mode 100644
diff --git a/core/io/binary/binary.factor b/core/io/binary/binary.factor
old mode 100755
new mode 100644
diff --git a/core/io/encodings/binary/binary.factor b/core/io/encodings/binary/binary.factor
old mode 100755
new mode 100644
diff --git a/core/io/encodings/encodings-tests.factor b/core/io/encodings/encodings-tests.factor
old mode 100755
new mode 100644
diff --git a/core/io/encodings/encodings.factor b/core/io/encodings/encodings.factor
old mode 100755
new mode 100644
diff --git a/core/io/encodings/utf8/utf8-docs.factor b/core/io/encodings/utf8/utf8-docs.factor
old mode 100755
new mode 100644
diff --git a/core/io/encodings/utf8/utf8-tests.factor b/core/io/encodings/utf8/utf8-tests.factor
old mode 100755
new mode 100644
diff --git a/core/io/encodings/utf8/utf8.factor b/core/io/encodings/utf8/utf8.factor
old mode 100755
new mode 100644
diff --git a/core/io/files/files-docs.factor b/core/io/files/files-docs.factor
old mode 100755
new mode 100644
diff --git a/core/io/files/files-tests.factor b/core/io/files/files-tests.factor
old mode 100755
new mode 100644
diff --git a/core/io/files/files.factor b/core/io/files/files.factor
old mode 100755
new mode 100644
diff --git a/core/io/io-docs.factor b/core/io/io-docs.factor
old mode 100755
new mode 100644
diff --git a/core/io/io-tests.factor b/core/io/io-tests.factor
old mode 100755
new mode 100644
diff --git a/core/io/io.factor b/core/io/io.factor
old mode 100755
new mode 100644
diff --git a/core/io/streams/c/c-docs.factor b/core/io/streams/c/c-docs.factor
old mode 100755
new mode 100644
diff --git a/core/io/streams/c/c-tests.factor b/core/io/streams/c/c-tests.factor
old mode 100755
new mode 100644
diff --git a/core/io/streams/c/c.factor b/core/io/streams/c/c.factor
old mode 100755
new mode 100644
index 780d892d2e..1e12d7e956
--- a/core/io/streams/c/c.factor
+++ b/core/io/streams/c/c.factor
@@ -54,26 +54,28 @@ M: c-reader stream-read-until
 M: c-reader dispose*
     handle>> fclose ;
 
-M: object init-io ;
+M: c-io-backend init-io ;
 
 : stdin-handle 11 getenv ;
 : stdout-handle 12 getenv ;
 : stderr-handle 61 getenv ;
 
-M: object (init-stdio)
+: init-c-stdio ( -- stdin stdout stderr )
     stdin-handle <c-reader>
     stdout-handle <c-writer>
     stderr-handle <c-writer> ;
 
-M: object io-multiplex 60 60 * 1000 * or (sleep) ;
+M: c-io-backend (init-stdio) init-c-stdio ;
 
-M: object (file-reader)
+M: c-io-backend io-multiplex 60 60 * 1000 * or (sleep) ;
+
+M: c-io-backend (file-reader)
     "rb" fopen <c-reader> ;
 
-M: object (file-writer)
+M: c-io-backend (file-writer)
     "wb" fopen <c-writer> ;
 
-M: object (file-appender)
+M: c-io-backend (file-appender)
     "ab" fopen <c-writer> ;
 
 : show ( msg -- )
diff --git a/core/io/streams/nested/nested.factor b/core/io/streams/nested/nested.factor
old mode 100755
new mode 100644
diff --git a/core/io/streams/string/string.factor b/core/io/streams/string/string.factor
old mode 100755
new mode 100644
diff --git a/core/kernel/kernel-docs.factor b/core/kernel/kernel-docs.factor
old mode 100755
new mode 100644
diff --git a/core/kernel/kernel-tests.factor b/core/kernel/kernel-tests.factor
old mode 100755
new mode 100644
diff --git a/core/kernel/kernel.factor b/core/kernel/kernel.factor
old mode 100755
new mode 100644
diff --git a/core/layouts/layouts-docs.factor b/core/layouts/layouts-docs.factor
old mode 100755
new mode 100644
diff --git a/core/layouts/layouts-tests.factor b/core/layouts/layouts-tests.factor
old mode 100755
new mode 100644
diff --git a/core/layouts/layouts.factor b/core/layouts/layouts.factor
old mode 100755
new mode 100644
diff --git a/core/math/floats/floats-tests.factor b/core/math/floats/floats-tests.factor
old mode 100755
new mode 100644
diff --git a/core/math/floats/floats.factor b/core/math/floats/floats.factor
old mode 100755
new mode 100644
diff --git a/core/math/integers/integers-docs.factor b/core/math/integers/integers-docs.factor
old mode 100755
new mode 100644
diff --git a/core/math/integers/integers-tests.factor b/core/math/integers/integers-tests.factor
old mode 100755
new mode 100644
diff --git a/core/math/integers/integers.factor b/core/math/integers/integers.factor
old mode 100755
new mode 100644
diff --git a/core/math/math-docs.factor b/core/math/math-docs.factor
old mode 100755
new mode 100644
diff --git a/core/math/math.factor b/core/math/math.factor
old mode 100755
new mode 100644
diff --git a/core/math/parser/parser-tests.factor b/core/math/parser/parser-tests.factor
old mode 100755
new mode 100644
diff --git a/core/math/parser/parser.factor b/core/math/parser/parser.factor
old mode 100755
new mode 100644
diff --git a/core/memory/memory-docs.factor b/core/memory/memory-docs.factor
old mode 100755
new mode 100644
diff --git a/core/memory/memory-tests.factor b/core/memory/memory-tests.factor
old mode 100755
new mode 100644
diff --git a/core/namespaces/namespaces-docs.factor b/core/namespaces/namespaces-docs.factor
old mode 100755
new mode 100644
diff --git a/core/parser/parser-docs.factor b/core/parser/parser-docs.factor
old mode 100755
new mode 100644
diff --git a/core/parser/parser-tests.factor b/core/parser/parser-tests.factor
old mode 100755
new mode 100644
diff --git a/core/parser/parser.factor b/core/parser/parser.factor
old mode 100755
new mode 100644
diff --git a/core/parser/test/assert-depth.factor b/core/parser/test/assert-depth.factor
old mode 100755
new mode 100644
diff --git a/core/quotations/quotations-docs.factor b/core/quotations/quotations-docs.factor
old mode 100755
new mode 100644
diff --git a/core/quotations/quotations-tests.factor b/core/quotations/quotations-tests.factor
old mode 100755
new mode 100644
diff --git a/core/quotations/quotations.factor b/core/quotations/quotations.factor
old mode 100755
new mode 100644
diff --git a/core/sbufs/sbufs.factor b/core/sbufs/sbufs.factor
old mode 100755
new mode 100644
diff --git a/core/sequences/sequences-docs.factor b/core/sequences/sequences-docs.factor
old mode 100755
new mode 100644
diff --git a/core/sequences/sequences-tests.factor b/core/sequences/sequences-tests.factor
old mode 100755
new mode 100644
diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor
old mode 100755
new mode 100644
index 267238a502..63cc14d1d7
--- a/core/sequences/sequences.factor
+++ b/core/sequences/sequences.factor
@@ -27,7 +27,7 @@ M: sequence lengthen 2dup length > [ set-length ] [ 2drop ] if ;
 
 M: sequence shorten 2dup length < [ set-length ] [ 2drop ] if ;
 
-: empty? ( seq -- ? ) length zero? ; inline
+: empty? ( seq -- ? ) length 0 = ; inline
 
 : if-empty ( seq quot1 quot2 -- )
     [ dup empty? ] [ [ drop ] prepose ] [ ] tri* if ; inline
@@ -362,7 +362,7 @@ PRIVATE>
     prepose curry ; inline
 
 : (interleave) ( n elt between quot -- )
-    roll zero? [ nip ] [ swapd 2slip ] if call ; inline
+    roll 0 = [ nip ] [ swapd 2slip ] if call ; inline
 
 PRIVATE>
 
@@ -530,7 +530,7 @@ M: sequence <=>
     [ -rot 2nth-unsafe <=> ] [ [ length ] compare ] if* ;
 
 : sequence= ( seq1 seq2 -- ? )
-    2dup [ length ] bi@ number=
+    2dup [ length ] bi@ =
     [ mismatch not ] [ 2drop f ] if ; inline
 
 : sequence-hashcode-step ( oldhash newpart -- newhash )
@@ -547,7 +547,7 @@ M: reversed equal? over reversed? [ sequence= ] [ 2drop f ] if ;
 M: slice equal? over slice? [ sequence= ] [ 2drop f ] if ;
 
 : move ( to from seq -- )
-    2over number=
+    2over =
     [ 3drop ] [ [ nth swap ] [ set-nth ] bi ] if ; inline
 
 <PRIVATE
@@ -582,7 +582,7 @@ PRIVATE>
 <PRIVATE
 
 : move-backward ( shift from to seq -- )
-    2over number= [
+    2over = [
         2drop 2drop
     ] [
         [ >r 2over + pick r> move >r 1+ r> ] keep
@@ -590,7 +590,7 @@ PRIVATE>
     ] if ;
 
 : move-forward ( shift from to seq -- )
-    2over number= [
+    2over = [
         2drop 2drop
     ] [
         [ >r pick >r dup dup r> + swap r> move 1- ] keep
@@ -607,7 +607,7 @@ PRIVATE>
 PRIVATE>
 
 : open-slice ( shift from seq -- )
-    pick zero? [
+    pick 0 = [
         3drop
     ] [
         pick over length + over >r >r
@@ -680,7 +680,7 @@ PRIVATE>
 
 : padding ( seq n elt quot -- newseq )
     [
-        [ over length [-] dup zero? [ drop ] ] dip
+        [ over length [-] dup 0 = [ drop ] ] dip
         [ <repetition> ] curry
     ] dip compose if ; inline
 
diff --git a/core/slots/slots-docs.factor b/core/slots/slots-docs.factor
old mode 100755
new mode 100644
diff --git a/core/slots/slots.factor b/core/slots/slots.factor
old mode 100755
new mode 100644
diff --git a/core/sorting/sorting-tests.factor b/core/sorting/sorting-tests.factor
old mode 100755
new mode 100644
diff --git a/core/sorting/sorting.factor b/core/sorting/sorting.factor
old mode 100755
new mode 100644
diff --git a/core/source-files/source-files-docs.factor b/core/source-files/source-files-docs.factor
old mode 100755
new mode 100644
diff --git a/core/source-files/source-files.factor b/core/source-files/source-files.factor
old mode 100755
new mode 100644
diff --git a/core/splitting/splitting.factor b/core/splitting/splitting.factor
old mode 100755
new mode 100644
diff --git a/core/strings/strings-docs.factor b/core/strings/strings-docs.factor
old mode 100755
new mode 100644
diff --git a/core/strings/strings-tests.factor b/core/strings/strings-tests.factor
old mode 100755
new mode 100644
diff --git a/core/strings/strings.factor b/core/strings/strings.factor
old mode 100755
new mode 100644
diff --git a/core/syntax/syntax-docs.factor b/core/syntax/syntax-docs.factor
old mode 100755
new mode 100644
diff --git a/core/syntax/syntax.factor b/core/syntax/syntax.factor
old mode 100755
new mode 100644
diff --git a/core/system/system-docs.factor b/core/system/system-docs.factor
old mode 100755
new mode 100644
diff --git a/core/system/system-tests.factor b/core/system/system-tests.factor
old mode 100755
new mode 100644
diff --git a/core/system/system.factor b/core/system/system.factor
old mode 100755
new mode 100644
index 3c207c4ab5..6c9d838fa4
--- a/core/system/system.factor
+++ b/core/system/system.factor
@@ -11,7 +11,7 @@ SINGLETON: ppc
 
 UNION: x86 x86.32 x86.64 ;
 
-: cpu ( -- class ) \ cpu get ;
+: cpu ( -- class ) \ cpu get-global ; foldable
 
 SINGLETON: winnt
 SINGLETON: wince
@@ -29,7 +29,7 @@ UNION: bsd freebsd netbsd openbsd macosx ;
 
 UNION: unix bsd solaris linux ;
 
-: os ( -- class ) \ os get ;
+: os ( -- class ) \ os get-global ; foldable
 
 <PRIVATE
 
diff --git a/core/vectors/vectors-docs.factor b/core/vectors/vectors-docs.factor
old mode 100755
new mode 100644
diff --git a/core/vectors/vectors-tests.factor b/core/vectors/vectors-tests.factor
old mode 100755
new mode 100644
diff --git a/core/vectors/vectors.factor b/core/vectors/vectors.factor
old mode 100755
new mode 100644
diff --git a/core/vocabs/loader/loader-docs.factor b/core/vocabs/loader/loader-docs.factor
old mode 100755
new mode 100644
diff --git a/core/vocabs/loader/loader-tests.factor b/core/vocabs/loader/loader-tests.factor
old mode 100755
new mode 100644
diff --git a/core/vocabs/loader/loader.factor b/core/vocabs/loader/loader.factor
old mode 100755
new mode 100644
diff --git a/core/vocabs/loader/test/a/a.factor b/core/vocabs/loader/test/a/a.factor
old mode 100755
new mode 100644
diff --git a/core/vocabs/loader/test/b/b.factor b/core/vocabs/loader/test/b/b.factor
old mode 100755
new mode 100644
diff --git a/core/vocabs/vocabs-docs.factor b/core/vocabs/vocabs-docs.factor
old mode 100755
new mode 100644
diff --git a/core/vocabs/vocabs.factor b/core/vocabs/vocabs.factor
old mode 100755
new mode 100644
diff --git a/core/words/words-docs.factor b/core/words/words-docs.factor
old mode 100755
new mode 100644
diff --git a/core/words/words-tests.factor b/core/words/words-tests.factor
old mode 100755
new mode 100644
diff --git a/core/words/words.factor b/core/words/words.factor
old mode 100755
new mode 100644
diff --git a/extra/benchmark/mandel/colors/colors.factor b/extra/benchmark/mandel/colors/colors.factor
index 7bbb25a47d..218f566eda 100644
--- a/extra/benchmark/mandel/colors/colors.factor
+++ b/extra/benchmark/mandel/colors/colors.factor
@@ -1,10 +1,11 @@
 USING: math math.order kernel arrays byte-arrays sequences
-colors.hsv benchmark.mandel.params ;
+colors.hsv benchmark.mandel.params accessors colors ;
 IN: benchmark.mandel.colors
 
 : scale 255 * >fixnum ; inline
 
-: scale-rgb ( r g b -- n ) [ scale ] tri@ 3byte-array ;
+: scale-rgb ( rgba -- n )
+    [ red>> scale ] [ green>> scale ] [ blue>> scale ] tri 3byte-array ;
 
 : sat 0.85 ; inline
 : val 0.85 ; inline
@@ -12,7 +13,7 @@ IN: benchmark.mandel.colors
 : <color-map> ( nb-cols -- map )
     dup [
         360 * swap 1+ / sat val
-        3array hsv>rgb first3 scale-rgb
+        1 <hsva> >rgba scale-rgb
     ] with map ;
 
 : color-map ( -- map )
diff --git a/extra/color-picker/color-picker.factor b/extra/color-picker/color-picker.factor
index 4a0c148145..6ed8c1220c 100755
--- a/extra/color-picker/color-picker.factor
+++ b/extra/color-picker/color-picker.factor
@@ -23,7 +23,7 @@ M: color-preview model-changed
     swap value>> >>interior relayout-1 ;
 
 : <color-model> ( model -- model )
-    [ [ 256 /f ] map 1 suffix first4 rgba boa <solid> ] <filter> ;
+    [ first3 [ 256 /f ] tri@ 1 <rgba> <solid> ] <filter> ;
 
 : <color-sliders> ( -- model gadget )
     3 [ 0 0 0 255 <range> ] replicate
diff --git a/unmaintained/assoc-heaps/assoc-heaps-tests.factor b/unmaintained/assoc-heaps/assoc-heaps-tests.factor
deleted file mode 100644
index 24a7730847..0000000000
--- a/unmaintained/assoc-heaps/assoc-heaps-tests.factor
+++ /dev/null
@@ -1,55 +0,0 @@
-USING: assocs assoc-heaps heaps heaps.private kernel tools.test ;
-IN: temporary
-
-[
-T{
-    assoc-heap
-    f
-    H{ { 2 1 } }
-    T{ min-heap T{ heap f V{ { 1 2 } } } }
-}
-] [ H{ } clone <assoc-min-heap> 1 2 pick heap-push ] unit-test
-
-[
-T{
-    assoc-heap
-    f
-    H{ { 1 0 } { 2 1 } }
-    T{ min-heap T{ heap f V{ { 0 1 } { 1 2 } } } }
-}
-] [  H{ } clone <assoc-min-heap> 1 2 pick heap-push 0 1 pick heap-push ] unit-test
-
-[ T{ assoc-heap f H{ } T{ min-heap T{ heap f V{ } } } } ]
-[
-    H{ } clone <assoc-min-heap>
-    1 2 pick heap-push 0 1 pick heap-push
-    dup heap-pop 2drop dup heap-pop 2drop
-] unit-test
-
-
-[ 0 1 ] [
-T{
-    assoc-heap
-    f
-    H{ { 1 0 } { 2 1 } }
-    T{ min-heap T{ heap f V{ { 0 1 } { 1 2 } } } }
-} heap-pop
-] unit-test
-
-[ 1 2 ] [
-T{
-    assoc-heap
-    f
-    H{ { 1 0 } { 2 1 } }
-    T{ max-heap T{ heap f V{ { 1 2 } { 0 1 } } } }
-} heap-pop
-] unit-test
-
-[
-T{
-    assoc-heap
-    f
-    H{ { 1 2 } { 3 4 } }
-    T{ min-heap T{ heap f V{ { 2 1 } { 4 3 } } } }
-}
-] [ H{ { 1 2 } { 3 4 } } H{ } clone <assoc-min-heap> [ heap-push-all ] keep ] unit-test
diff --git a/unmaintained/assoc-heaps/assoc-heaps.factor b/unmaintained/assoc-heaps/assoc-heaps.factor
deleted file mode 100755
index 55a5aa7f62..0000000000
--- a/unmaintained/assoc-heaps/assoc-heaps.factor
+++ /dev/null
@@ -1,45 +0,0 @@
-USING: assocs heaps kernel sequences ;
-IN: assoc-heaps
-
-TUPLE: assoc-heap assoc heap ;
-
-INSTANCE: assoc-heap assoc
-INSTANCE: assoc-heap priority-queue
-
-C: <assoc-heap> assoc-heap
-
-: <assoc-min-heap> ( assoc -- obj ) <min-heap> <assoc-heap> ;
-: <assoc-max-heap> ( assoc -- obj ) <max-heap> <assoc-heap> ;
-
-M: assoc-heap at* ( key assoc-heap -- value ? )
-    assoc-heap-assoc at* ;
-
-M: assoc-heap assoc-size ( assoc-heap -- n )
-    assoc-heap-assoc assoc-size ;
-
-TUPLE: assoc-heap-key-exists ;
-
-: check-key-exists ( key assoc-heap -- )
-    assoc-heap-assoc key?
-    [ \ assoc-heap-key-exists construct-empty throw ] when ;
-
-M: assoc-heap set-at ( value key assoc-heap -- )
-    [ check-key-exists ] 2keep
-    [ assoc-heap-assoc set-at ] 3keep
-    assoc-heap-heap swapd heap-push ;
-
-M: assoc-heap heap-empty? ( assoc-heap -- ? )
-    assoc-heap-assoc assoc-empty? ;
-
-M: assoc-heap heap-length ( assoc-heap -- n )
-    assoc-heap-assoc assoc-size ;
-
-M: assoc-heap heap-peek ( assoc-heap -- value key )
-    assoc-heap-heap heap-peek ;
-
-M: assoc-heap heap-push ( value key assoc-heap -- )
-    set-at ;
-
-M: assoc-heap heap-pop ( assoc-heap -- value key )
-    dup assoc-heap-heap heap-pop swap
-    rot dupd assoc-heap-assoc delete-at ;
diff --git a/unmaintained/assoc-heaps/authors.txt b/unmaintained/assoc-heaps/authors.txt
deleted file mode 100755
index 7c1b2f2279..0000000000
--- a/unmaintained/assoc-heaps/authors.txt
+++ /dev/null
@@ -1 +0,0 @@
-Doug Coleman
diff --git a/unmaintained/assoc-heaps/summary.txt b/unmaintained/assoc-heaps/summary.txt
deleted file mode 100755
index 07ae2e33f8..0000000000
--- a/unmaintained/assoc-heaps/summary.txt
+++ /dev/null
@@ -1 +0,0 @@
-Priority search queues
diff --git a/unmaintained/webapps/help/authors.txt b/unmaintained/webapps/help/authors.txt
deleted file mode 100755
index 1901f27a24..0000000000
--- a/unmaintained/webapps/help/authors.txt
+++ /dev/null
@@ -1 +0,0 @@
-Slava Pestov
diff --git a/unmaintained/webapps/help/help.factor b/unmaintained/webapps/help/help.factor
deleted file mode 100644
index 28d73607ba..0000000000
--- a/unmaintained/webapps/help/help.factor
+++ /dev/null
@@ -1,89 +0,0 @@
-! Copyright (C) 2005, 2007 Slava Pestov.
-! See http://factorcode.org/license.txt for BSD license.
-USING: kernel furnace furnace.validator http.server.responders
-       help help.topics html splitting sequences words strings 
-       quotations macros vocabs tools.browser combinators
-       arrays io.files ;
-IN: webapps.help 
-
-! : string>topic ( string -- topic )
-    ! " " split dup length 1 = [ first ] when ;
-
-: show-help ( topic -- )
-    serving-html
-    dup article-title [
-        [ help ] with-html-stream
-    ] simple-html-document ;
-
-\ show-help {
-    { "topic" }
-} define-action
-\ show-help { { "topic" "handbook" } } default-values
-
-M: link browser-link-href
-    link-name
-    dup word? over f eq? or [
-        browser-link-href
-    ] [
-        dup array? [ " " join ] when
-        [ show-help ] curry quot-link
-    ] if ;
-
-: show-word ( word vocab -- )
-    lookup show-help ;
-
-\ show-word {
-    { "word" }
-    { "vocab" }
-} define-action
-\ show-word { { "word" "call" } { "vocab" "kernel" } } default-values
-
-M: f browser-link-href
-    drop \ f browser-link-href ;
-
-M: word browser-link-href
-    dup word-name swap word-vocabulary
-    [ show-word ] 2curry quot-link ;
-
-: show-vocab ( vocab -- )
-    f >vocab-link show-help ;
-
-\ show-vocab {
-    { "vocab" }
-} define-action
-
-\ show-vocab { { "vocab" "kernel" } } default-values
-
-M: vocab-spec browser-link-href
-    vocab-name [ show-vocab ] curry quot-link ;
-
-: show-vocabs-tagged ( tag -- )
-    <vocab-tag> show-help ;
-
-\ show-vocabs-tagged {
-    { "tag" }
-} define-action
-
-M: vocab-tag browser-link-href
-    vocab-tag-name [ show-vocabs-tagged ] curry quot-link ;
-
-: show-vocabs-by ( author -- )
-    <vocab-author> show-help ;
-
-\ show-vocabs-by {
-    { "author" }
-} define-action
-
-M: vocab-author browser-link-href
-    vocab-author-name [ show-vocabs-by ] curry quot-link ;
-
-"help" "show-help" "extra/webapps/help" web-app
-
-! Hard-coding for factorcode.org
-PREDICATE: pathname resource-pathname
-    pathname-string "resource:" head? ;
-
-M: resource-pathname browser-link-href
-    pathname-string
-    "resource:" ?head drop
-    "/responder/source/" swap append ;
diff --git a/unmaintained/webapps/pastebin/annotate-paste.furnace b/unmaintained/webapps/pastebin/annotate-paste.furnace
deleted file mode 100755
index 14a424f776..0000000000
--- a/unmaintained/webapps/pastebin/annotate-paste.furnace
+++ /dev/null
@@ -1,47 +0,0 @@
-<% USING: io math math.parser namespaces furnace ; %>
-
-<h1>Annotate</h1>
-
-<form method="POST" action="/responder/pastebin/annotate-paste">
-
-<table>
-
-<tr>
-<th align="right">Summary:</th>
-<td><input type="TEXT" name="summary" value="<% "summary" render %>" /></td>
-<td align="left" class="error"><% "summary" "*Required" render-error %></td>
-</tr>
-
-<tr>
-<th align="right">Your name:</th>
-<td><input type="TEXT" name="author" value="<% "author" render  %>" /></td>
-<td class="error"><% "author" "*Required" render-error %></td>
-</tr>
-
-<tr>
-<th align="right">File type:</th>
-<td><% "modes" render-template %></td>
-</tr>
-
-<!--
-<tr>
-<th align="right">Channel:</th>
-<td><input type="TEXT" name="channel" value="#concatenative" /></td>
-</tr>
--->
-
-<tr>
-<td></td>
-<td colspan="2" class="error" align="left"><% "contents" "*Required" render-error %></td>
-</tr>
-
-<tr>
-<th align="right" valign="top">Content:</th>
-<td colspan="2"><textarea rows="24" cols="60" name="contents"><% "contents" render %></textarea></td>
-</tr>
-</table>
-
-<input type="hidden" name="n" value="<% "n" get number>string write %>" />
-<input type="hidden" name="furnace-form-submitted" value="annotate-paste"/>
-<input type="SUBMIT" value="Annotate" />
-</form>
diff --git a/unmaintained/webapps/pastebin/annotation.furnace b/unmaintained/webapps/pastebin/annotation.furnace
deleted file mode 100755
index e59db32484..0000000000
--- a/unmaintained/webapps/pastebin/annotation.furnace
+++ /dev/null
@@ -1,11 +0,0 @@
-<% USING: namespaces io furnace calendar ; %>
-
-<h2>Annotation: <% "summary" get write %></h2>
-
-<table>
-<tr><th align="right">Annotation by:</th><td><% "author" get write %></td></tr>
-<tr><th align="right">File type:</th><td><% "mode" get write %></td></tr>
-<tr><th align="right">Created:</th><td><% "date" get timestamp>string write %></td></tr>
-</table>
-
-<% "syntax" render-template %>
diff --git a/unmaintained/webapps/pastebin/authors.txt b/unmaintained/webapps/pastebin/authors.txt
deleted file mode 100755
index 1901f27a24..0000000000
--- a/unmaintained/webapps/pastebin/authors.txt
+++ /dev/null
@@ -1 +0,0 @@
-Slava Pestov
diff --git a/unmaintained/webapps/pastebin/footer.furnace b/unmaintained/webapps/pastebin/footer.furnace
deleted file mode 100644
index 15b90110a0..0000000000
--- a/unmaintained/webapps/pastebin/footer.furnace
+++ /dev/null
@@ -1,3 +0,0 @@
-</body>
-
-</html>
diff --git a/unmaintained/webapps/pastebin/header.furnace b/unmaintained/webapps/pastebin/header.furnace
deleted file mode 100644
index 2c8e79a18d..0000000000
--- a/unmaintained/webapps/pastebin/header.furnace
+++ /dev/null
@@ -1,23 +0,0 @@
-<% USING: namespaces io furnace sequences xmode.code2html webapps.pastebin ; %>
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
-
-	<title><% "title" get write %></title>
-	<link rel="stylesheet" href="style.css" type="text/css" media="screen" title="no title" charset="utf-8" />
-	<% default-stylesheet %>
-    <link rel="alternate" type="application/atom+xml" title="Pastebin - Atom" href="feed.xml" />
-</head>
-
-<body id="index">
-
-    <div class="navbar">
-        <% [ paste-list ] "Paste list" render-link %> |
-        <% [ new-paste ] "New paste" render-link %> |
-        <% [ feed.xml ] "Syndicate" render-link %>
-    </div>
-    <h1 class="pastebin-title"><% "title" get write %></h1>
diff --git a/unmaintained/webapps/pastebin/modes.furnace b/unmaintained/webapps/pastebin/modes.furnace
deleted file mode 100644
index 18bbec180a..0000000000
--- a/unmaintained/webapps/pastebin/modes.furnace
+++ /dev/null
@@ -1,7 +0,0 @@
-<% USING: furnace xmode.catalog sequences kernel html.elements assocs io sorting continuations ; %>
-
-<select name="mode">
-    <% modes keys natural-sort [
-        <option dup "mode" session-var = [ "true" =selected ] when option> write </option>
-    ] each %>
-</select>
diff --git a/unmaintained/webapps/pastebin/new-paste.furnace b/unmaintained/webapps/pastebin/new-paste.furnace
deleted file mode 100755
index b21e19734d..0000000000
--- a/unmaintained/webapps/pastebin/new-paste.furnace
+++ /dev/null
@@ -1,51 +0,0 @@
-<% USING: continuations furnace namespaces ; %>
-
-<%
-    "New paste" "title" set
-    "header" render-template
-%>
-
-<form method="POST" action="/responder/pastebin/submit-paste">
-
-<table>
-
-<tr>
-<th align="right">Summary:</th>
-<td><input type="TEXT" name="summary" value="<% "summary" render %>" /></td>
-<td align="left" class="error"><% "summary" "*Required" render-error %></td>
-</tr>
-
-<tr>
-<th align="right">Your name:</th>
-<td><input type="TEXT" name="author" value="<% "author" render  %>" /></td>
-<td class="error"><% "author" "*Required" render-error %></td>
-</tr>
-
-<tr>
-<th align="right">File type:</th>
-<td><% "modes" render-template %></td>
-</tr>
-
-<!--
-<tr>
-<th align="right">Channel:</th>
-<td><input type="TEXT" name="channel" value="#concatenative" /></td>
-</tr>
--->
-
-<tr>
-<td></td>
-<td colspan="2" class="error" align="left"><% "contents" "*Required" render-error %></td>
-</tr>
-
-<tr>
-<th align="right" valign="top">Content:</th>
-<td colspan="2"><textarea rows="24" cols="60" name="contents"><% "contents" render %></textarea></td>
-</tr>
-</table>
-
-<input type="hidden" name="furnace-form-submitted" value="new-paste"/>
-<input type="SUBMIT" value="Submit paste" />
-</form>
-
-<% "footer" render-template %>
diff --git a/unmaintained/webapps/pastebin/paste-list.furnace b/unmaintained/webapps/pastebin/paste-list.furnace
deleted file mode 100644
index 51813ecf97..0000000000
--- a/unmaintained/webapps/pastebin/paste-list.furnace
+++ /dev/null
@@ -1,33 +0,0 @@
-<% USING: namespaces furnace sequences ; %>
-
-<%
-    "Pastebin" "title" set
-    "header" render-template
-%>
-
-<table width="100%" cellspacing="10">
-    <tr>
-        <td valign="top">
-            <table width="100%">
-                <tr align="left" class="pastebin-headings">
-                    <th width="50%">Summary:</th>
-                    <th width="100">Paste by:</th>
-                    <th width="200">Date:</th>
-                </tr>
-                <% "pastes" get <reversed> [ "paste-summary" render-component ] each %>
-            </table>
-        </td>
-        <td valign="top" width="25%">
-            <div class="infobox">
-                <p>This pastebin is written in <a href="http://factorcode.org/">Factor</a>. It is inspired by <a href="http://paste.lisp.org">lisppaste</a>.
-                </p>
-                <p>It can be used for collaborative development over IRC. You can post code for review, and annotate other people's code. Syntax highlighting for over a hundred file types is supported.
-                </p>
-                <p>
-                <% "webapps.pastebin" browse-webapp-source %></p>
-            </div>
-        </td>
-    </tr>
-</table>
-
-<% "footer" render-template %>
diff --git a/unmaintained/webapps/pastebin/paste-summary.furnace b/unmaintained/webapps/pastebin/paste-summary.furnace
deleted file mode 100644
index dc25fe1924..0000000000
--- a/unmaintained/webapps/pastebin/paste-summary.furnace
+++ /dev/null
@@ -1,12 +0,0 @@
-<% USING: continuations namespaces io kernel math math.parser
-furnace webapps.pastebin calendar sequences ; %>
-
-<tr>
-    <td>
-        <a href="<% model get paste-link write %>">
-        <% "summary" get write %>
-        </a>
-    </td>
-    <td><% "author" get write %></td>
-    <td><% "date" get timestamp>string write %></td>
-</tr>
diff --git a/unmaintained/webapps/pastebin/pastebin.factor b/unmaintained/webapps/pastebin/pastebin.factor
deleted file mode 100755
index 36a72795db..0000000000
--- a/unmaintained/webapps/pastebin/pastebin.factor
+++ /dev/null
@@ -1,119 +0,0 @@
-USING: calendar furnace furnace.validator io.files kernel
-namespaces sequences http.server.responders html math.parser rss
-xml.writer xmode.code2html math calendar.format ;
-IN: webapps.pastebin
-
-TUPLE: pastebin pastes ;
-
-: <pastebin> ( -- pastebin )
-    V{ } clone pastebin construct-boa ;
-
-<pastebin> pastebin set-global
-
-TUPLE: paste
-summary author channel mode contents date
-annotations n ;
-
-: <paste> ( summary author channel mode contents -- paste )
-    f V{ } clone f paste construct-boa ;
-
-TUPLE: annotation summary author mode contents ;
-
-C: <annotation> annotation
-
-: get-paste ( n -- paste )
-    pastebin get pastebin-pastes nth ;
-
-: show-paste ( n -- )
-    serving-html
-    get-paste
-    [ "show-paste" render-component ] with-html-stream ;
-
-\ show-paste { { "n" v-number } } define-action
-
-: new-paste ( -- )
-    serving-html
-    [ "new-paste" render-template ] with-html-stream ;
-
-\ new-paste { } define-action
-
-: paste-list ( -- )
-    serving-html
-    [
-        [ show-paste ] "show-paste-quot" set
-        [ new-paste ] "new-paste-quot" set
-        pastebin get "paste-list" render-component
-    ] with-html-stream ;
-
-\ paste-list { } define-action
-
-: paste-link ( paste -- link )
-    paste-n number>string [ show-paste ] curry quot-link ;
-
-: safe-head ( seq n -- seq' )
-    over length min head ;
-
-: paste-feed ( -- entries )
-    pastebin get pastebin-pastes <reversed> 20 safe-head [
-        {
-            paste-summary
-            paste-link
-            paste-date
-        } get-slots timestamp>rfc3339 f swap <entry>
-    ] map ;
-
-: feed.xml ( -- )
-    "text/xml" serving-content
-    "pastebin"
-    "http://pastebin.factorcode.org"
-    paste-feed <feed> feed>xml write-xml ;
-
-\ feed.xml { } define-action
-
-: add-paste ( paste pastebin -- )
-    >r now over set-paste-date r>
-    pastebin-pastes 2dup length swap set-paste-n push ;
-
-: submit-paste ( summary author channel mode contents -- )
-    <paste> [ pastebin get add-paste ] keep
-    paste-link permanent-redirect ;
-
-\ new-paste
-\ submit-paste {
-    { "summary" v-required }
-    { "author" v-required }
-    { "channel" }
-    { "mode" v-required }
-    { "contents" v-required }
-} define-form
-
-\ new-paste {
-    { "channel" "#concatenative" }
-    { "mode" "factor" }
-} default-values
-
-: annotate-paste ( n summary author mode contents -- )
-    <annotation> swap get-paste
-    [ paste-annotations push ] keep
-    paste-link permanent-redirect ;
-
-[ "n" show-paste ]
-\ annotate-paste {
-    { "n" v-required v-number }
-    { "summary" v-required }
-    { "author" v-required }
-    { "mode" v-required }
-    { "contents" v-required }
-} define-form
-
-\ show-paste {
-    { "mode" "factor" }
-} default-values
-
-: style.css ( -- )
-    "text/css" serving-content
-    "style.css" send-resource ;
-
-\ style.css { } define-action
-
-"pastebin" "paste-list" "extra/webapps/pastebin" web-app
diff --git a/unmaintained/webapps/pastebin/show-paste.furnace b/unmaintained/webapps/pastebin/show-paste.furnace
deleted file mode 100755
index 30129eda24..0000000000
--- a/unmaintained/webapps/pastebin/show-paste.furnace
+++ /dev/null
@@ -1,21 +0,0 @@
-<% USING: namespaces io furnace sequences xmode.code2html calendar ; %>
-
-<%
-    "Paste: " "summary" get append "title" set
-    "header" render-template
-%>
-
-<table>
-<tr><th>Paste by:</th><td><% "author" get write %></td></tr>
-<!-- <tr><th>Channel:</th><td><% "channel" get write %></td></tr> -->
-<tr><th>Created:</th><td><% "date" get timestamp>string write %></td></tr>
-<tr><th>File type:</th><td><% "mode" get write %></td></tr>
-</table>
-
-<% "syntax" render-template %>
-
-<% "annotations" get [ "annotation" render-component ] each %>
-
-<% model get "annotate-paste" render-component %>
-
-<% "footer" render-template %>
diff --git a/unmaintained/webapps/pastebin/style.css b/unmaintained/webapps/pastebin/style.css
deleted file mode 100644
index 4a469f92cb..0000000000
--- a/unmaintained/webapps/pastebin/style.css
+++ /dev/null
@@ -1,41 +0,0 @@
-body {
-	font:75%/1.6em "Lucida Grande", "Lucida Sans Unicode", verdana, geneva, sans-serif;
-	color:#888;
-}
-
-h1.pastebin-title {
-	font-size:300%;
-}
-
-a {
-	color:#222;
-	border-bottom:1px dotted #ccc;
-	text-decoration:none;
-}
-
-a:hover {
-	border-bottom:1px solid #ccc;
-}
-
-pre.code {
-	border:1px dashed #ccc;
-	background-color:#f5f5f5;
-	padding:5px;
-	font-size:150%;
-	color:#000000;
-}
-
-.navbar {
-	background-color:#eeeeee;
-	padding:5px;
-	border:1px solid #ccc;
-}
-
-.infobox {
-	border: 1px solid #C1DAD7;
-	padding: 10px;
-}
-
-.error {
-	color: red;
-}
diff --git a/unmaintained/webapps/pastebin/syntax.furnace b/unmaintained/webapps/pastebin/syntax.furnace
deleted file mode 100755
index 17b64b920b..0000000000
--- a/unmaintained/webapps/pastebin/syntax.furnace
+++ /dev/null
@@ -1,3 +0,0 @@
-<% USING: xmode.code2html splitting namespaces ; %>
-
-<pre class="code"><% "contents" get string-lines "mode" get htmlize-lines %></pre>
diff --git a/unmaintained/webapps/planet/authors.txt b/unmaintained/webapps/planet/authors.txt
deleted file mode 100755
index 1901f27a24..0000000000
--- a/unmaintained/webapps/planet/authors.txt
+++ /dev/null
@@ -1 +0,0 @@
-Slava Pestov
diff --git a/unmaintained/webapps/planet/planet.factor b/unmaintained/webapps/planet/planet.factor
deleted file mode 100755
index 9a5f8eeb97..0000000000
--- a/unmaintained/webapps/planet/planet.factor
+++ /dev/null
@@ -1,129 +0,0 @@
-USING: sequences rss arrays concurrency.combinators kernel
-sorting html.elements io assocs namespaces math threads vocabs
-html furnace http.server.templating calendar math.parser
-splitting continuations debugger system http.server.responders
-xml.writer prettyprint logging calendar.format ;
-IN: webapps.planet
-
-: print-posting-summary ( posting -- )
-    <p "news" =class p>
-        <b> dup entry-title write </b> <br/>
-        <a entry-link =href "more" =class a>
-            "Read More..." write
-        </a>
-    </p> ;
-
-: print-posting-summaries ( postings -- )
-    [ print-posting-summary ] each ;
-
-: print-blogroll ( blogroll -- )
-    <ul "description" =class ul>
-        [
-            <li> <a dup third =href a> first write </a> </li>
-        ] each
-    </ul> ;
-
-: format-date ( date -- string )
-    rfc3339>timestamp timestamp>string ;
-
-: print-posting ( posting -- )
-    <h2 "posting-title" =class h2>
-        <a dup entry-link =href a>
-            dup entry-title write-html
-        </a>
-    </h2>
-    <p "posting-body" =class p>
-        dup entry-description write-html
-    </p>
-    <p "posting-date" =class p>
-        entry-pub-date format-date write
-    </p> ;
-
-: print-postings ( postings -- )
-    [ print-posting ] each ;
-
-SYMBOL: default-blogroll
-SYMBOL: cached-postings
-
-: safe-head ( seq n -- seq' )
-    over length min head ;
-
-: mini-planet-factor ( -- )
-    cached-postings get 4 safe-head print-posting-summaries ;
-
-: planet-factor ( -- )
-    serving-html [ "planet" render-template ] with-html-stream ;
-
-\ planet-factor { } define-action
-
-: planet-feed ( -- feed )
-    "[ planet-factor ]"
-    "http://planet.factorcode.org"
-    cached-postings get 30 safe-head <feed> ;
-
-: feed.xml ( -- )
-    "text/xml" serving-content
-    planet-feed feed>xml write-xml ;
-
-\ feed.xml { } define-action
-
-: style.css ( -- )
-    "text/css" serving-content
-    "style.css" send-resource ;
-
-\ style.css { } define-action
-
-SYMBOL: last-update
-
-: <posting> ( author entry -- entry' )
-    clone
-    [ ": " swap entry-title 3append ] keep
-    [ set-entry-title ] keep ;
-
-: fetch-feed ( url -- feed )
-    download-feed feed-entries ;
-
-\ fetch-feed DEBUG add-error-logging
-
-: fetch-blogroll ( blogroll -- entries )
-    dup 0 <column> swap 1 <column>
-    [ fetch-feed ] parallel-map
-    [ [ <posting> ] with map ] 2map concat ;
-
-: sort-entries ( entries -- entries' )
-    [ [ entry-pub-date ] compare ] sort <reversed> ;
-
-: update-cached-postings ( -- )
-    default-blogroll get
-    fetch-blogroll sort-entries
-    cached-postings set-global ;
-
-: update-thread ( -- )
-    millis last-update set-global
-    [ update-cached-postings ] "RSS feed update slave" spawn drop
-    10 60 * 1000 * sleep
-    update-thread ;
-
-: start-update-thread ( -- )
-    [
-        "webapps.planet" [
-            update-thread
-        ] with-logging
-    ] "RSS feed update master" spawn drop ;
-
-"planet" "planet-factor" "extra/webapps/planet" web-app
-
-{
-    { "Berlin Brown" "http://factorlang-fornovices.blogspot.com/feeds/posts/default" "http://factorlang-fornovices.blogspot.com" }
-    { "Chris Double" "http://www.blogger.com/feeds/18561009/posts/full/-/factor" "http://www.bluishcoder.co.nz/" }
-    { "Elie Chaftari" "http://fun-factor.blogspot.com/feeds/posts/default" "http://fun-factor.blogspot.com/" }
-    { "Doug Coleman" "http://code-factor.blogspot.com/feeds/posts/default" "http://code-factor.blogspot.com/" }
-    { "Daniel Ehrenberg" "http://useless-factor.blogspot.com/feeds/posts/default" "http://useless-factor.blogspot.com/" }
-    { "Gavin Harrison" "http://gmh33.blogspot.com/feeds/posts/default" "http://gmh33.blogspot.com/" }
-    { "Kio M. Smallwood"
-    "http://sekenre.wordpress.com/feed/atom/"
-    "http://sekenre.wordpress.com/" }
-    { "Phil Dawes" "http://www.phildawes.net/blog/category/factor/feed/atom" "http://www.phildawes.net/blog/" }
-    { "Samuel Tardieu" "http://www.rfc1149.net/blog/tag/factor/feed/atom/" "http://www.rfc1149.net/blog/tag/factor/" }
-    { "Slava Pestov" "http://factor-language.blogspot.com/atom.xml" "http://factor-language.blogspot.com/" }
-} default-blogroll set-global
diff --git a/unmaintained/webapps/planet/planet.furnace b/unmaintained/webapps/planet/planet.furnace
deleted file mode 100644
index 4c6676c0a2..0000000000
--- a/unmaintained/webapps/planet/planet.furnace
+++ /dev/null
@@ -1,45 +0,0 @@
-<% USING: namespaces html.elements webapps.planet sequences
-furnace ; %>
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
-
-	<title>planet-factor</title>
-	<link rel="stylesheet" href="style.css" type="text/css" media="screen" title="no title" charset="utf-8" />
-    <link rel="alternate" type="application/atom+xml" title="Planet Factor - Atom" href="feed.xml" />
-</head>
-
-<body id="index">
-    <h1 class="planet-title">[ planet-factor ]</h1>
-    <table width="100%" cellpadding="10">
-        <tr>
-            <td> <% cached-postings get 20 safe-head print-postings %> </td>
-            <td valign="top" width="25%" class="infobox">
-                <p>
-                    <b>planet-factor</b> is an Atom/RSS aggregator that collects the
-                    contents of <a href="http://factorcode.org/">Factor</a>-related blogs. It is inspired by
-                    <a href="http://planet.lisp.org">Planet Lisp</a>.
-                </p>
-                <p>
-                    <img src="http://planet.lisp.org/feed-icon-14x14.png" />
-                    <a href="feed.xml"> Syndicate </a>
-                </p>
-                <p>
-                    This webapp is written in <a href="http://factorcode.org/">Factor</a>.<br/>
-                    <% "webapps.planet" browse-webapp-source %>
-                </p>
-                <h2 class="blogroll-title">Blogroll</h2>
-                <% default-blogroll get print-blogroll %>
-                <p>
-                    If you want your weblog added to the blogroll, <a href="http://factorcode.org/gethelp.fhtml">just ask</a>.
-                </p>
-            </td>
-        </tr>
-    </table>
-</body>
-
-</html>
diff --git a/unmaintained/webapps/planet/style.css b/unmaintained/webapps/planet/style.css
deleted file mode 100644
index 7a66d8d495..0000000000
--- a/unmaintained/webapps/planet/style.css
+++ /dev/null
@@ -1,45 +0,0 @@
-body {
-	font:75%/1.6em "Lucida Grande", "Lucida Sans Unicode", verdana, geneva, sans-serif;
-	color:#888;
-}
-
-h1.planet-title {
-	font-size:300%;
-}
-
-a {
-	color:#222;
-	border-bottom:1px dotted #ccc;
-	text-decoration:none;
-}
-
-a:hover {
-	border-bottom:1px solid #ccc;
-}
-
-.posting-title {
-	background-color:#f5f5f5;
-}
-
-pre, code {
-	color:#000000;
-	font-size:120%;
-}
-
-.infobox {
-	border-left: 1px solid #C1DAD7;
-}
-
-.posting-date {
-	text-align: right;
-	font-size:90%;
-}
-
-a.more {
-	display:block;
-	padding:0 0 5px 0;
-	color:#333;
-	text-decoration:none;
-	text-align:right;
-	border:none;
-}
diff --git a/unmaintained/wee-url/load.factor b/unmaintained/wee-url/load.factor
deleted file mode 100644
index 96d27164e8..0000000000
--- a/unmaintained/wee-url/load.factor
+++ /dev/null
@@ -1,4 +0,0 @@
-REQUIRES: apps/http-server libs/store ;
-
-PROVIDE: apps/wee-url
-{ +files+ { "responder.factor" } } ;
diff --git a/unmaintained/wee-url/responder.factor b/unmaintained/wee-url/responder.factor
deleted file mode 100644
index 4d7b076cb6..0000000000
--- a/unmaintained/wee-url/responder.factor
+++ /dev/null
@@ -1,91 +0,0 @@
-! Copyright (C) 2006 Doug Coleman.
-! See http://factorcode.org/license.txt for BSD license.
-USING: generic assocs help html httpd
-io kernel math namespaces prettyprint sequences store strings ;
-IN: wee-url-responder
-
-SYMBOL: wee-shortcuts
-SYMBOL: wee-store
-
-"wee-url.store" load-store wee-store set-global
-H{ } clone wee-shortcuts wee-store get store-variable
-
-: responder-url "responder-url" get ;
-
-: wee-url ( string -- url )
-    [
-        "http://" %
-        host %
-        responder-url %
-        %
-    ] "" make ;
-
-: letter-bank
-    "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" ;
-
-: random-letter letter-bank length random letter-bank nth ;
-
-: random-url ( -- string )
-    6 random 1+ [ drop random-letter ] map >string
-    dup wee-shortcuts get key? [ drop random-url ] when ;
-
-: prepare-wee-url ( url -- url )
-    CHAR: : over member? [ "http://" swap append ] unless ;
-
-: set-symmetric-hash ( obj1 obj2 hash -- )
-    3dup set-at swapd set-at ;
-
-: add-shortcut ( url-long -- url-short )
-    dup wee-shortcuts get at* [
-        nip
-    ] [
-        drop
-        random-url [ wee-shortcuts get set-symmetric-hash ] keep
-        wee-store get save-store
-    ] if ;
-
-: url-prompt ( -- )
-    serving-html
-    "wee-url.com - wee URLs since 2007" [
-        <form "get" =method responder-url =action form>
-            "URL: " write
-            <input "text" =type "url" =name input/>
-            <input "submit" =type "Submit" =value input/>
-        </form>
-    ] simple-html-document ;
-
-: url-submitted ( url-long url-short -- )
-    "URL Submitted" [
-        "URL: " write write nl
-        "wee-url: " write
-        <a dup wee-url =href a> wee-url write </a> nl
-        "Back to " write
-        <a responder-url =href a> "wee-url" write </a> nl
-    ] simple-html-document ;
-
-: url-submit ( url -- )
-    serving-html
-    prepare-wee-url [ add-shortcut ] keep url-submitted ;
-
-: url-error ( -- )
-    serving-html
-    "wee-url error" [
-        "No such link." write
-    ] simple-html-document ;
-
-: wee-url-responder ( url -- )
-    "url" query-param [
-        url-submit drop
-    ] [
-        dup empty? [
-            drop url-prompt
-        ] [
-            wee-shortcuts get at*
-            [ permanent-redirect ] [ drop url-error ] if
-        ] if
-    ] if* ;
-
-[
-    "wee-url" "responder" set
-    [ wee-url-responder ] "get" set
-] make-responder
diff --git a/unmaintained/wee-url/wee-url.factor b/unmaintained/wee-url/wee-url.factor
deleted file mode 100644
index ead2ee8976..0000000000
--- a/unmaintained/wee-url/wee-url.factor
+++ /dev/null
@@ -1,89 +0,0 @@
-! Copyright (C) 2007 Doug Coleman.
-! See http://factorcode.org/license.txt for BSD license.
-USING: assocs furnace html html.elements http.server
-http.server.responders io kernel math math.ranges
-namespaces random sequences store strings ;
-IN: webapps.wee-url
-
-SYMBOL: shortcuts
-SYMBOL: store
-
-! "wee-url.store" load-store store set-global
-! H{ } clone shortcuts store get store-variable
-
-: set-at-once ( value key assoc -- ? )
-    2dup key? [ 3drop f ] [ set-at t ] if ;
-
-: responder-url "responder/wee-url" ;
-
-: wee-url ( string -- url )
-    [
-        "http://" %
-        host %
-        responder-url %
-        %
-    ] "" make ;
-
-: letter-bank
-    "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" ; inline
-
-: random-url ( -- string )
-    1 6 [a,b] random [ drop letter-bank random ] "" map-as
-    dup shortcuts get key? [ drop random-url ] when ;
-
-: add-shortcut ( url-long url-short -- url-short )
-    shortcuts get set-at-once [
-        store get save-store
-    ] [
-        drop
-    ] if ;
-
-: show-submit ( -- )
-    serving-html
-    "wee-url.com - wee URLs since 2007" [
-        <form "get" =method "url-submit" =action form>
-            "URL: " write
-            <input "text" =type "url" =name input/>
-            <input "submit" =type "Submit" =value input/>
-        </form>
-    ] simple-html-document ;
-
-\ show-submit { } define-action
-
-: url-submitted ( url-long url-short -- )
-    "URL Submitted" [
-        "URL: " write write nl
-        "wee-url: " write
-        <a dup wee-url =href a> wee-url write </a> nl
-        "Back to " write
-        <a responder-url =href a> "wee-url" write </a> nl
-    ] simple-html-document ;
-
-: url-submit ( url -- )
-    [ add-shortcut ] keep
-    url-submitted ;
-
-\ url-submit {
-    { "url" }
-} define-action
-
-: url-error ( -- )
-    serving-html
-    "wee-url error" [
-        "No such link." write
-    ] simple-html-document ;
-
-: wee-url-responder ( url -- )
-    "url" query-param [
-        url-submit drop
-    ] [
-        dup empty? [
-            drop show-submit
-        ] [
-            shortcuts get at*
-            [ permanent-redirect ] [ drop url-error ] if
-        ] if
-    ] if* ;
-
-! "wee-url" "wee-url-responder" "extra/webapps/wee-url" web-app
-~