diff --git a/js/main.js b/js/main.js
index ee74f6f6cf8e2bcfa103f8a0581811994e285af3..64760189de7c1ea53c170b157fa75551f29168c8 100644
--- a/js/main.js
+++ b/js/main.js
@@ -66,6 +66,7 @@ require.config({
         gikSuperCell: 'cells/supercells/GIKSuperCell',
 
         //materials
+        materials: 'materials/DMAMaterials',
         electronicMaterials: 'materials/ElectronicMaterials',
 
         //UI
diff --git a/js/materials/DMAMaterials.js b/js/materials/DMAMaterials.js
new file mode 100644
index 0000000000000000000000000000000000000000..c4197ffb05340265c6e0ad3a12fd32be14852228
--- /dev/null
+++ b/js/materials/DMAMaterials.js
@@ -0,0 +1,36 @@
+/**
+ * Created by aghassaei on 6/4/15.
+ */
+
+
+define(['underscore', 'three', 'appState'], function(_, THREE, appState){
+
+    function DMAMaterials(materialList){
+        this.materials = {};
+        this.materialList = materialList;
+        this.changeMaterials();
+    }
+
+    DMAMaterials.prototype.changeMaterials = function(){
+        var self = this;
+        _.each(_.keys(self.materialList), function(material){
+            if (appState.get("realisticColorScheme")) {
+                if (self.materials[material]) self.materials[material].color = new THREE.Color(self.materialList[material].color);
+                else self.materials[material] = new THREE.MeshLambertMaterial({color:self.materialList[material].color});
+                if (self.materialList[material].opacity){
+                    self.materials[material].transparent = true;
+                    self.materials[material].opacity = self.materialList[material].opacity;
+                } else {
+                    self.materials[material].transparent = false;
+                }
+            }
+            else {
+                if (self.materials[material]) self.materials[material].color = new THREE.Color(self.materialList[material].altColor);
+                else self.materials[material] = new THREE.MeshLambertMaterial({color:self.materialList[material].altColor});
+                self.materials[material].transparent = false;
+            }
+        });
+    };
+
+    return DMAMaterials;
+});
\ No newline at end of file
diff --git a/js/materials/ElectronicMaterials.js b/js/materials/ElectronicMaterials.js
index 93d0dc5882de611a0b5afd2df0490b846e65d4e0..fce8178b496c924e329575af94cbed2945fd767a 100644
--- a/js/materials/ElectronicMaterials.js
+++ b/js/materials/ElectronicMaterials.js
@@ -3,34 +3,17 @@
  */
 
 
-define(['underscore', 'three', 'appState', 'plist'], function(_, THREE, appState, plist){
+define(['underscore', 'three', 'appState', 'plist', 'materials'], function(_, THREE, appState, plist, DMAMaterials){
     
-    var materials = {};
-    var materialList = plist.allMaterialTypes.cube.gik;
-    
-    function changeMaterials(){
-        _.each(_.keys(materialList), function(material){
-            if (appState.get("realisticColorScheme")) {
-                if (materials[material]) materials[material].color = new THREE.Color(materialList[material].color);
-                else materials[material] = new THREE.MeshLambertMaterial({color:materialList[material].color});
-                if (materialList[material].opacity){
-                    materials[material].transparent = true;
-                    materials[material].opacity = materialList[material].opacity;
-                } else {
-                    materials[material].transparent = false;
-                }
-            }
-            else {
-                if (materials[material]) materials[material].color = new THREE.Color(materialList[material].altColor);
-                else materials[material] = new THREE.MeshLambertMaterial({color:materialList[material].altColor});
-                materials[material].transparent = false;
-            }
-        });
+    function ElectronicMaterials(){
+       DMAMaterials.call(this, plist.allMaterialTypes.cube.gik);
     }
-    changeMaterials();
+    ElectronicMaterials.prototype = Object.create(DMAMaterials.prototype);
+
+    var material = new ElectronicMaterials();
     
     return {
-        changeMaterials: changeMaterials,
-        materials: materials
+        changeMaterials: material.changeMaterials,
+        materials: material.materials
     }
 });
\ No newline at end of file