diff --git a/appengine/redirect.html b/appengine/redirect.html
index 5e9bd5bb7..c35c9aa94 100644
--- a/appengine/redirect.html
+++ b/appengine/redirect.html
@@ -77,6 +77,11 @@ if (loc.match('/apps/puzzle/')) {
loc = 'https://blockly-games.appspot.com/puzzle';
}
+if (loc.match('/apps/blockfactory/')) {
+ // Block Factory moved from apps to demos on 16 Oct 2014.
+ loc = loc.replace('/apps/', '/demos/');
+}
+
if (loc.match('/apps/turtle/turtle.html')) {
// Turtle moved to index.html on 7 Aug 2013.
loc = loc.replace('/turtle.html', '/index.html');
diff --git a/apps/code/generated/af.js b/apps/code/generated/af.js
deleted file mode 100644
index 13b50e194..000000000
--- a/apps/code/generated/af.js
+++ /dev/null
@@ -1,50 +0,0 @@
-// This file was automatically generated from common.soy.
-// Please don't edit this file by hand.
-
-if (typeof apps == 'undefined') { var apps = {}; }
-
-
-apps.messages = function(opt_data, opt_ignored, opt_ijData) {
- return '
' + apps.ok(null, null, opt_ijData) + '
';
-};
-
-
-apps.storageDialog = function(opt_data, opt_ignored, opt_ijData) {
- return '' + apps.ok(null, null, opt_ijData) + '
';
-};
-
-
-apps.ok = function(opt_data, opt_ignored, opt_ijData) {
- return '