diff --git a/js/cells/GIKCell.js b/js/cells/GIKCell.js
index 3fd43699f5ec06fa2f9a1340e65452821298e3f9..c5b0651946a1ba261d475aadd4f178e22b864478 100644
--- a/js/cells/GIKCell.js
+++ b/js/cells/GIKCell.js
@@ -41,8 +41,14 @@ define(['underscore', 'three', 'threeModel', 'lattice', 'appState', 'cubeCell'],
                 callback(parts);
             });
         } else if (lattice.get("partType") == "dnaStraight") {
-            require(['gikPartLowPoly'], function(PartSubclass){
-                parts.push(new PartSubclass(self.index.x, self));
+            require(['dnaStraightPart'], function(PartSubclass){
+                for (var i=0;i<16;i++){
+                    parts.push(new PartSubclass(self.index.x, self, {
+                        vertIndex: i,
+                        isBridge: false
+                    }));
+                }
+                parts.push(new PartSubclass(self.index.x, self, {isBridge: true}));
                 callback(parts);
             });
         }
diff --git a/js/main.js b/js/main.js
index f380e40a3f734bbf1ece96ac74a071b989dfc20b..895b59f9dfce9112cb9a561f23026cbe3181e904 100644
--- a/js/main.js
+++ b/js/main.js
@@ -108,6 +108,7 @@ require.config({
         kennyTeqHighResPart: 'parts/KennyTeqHighResPart',
         samTeqPart: 'parts/SamTeqPart',
         legoPart: 'parts/LegoPart',
+        dnaStraightPart: 'parts/DNAStraightPart',
 
         //materials
         materials: 'materials/DMAMaterials',
@@ -212,7 +213,8 @@ require.config({
         gikEndPartLowPolySTL: 'assets/stls/parts/GIKEndPartLowPoly.stl',
         kennyTeqPartSTL: 'assets/stls/parts/KennyTeqPart.stl',
         kennyTeqPartHighResSTL: 'assets/stls/parts/KennyTeqPartHighRes.stl',
-        samTeqPartSTL: 'assets/stls/parts/SamTeqPart.stl'
+        samTeqPartSTL: 'assets/stls/parts/SamTeqPart.stl',
+        legoBrickSTL: 'assets/stls/parts/legoBrick1x1.stl'
 
     },
 
diff --git a/js/parts/DMAPart.js b/js/parts/DMAPart.js
index 9efd36d3122b7e82c19b2beac0e99f54c5025250..ed351a788dced9ff8de84245276dfd0eee66019c 100644
--- a/js/parts/DMAPart.js
+++ b/js/parts/DMAPart.js
@@ -6,7 +6,7 @@
 
 define(['underscore', 'three'], function(_, THREE){
 
-    function DMAPart(index, parent) {
+    function DMAPart(index, parent, options) {
         this.parentCell  = parent;
         this.index = index;
         this.mesh = this._buildMesh();
diff --git a/js/parts/DNAStraightPart.js b/js/parts/DNAStraightPart.js
new file mode 100644
index 0000000000000000000000000000000000000000..80a8fbffc36c92132a5bc75679bad8603e543bc0
--- /dev/null
+++ b/js/parts/DNAStraightPart.js
@@ -0,0 +1,75 @@
+/**
+ * Created by aghassaei on 9/14/15.
+ */
+
+
+define(['underscore', 'stlLoader', 'gikPart'], function(_, THREE, GIKPart){
+
+    var zScale = 1/8;
+    var unitGeo = new THREE.BoxGeometry(0.2, 0.2, zScale);
+
+    var bridgeGeo = new THREE.BoxGeometry(0.3, 0.4, zScale);
+    var bridgeMaterial = new THREE.MeshLambertMaterial({color:'#000000'});
+
+    var nuclMaterials = {
+        a: new THREE.MeshLambertMaterial({color:"#cc00cc"}),
+        t: new THREE.MeshLambertMaterial({color:"#ff6600"}),
+        c: new THREE.MeshLambertMaterial({color:"#66ffff"}),
+        g: new THREE.MeshLambertMaterial({color:"#00ff33"})
+    };
+
+
+    function DNAStraightPart(index, parent, options){
+
+        this._isBridge = options.isBridge;
+        if (!this._isBridge){
+            this._vertIndex = options.vertIndex;
+            if (!options.nuclType) this._nuclType = this._randomNucleotide();
+            else this._nuclType = options.nuclType;
+        }
+
+
+        GIKPart.call(this, index, parent, options);
+    }
+    DNAStraightPart.prototype = Object.create(GIKPart.prototype);
+
+    DNAStraightPart.prototype._randomNucleotide = function(){
+        var rand = Math.random();
+        if (rand < 0.25) return 'a';
+        if (rand < 0.5) return 't';
+        if (rand < 0.75) return 'c';
+        return 'g';
+    };
+
+    DNAStraightPart.prototype._getGeometry = function(){
+        if (this._isBridge) return bridgeGeo;
+        return unitGeo;
+    };
+
+    DNAStraightPart.prototype.getMaterial = function(returnTHREEObject){
+        if (returnTHREEObject) {
+            if (this._isBridge) return bridgeMaterial;
+            return nuclMaterials[this._nuclType];
+        }
+        return GIKPart.prototype.getMaterial.call(this, returnTHREEObject);
+    };
+
+    DNAStraightPart.prototype._translatePart = function(mesh){
+        if (this._isBridge){
+            mesh.translateX(0.15+0.2);
+            mesh.translateZ(this.parentCell.zScale()/2-zScale/2);
+            return mesh;
+        }
+        var xOffset = 0.1;
+        var yOffset = -0.1;
+        if (this.index == 1) {
+            xOffset = -0.1;
+            yOffset = 0.1;
+        }
+        mesh.position.set(xOffset, yOffset, this.parentCell.zScale()/2-zScale/2-this._vertIndex*zScale);
+        return mesh;
+    };
+
+    return DNAStraightPart;
+
+});
\ No newline at end of file
diff --git a/js/parts/LegoPart.js b/js/parts/LegoPart.js
index 5519e8e582568b9de90644ae184325fb2edda325..040bb79a1f1cbc14ea55b2583737e433031ab619 100644
--- a/js/parts/LegoPart.js
+++ b/js/parts/LegoPart.js
@@ -3,7 +3,7 @@
  */
 
 
-define(['underscore', 'stlLoader', 'gikPart', 'bin!../assets/stls/parts/legoBrick1x1.stl'], function(_, THREE, GIKPart, stl){
+define(['underscore', 'stlLoader', 'gikPart', 'bin!legoBrickSTL'], function(_, THREE, GIKPart, stl){
 
     var loader = new THREE.STLLoader();
     var unitGeo = preProcessGeo(loader.parse(stl));
diff --git a/js/plists/PList.js b/js/plists/PList.js
index fee1cb42b910735e8787fe7d879ffb5007c34ce6..56f4b6793d522d0953471b07586452ed4e2f58cb 100644
--- a/js/plists/PList.js
+++ b/js/plists/PList.js
@@ -254,11 +254,11 @@ define(['three'], function(THREE){
                             dnaBricks: {
                                 name: "DNA Bricks",
                                 parts: {
-                                    dnaLego: {
-                                        name: "Lego Blocks"
-                                    },
                                     dnaStraight: {
                                         name: "DNA (straight chains)"
+                                    },
+                                    dnaLego: {
+                                        name: "Lego Blocks"
                                     }
                                 },
                                 aspectRatio: new THREE.Vector3(1,1,1),