diff --git a/extra/assocs/lib/lib-tests.factor b/extra/assocs/lib/lib-tests.factor
new file mode 100644
index 0000000000..0bf8270088
--- /dev/null
+++ b/extra/assocs/lib/lib-tests.factor
@@ -0,0 +1,4 @@
+IN: assocs.lib.tests
+USING: assocs.lib tools.test vectors ;
+
+{ 1 1 } [ [ ?push ] histogram ] must-infer-as
diff --git a/extra/assocs/lib/lib.factor b/extra/assocs/lib/lib.factor
index 1c89c1eb16..14632df771 100755
--- a/extra/assocs/lib/lib.factor
+++ b/extra/assocs/lib/lib.factor
@@ -41,4 +41,4 @@ IN: assocs.lib
 : histogram ( assoc quot -- assoc' )
     H{ } clone [
         swap [ change-at ] 2curry assoc-each
-    ] keep ;
+    ] keep ; inline
diff --git a/extra/builder/release/archive/archive.factor b/extra/builder/release/archive/archive.factor
index 9b239da586..25153436e6 100644
--- a/extra/builder/release/archive/archive.factor
+++ b/extra/builder/release/archive/archive.factor
@@ -24,12 +24,23 @@ IN: builder.release.archive
 
 : windows-archive-cmd ( -- cmd ) { "zip" "-r" archive-name "factor" } ;
 
+! : macosx-archive-cmd ( -- cmd )
+!   { "hdiutil" "create"
+!               "-srcfolder" "factor"
+!               "-fs" "HFS+"
+!               "-volname" "factor"
+!               archive-name } ;
+
 : macosx-archive-cmd ( -- cmd )
+  { "mkdir" "dmg-root" }                         try-process
+  { "cp" "-r" "factor" "dmg-root" }              try-process
   { "hdiutil" "create"
-              "-srcfolder" "factor"
+              "-srcfolder" "dmg-root"
               "-fs" "HFS+"
               "-volname" "factor"
-              archive-name } ;
+              archive-name }          to-strings try-process
+  { "rm" "-rf" "dmg-root" }                      try-process
+  { "true" } ;
 
 : unix-archive-cmd ( -- cmd ) { "tar" "-cvzf" archive-name "factor" } ;
 
diff --git a/extra/websites/concatenative/concatenative.factor b/extra/websites/concatenative/concatenative.factor
index a4f826d7f6..6d65f10783 100644
--- a/extra/websites/concatenative/concatenative.factor
+++ b/extra/websites/concatenative/concatenative.factor
@@ -63,19 +63,33 @@ TUPLE: factor-website < dispatcher ;
         { factor-website "page" } >>template
     test-db <alloy> ;
 
-: init-factor-website ( -- )
-    "factorcode.org" 25 <inet> smtp-server set-global
+SYMBOL: key-password
+SYMBOL: key-file
+SYMBOL: dh-file
+
+: common-configuration ( -- )
+    "concatenative.org" 25 <inet> smtp-server set-global
     "noreply@concatenative.org" lost-password-from set-global
     "website@concatenative.org" insomniac-sender set-global
     "slava@factorcode.org" insomniac-recipients set-global
-    init-factor-db
-    <factor-website> main-responder set-global ;
+    <factor-website> main-responder set-global
+    init-factor-db ;
+
+: init-testing ( -- )
+    "resource:extra/openssl/test/dh1024.pem" dh-file set-global
+    "resource:extra/openssl/test/server.pem" key-file set-global
+    "password" key-password set-global
+    common-configuration ;
+
+: init-production ( -- )
+    "/home/slava/cert/host.pem" key-file set-global
+    common-configuration ;
 
 : <factor-secure-config> ( -- config )
     <secure-config>
-        "resource:extra/openssl/test/server.pem" >>key-file
-        "resource:extra/openssl/test/dh1024.pem" >>dh-file
-        "password" >>password ;
+        key-file get >>key-file
+        dh-file get >>dh-file
+        key-password get >>password ;
 
 : <factor-website-server> ( -- threaded-server )
     <http-server>
@@ -83,7 +97,7 @@ TUPLE: factor-website < dispatcher ;
         8080 >>insecure
         8431 >>secure ;
 
-: start-factor-website ( -- )
+: start-website ( -- )
     test-db start-expiring
     test-db start-update-task
     http-insomniac