diff --git a/js/lattice/CubeLattice.js b/js/lattice/CubeLattice.js
index de8c82b37aaba36ba8dd59d438132c36b643fb29..b3499ff394153a39dbf867b8958dc811c9ae451d 100644
--- a/js/lattice/CubeLattice.js
+++ b/js/lattice/CubeLattice.js
@@ -42,11 +42,8 @@ define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'thre
             return 1+2*cellSeparation;
         },
 
-        makeCellForLatticeType: function(json, callback){
-            require(['cubeCell'], function(CubeCell){
-                var cell = new CubeCell(json);
-                if (callback) callback(cell);
-            });
+        getCellSubclassFile: function(){
+            return "cubeCell";
         },
 
         _undo: function(){//remove all the mixins, this will help with debugging later
diff --git a/js/lattice/GIKLattice.js b/js/lattice/GIKLattice.js
index 89a86daf7409cae4ab1b8d11da7bd0c56145e6b2..1218f0daa92d9240aa6ed6f24139b59fecaed872 100644
--- a/js/lattice/GIKLattice.js
+++ b/js/lattice/GIKLattice.js
@@ -44,11 +44,8 @@ define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'thre
             return 1.28*(1+2*cellSeparation);
         },
 
-        makeCellForLatticeType: function(json, callback){
-            require(['gikSuperCell'], function(GIKSuperCell){
-                var cell = new GIKSuperCell(json);
-                if (callback) callback(cell);
-            });
+        getCellSubclassFile: function(){
+            return "gikSuperCell";
         },
 
         _undo: function(){//remove all the mixins, this will help with debugging later
diff --git a/js/lattice/KelvinLattice.js b/js/lattice/KelvinLattice.js
index 763a8585ce469bd57f0c79598998d4cbe8573aa4..1b850891da04f57cd249a94e5401214b0a1cc25c 100644
--- a/js/lattice/KelvinLattice.js
+++ b/js/lattice/KelvinLattice.js
@@ -43,11 +43,8 @@ define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'thre
             return 2*Math.sqrt(2)+2*cellSeparation;
         },
 
-        makeCellForLatticeType: function(json, callback){
-            require(['kelvinCell'], function(KelvinCell){
-                var cell = new KelvinCell(json);
-                if (callback) callback(cell);
-            });
+        getCellSubclassFile: function(){
+            return "kelvinCell";
         },
 
         _undo: function(){//remove all the mixins, this will help with debugging later
diff --git a/js/lattice/LatticeBase.js b/js/lattice/LatticeBase.js
index cbeb311b6f5810fd9ae8cd70af691da0dead54be..b1a4a640b0d32d47822620e4a2754c1ce0505bbe 100644
--- a/js/lattice/LatticeBase.js
+++ b/js/lattice/LatticeBase.js
@@ -92,6 +92,13 @@ define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'thre
 
         //add/remove cells
 
+        makeCellForLatticeType: function(json, callback){
+            require([this.getCellSubclassFile()], function(CellSubclass){
+                var cell = new CellSubclass(json);
+                if (callback) callback(cell);
+            });
+        },
+
         addCellsInRange: function(range){//add a block of cells (extrude)
             this.checkForMatrixExpansion(this.sparseCells, range.max, range.min);
 
diff --git a/js/lattice/OctaEdgeLattice.js b/js/lattice/OctaEdgeLattice.js
index 46c8e5b6e1977fdff77944d1ec14faf4dc6e97c2..f5ca9901482bdd2ad8fe66f2c093d67147d1434c 100644
--- a/js/lattice/OctaEdgeLattice.js
+++ b/js/lattice/OctaEdgeLattice.js
@@ -80,11 +80,8 @@ define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'thre
             return 2/Math.sqrt(6)+2*cellSeparation;
         },
 
-        makeCellForLatticeType: function(json, callback){
-            require(['octaEdgeCell'], function(OctaEdgeCell){
-                var cell = new OctaEdgeCell(json);
-                if (callback) callback(cell);
-            });
+        getCellSubclassFile: function(){
+            return "octaEdgeCell";
         },
 
         _undo: function(){//remove all the mixins, this will help with debugging later
diff --git a/js/lattice/OctaFaceLattice.js b/js/lattice/OctaFaceLattice.js
index 7313dc02cd546fc4c042ba782cca9b4de24c68b4..5e0d1d0692299419efc64a74e24dcb12a149cd04 100644
--- a/js/lattice/OctaFaceLattice.js
+++ b/js/lattice/OctaFaceLattice.js
@@ -49,11 +49,8 @@ define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'thre
             return 2/Math.sqrt(6)+2*cellSeparation;
         },
 
-        makeCellForLatticeType: function(json, callback){
-            require(['octaFaceCell'], function(OctaFaceCell){
-                var cell = new OctaFaceCell(json);
-                if (callback) callback(cell);
-            });
+        getCellSubclassFile: function(){
+            return "octaFaceCell";
         },
 
         _undo: function(){//remove all the mixins
diff --git a/js/lattice/OctaRotEdgeLattice.js b/js/lattice/OctaRotEdgeLattice.js
index 3e37f740020ddf523171a1c555131310978ce2ad..a12be95e63021ba69d059488e3e75e87e2521b7d 100644
--- a/js/lattice/OctaRotEdgeLattice.js
+++ b/js/lattice/OctaRotEdgeLattice.js
@@ -47,11 +47,8 @@ define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'thre
             return Math.sqrt(2)/2 + 2*cellSeparation;
         },
 
-        makeCellForLatticeType: function(json, callback){
-            require(['octaRotEdgeCell'], function(OctaRotEdgeCell){
-                var cell = new OctaRotEdgeCell(json);
-                if (callback) callback(cell);
-            });
+        getCellSubclassFile: function(){
+            return "octaRotEdgeCell";
         },
 
         _undo: function(){//remove all the mixins
diff --git a/js/lattice/OctaVertexLattice.js b/js/lattice/OctaVertexLattice.js
index 242c8b6f94ab020dc8324db0a03edf9fd013a4ae..7a005de01543c3cefea2134de30242a43ed30e73 100644
--- a/js/lattice/OctaVertexLattice.js
+++ b/js/lattice/OctaVertexLattice.js
@@ -42,11 +42,8 @@ define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'thre
             return Math.sqrt(2)+2*cellSeparation;
         },
 
-        makeCellForLatticeType: function(json, callback){
-            require(['octaVertexCell'], function(OctaVertexCell){
-                var cell = new OctaVertexCell(json);
-                if (callback) callback(cell);
-            });
+        getCellSubclassFile: function(){
+            return "octaVertexCell";
         },
 
         _undo: function(){//remove all the mixins, this will help with debugging later
diff --git a/js/lattice/TetraStackedLattice.js b/js/lattice/TetraStackedLattice.js
index 5e6025000b8982023579a6d317eadddfa38f6197..7694dacb7cd2632a889adb65c23440cd0e236de8 100644
--- a/js/lattice/TetraStackedLattice.js
+++ b/js/lattice/TetraStackedLattice.js
@@ -49,11 +49,8 @@ define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'thre
             return 2/Math.sqrt(6)+2*cellSeparation;
         },
 
-        makeCellForLatticeType: function(json, callback){
-            require(['tetraStackedCell'], function(TetraStackedCell){
-                var cell = new TetraStackedCell(json);
-                if (callback) callback(cell);
-            });
+        getCellSubclassFile: function(){
+            return "tetraStackedCell";
         },
 
         _undo: function(){//remove all the mixins, this will help with debugging later
diff --git a/js/lattice/TetraVertexLattice.js b/js/lattice/TetraVertexLattice.js
index c5a466dc2ff0065a3a92d4fdafbcdca33365ce7f..a1c2c8ac1d34c57de45561a4f7ff1303ca23763a 100644
--- a/js/lattice/TetraVertexLattice.js
+++ b/js/lattice/TetraVertexLattice.js
@@ -51,11 +51,8 @@ define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'thre
             return 2/Math.sqrt(6)+2*cellSeparation;
         },
 
-        makeCellForLatticeType: function(json, callback){
-            require(['tetraVertexCell'], function(TetraVertexCell){
-                var cell = new TetraVertexCell(json);
-                if (callback) callback(cell);
-            });
+        getCellSubclassFile: function(){
+            return "tetraVertexCell";
         },
 
         _undo: function(){//remove all the mixins, this will help with debugging later
diff --git a/js/lattice/TruncatedCubeLattice.js b/js/lattice/TruncatedCubeLattice.js
index c24d05b8b10f99ae3ce8037ce68ce3d9802898b3..4ee6ffc0020b16a7078703c619974888251d508f 100644
--- a/js/lattice/TruncatedCubeLattice.js
+++ b/js/lattice/TruncatedCubeLattice.js
@@ -43,11 +43,8 @@ define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'thre
             return Math.sqrt(2)+2*cellSeparation;
         },
 
-        makeCellForLatticeType: function(json, callback){
-            require(['truncatedCubeCell'], function(TruncatedCubeCell){
-                var cell = new TruncatedCubeCell(json);
-                if (callback) callback(cell);
-            });
+        getCellSubclassFile: function(){
+            return "truncatedCubeCell";
         },
 
         _undo: function(){//remove all the mixins, this will help with debugging later