diff --git a/webpack/webpack.aot-common.js b/webpack/webpack.aot-common.js
new file mode 100644
index 0000000000000000000000000000000000000000..8c3153a3c91f6d1d96e1209f9d764e5fb574b6c8
--- /dev/null
+++ b/webpack/webpack.aot-common.js
@@ -0,0 +1,81 @@
+const webpack = require('webpack')
+const path = require('path')
+const HtmlWebpackPlugin = require('html-webpack-plugin')
+const ngtools = require('@ngtools/webpack')
+const AngularCompilerPlugin = ngtools.AngularCompilerPlugin
+const merge = require('webpack-merge')
+const staticAssets = require('./webpack.staticassets')
+
+const commonAot = {
+  entry: {
+    main: './src/main-aot.ts'
+  },
+  output : {
+    filename : '[name].js',
+    path : path.resolve(__dirname,'../dist/aot')
+  },
+  module: {
+    rules: [
+      {
+        test : /third_party.*?\.js$|worker\.js|worker-\w+\.js/,
+        use : {
+          loader : 'file-loader',
+          options: {
+            name : '[name].[ext]'
+          }
+        }
+      },
+      {
+        test: /(?:\.ngfactory\.js|\.ngstyle\.js|\.ts)$/,
+        loader: '@ngtools/webpack',
+        exclude : /third_party|plugin_example|spec\.ts|test\.ts/
+      },
+      {
+        test : /\.(html|css)$/,
+        exclude : /export\_nehuba|index|res\/css|plugin_example|material\/prebuilt-themes/,
+        use : {
+          loader : 'raw-loader',
+        }
+      },
+      {
+        test : /res\/css.*?css$/,
+        use : {
+          loader : 'file-loader',
+          options : {
+            name : '[name].[ext]'
+          }
+        }
+      }
+    ]
+  },
+  plugins : [
+    new HtmlWebpackPlugin({
+      template : 'src/index.html'
+    }),
+    new AngularCompilerPlugin({
+      tsConfigPath: 'tsconfig-aot.json',
+      entryModule: 'src/main.module#MainModule',
+      directTemplateLoading: true
+    }),
+    new webpack.DefinePlugin({
+      // TODO have to figure out how to set this properly
+      // needed to avoid inline eval
+      // shouldn't mode: 'production' do that already?
+      ngDevMode: false,
+      ngJitMode: false
+    })
+  ],
+  resolve : {
+    extensions : [
+      '.ts',
+      '.js',
+      '.json'
+    ],
+    alias : {
+      "third_party" : path.resolve(__dirname, '../third_party'),
+      "src" : path.resolve(__dirname, '../src')
+    }
+  }
+}
+
+module.exports = merge(staticAssets, commonAot)
\ No newline at end of file
diff --git a/webpack/webpack.aot.js b/webpack/webpack.aot.js
index 75cb504e183e0064768494a5865e513c7cae9a7d..0660ec650c1501aea74a41d9e617bb4fc2d9f005 100644
--- a/webpack/webpack.aot.js
+++ b/webpack/webpack.aot.js
@@ -1,90 +1,6 @@
-const common = require('./webpack.common.js')
-const path = require('path')
-const ngtools = require('@ngtools/webpack')
-const HtmlWebpackPlugin = require('html-webpack-plugin')
-const AngularCompilerPlugin = ngtools.AngularCompilerPlugin
-const ClosureCompilerPlugin = require('webpack-closure-compiler')
 const merge = require('webpack-merge')
-const staticAssets = require('./webpack.staticassets')
-const TerserPlugin = require('terser-webpack-plugin')
-const webpack = require('webpack')
+const aotCommon = require('./webpack.aot-common')
 
-module.exports = merge(staticAssets, {
+module.exports = merge(aotCommon, {
   mode: 'production',
-  entry : {
-    main : './src/main-aot.ts'
-  },
-  output : {
-    filename : '[name].js',
-    path : path.resolve(__dirname,'../dist/aot')
-  },
-  module: {
-    rules: [
-      {
-        test : /third_party.*?\.js$|worker\.js|worker-\w+\.js/,
-        use : {
-          loader : 'file-loader',
-          options: {
-            name : '[name].[ext]'
-          }
-        }
-      },
-      {
-        test: /(?:\.ngfactory\.js|\.ngstyle\.js|\.ts)$/,
-        loader: '@ngtools/webpack',
-        exclude : /third_party|plugin_example|spec\.ts$/
-      },
-      {
-        test : /\.(html|css)$/,
-        exclude : /export\_nehuba|index|res\/css|plugin_example|material\/prebuilt-themes/,
-        use : {
-          loader : 'raw-loader',
-        }
-      },
-      {
-        test : /res\/css.*?css$/,
-        use : {
-          loader : 'file-loader',
-          options : {
-            name : '[name].[ext]'
-          }
-        }
-      }
-    ]
-  },
-  plugins : [
-    new HtmlWebpackPlugin({
-      template : 'src/index.html'
-    }),
-    new AngularCompilerPlugin({
-      tsConfigPath: 'tsconfig-aot.json',
-      entryModule: 'src/main.module#MainModule',
-      directTemplateLoading: true
-    }),
-    new webpack.DefinePlugin({
-      // TODO have to figure out how to set this properly
-      // needed to avoid inline eval
-      // shouldn't mode: 'production' do that already?
-      ngDevMode: false,
-      ngJitMode: false
-    })
-  ],
-  optimization: {
-    minimizer: [
-      new TerserPlugin({
-        extractComments: false
-      })
-    ]
-  },
-  resolve : {
-    extensions : [
-      '.ts',
-      '.js',
-      '.json'
-    ],
-    alias : {
-      "third_party" : path.resolve(__dirname,'../third_party'),
-      "src" : path.resolve(__dirname,'../src')
-    }
-  }
-})
\ No newline at end of file
+})
diff --git a/webpack/webpack.dev-aot.js b/webpack/webpack.dev-aot.js
index 8adcad909ccbb08a9535246ab0c9b716b25966d2..7b43cfd18737e98a0e15fa229cd302729b7d90c5 100644
--- a/webpack/webpack.dev-aot.js
+++ b/webpack/webpack.dev-aot.js
@@ -1,84 +1,7 @@
-const common = require('./webpack.common.js')
-const path = require('path')
-const ngtools = require('@ngtools/webpack')
-const HtmlWebpackPlugin = require('html-webpack-plugin')
-const AngularCompilerPlugin = ngtools.AngularCompilerPlugin
-const ClosureCompilerPlugin = require('webpack-closure-compiler')
 const merge = require('webpack-merge')
-const staticAssets = require('./webpack.staticassets')
-const TerserPlugin = require('terser-webpack-plugin')
-const webpack = require('webpack')
+const aotCommon = require('./webpack.aot-common')
 
-module.exports = merge(staticAssets, {
+module.exports = merge(aotCommon, {
   mode: 'development',
-  entry : {
-    main : './src/main-aot.ts'
-  },
-  output : {
-    filename : '[name].js',
-    path : path.resolve(__dirname,'../dist/aot')
-  },
   devtool:'source-map',
-  module: {
-    rules: [
-      {
-        test : /third_party.*?\.js$|worker\.js|worker-\w+\.js/,
-        use : {
-          loader : 'file-loader',
-          options: {
-            name : '[name].[ext]'
-          }
-        }
-      },
-      {
-        test: /(?:\.ngfactory\.js|\.ngstyle\.js|\.ts)$/,
-        loader: '@ngtools/webpack',
-        exclude : /third_party|plugin_example/
-      },
-      {
-        test : /\.(html|css)$/,
-        exclude : /export\_nehuba|index|res\/css|plugin_example|material\/prebuilt-themes/,
-        use : {
-          loader : 'raw-loader',
-        }
-      },
-      {
-        test : /res\/css.*?css$/,
-        use : {
-          loader : 'file-loader',
-          options : {
-            name : '[name].[ext]'
-          }
-        }
-      }
-    ]
-  },
-  plugins : [
-    new HtmlWebpackPlugin({
-      template : 'src/index.html'
-    }),
-    new AngularCompilerPlugin({
-      tsConfigPath: 'tsconfig-aot.json',
-      entryModule: 'src/main.module#MainModule',
-      directTemplateLoading: true
-    }),
-    new webpack.DefinePlugin({
-      // TODO have to figure out how to set this properly
-      // needed to avoid inline eval
-      // shouldn't mode: 'production' do that already?
-      ngDevMode: false,
-      ngJitMode: false
-    })
-  ],
-  resolve : {
-    extensions : [
-      '.ts',
-      '.js',
-      '.json'
-    ],
-    alias : {
-      "third_party" : path.resolve(__dirname, '../third_party'),
-      "src" : path.resolve(__dirname, '../src')
-    }
-  }
 })