diff --git a/cadnano_segments.py b/cadnano_segments.py
index ba2199e9f75203e8d0ebabf4d91beaa824715f07..70dfbf46240e72adcbe76e14d394b517ce7c8080 100644
--- a/cadnano_segments.py
+++ b/cadnano_segments.py
@@ -306,8 +306,8 @@ class cadnano_part(SegmentModel):
 
                 print("Adding helix with length",numBps,zid1,zid2)
 
-                kwargs = dict(name="%d-%d" % (hid,len(helices[hid])),
-                              num_nts = numBps)
+                kwargs = dict(name="%d-%d" % (hid,len(helices[hid])))
+
 
                 posargs1 = dict( start_position = self._get_cadnano_position(hid,zid1),
                                  end_position   = self._get_cadnano_position(hid,zid2) )
@@ -316,10 +316,13 @@ class cadnano_part(SegmentModel):
                 
                 ## TODO get sequence from cadnano api
                 if zMid in strandOccupancies[0] and zMid in strandOccupancies[1]:
+                    kwargs['num_bp'] = numBps
                     seg = DoubleStrandedSegment(**kwargs,**posargs1)
                 elif zMid in strandOccupancies[0]:
+                    kwargs['num_nts'] = numBps
                     seg = SingleStrandedSegment(**kwargs,**posargs1)
                 elif zMid in strandOccupancies[1]:
+                    kwargs['num_nts'] = numBps
                     seg = SingleStrandedSegment(**kwargs,**posargs2)
                 else:
                     raise Exception("Segment could not be found")
diff --git a/polygon_mesh.py b/polygon_mesh.py
index 9caa8e5b371a8d2032565f295f6b7ff9299052f4..b4e5bff3b69cfd3ab7680ca15e5d7ea8d08a9686 100644
--- a/polygon_mesh.py
+++ b/polygon_mesh.py
@@ -284,7 +284,7 @@ def convert_maya_to_segments(helices):
         botPos = 0.5 * (bot.get_position() + bot.basepair.get_position())
         topPos = 0.5 * (top.get_position() + top.basepair.get_position())
 
-        segments[hn] =  DoubleStrandedSegment(hn, num_nts = len(z)//2,
+        segments[hn] =  DoubleStrandedSegment(hn, num_bp = len(z)//2,
                                               start_position = botPos,
                                               end_position = topPos)
         segmentsBot[hn] = bot
diff --git a/segmentmodel.py b/segmentmodel.py
index f59f7d91be9706c57ffba6effbb048ece260d831..7245600abea6cbb51ada40e94531a350bc4723d1 100644
--- a/segmentmodel.py
+++ b/segmentmodel.py
@@ -761,7 +761,7 @@ class DoubleStrandedSegment(Segment):
     """ Class that describes a segment of ssDNA. When built from
     cadnano models, should not span helices """
 
-    def __init__(self, name, num_nts, start_position = np.array((0,0,0)),
+    def __init__(self, name, num_bp, start_position = np.array((0,0,0)),
                  end_position = None, 
                  segment_model = None,
                  local_twist = False,
@@ -771,15 +771,16 @@ class DoubleStrandedSegment(Segment):
         
         self.helical_rise = 10.44
         self.distance_per_nt = 3.4
-        Segment.__init__(self, name, num_nts, 
+        Segment.__init__(self, name, num_bp,
                          start_position,
                          end_position, 
                          segment_model)
+        self.num_bp = self.num_nts
 
         self.local_twist = local_twist
         if num_turns is None:
-            num_turns = float(num_nts) / self.helical_rise
-        self.twist_per_nt = float(360 * num_turns) / num_nts
+            num_turns = float(num_bp) / self.helical_rise
+        self.twist_per_nt = float(360 * num_turns) / num_bp
 
         if start_orientation is None:
             start_orientation = np.eye(3) # np.array(((1,0,0),(0,1,0),(0,0,1)))
@@ -998,7 +999,7 @@ class SingleStrandedSegment(Segment):
 
     
 class StrandInSegment(Group):
-    """ Class that holds atomic model, maps to segment """
+    """ Represents a piece of an ssDNA strand within a segment """
     
     def __init__(self, segment, start, end, is_fwd):
         """ start/end should be provided expressed in nt coordinates, is_fwd tuples """
@@ -1013,8 +1014,6 @@ class StrandInSegment(Group):
         nts = np.abs(end-start)+1
         self.num_nts = int(round(nts))
         assert( np.isclose(self.num_nts,nts) )
-
-        # print(" Creating {}-nt StrandInSegment in {} from {} to {} {}".format(self.num_nts, segment.name, start, end, is_fwd))
     
     def _nucleotide_ids(self):
         nt0 = self.start # seg.contour_to_nt_pos(self.start)
@@ -1039,7 +1038,7 @@ class StrandInSegment(Group):
         return np.linspace(c0,c1,self.num_nts)
             
 class Strand(Group):
-    """ Class that holds atomic model, maps to segments """
+    """ Represents an entire ssDNA strand from 5' to 3' as it routes through segments """
     def __init__(self, segname = None):
         Group.__init__(self)
         self.num_nts = 0
diff --git a/segmentmodel_example.py b/segmentmodel_example.py
index fc9dfa4d1ae0f8691b4bbc49d78c843d32847be2..370df6a1a8ae8e882827770129d1c246b4f7dd8d 100644
--- a/segmentmodel_example.py
+++ b/segmentmodel_example.py
@@ -14,7 +14,7 @@ PATH=/home/cmaffeo2/anaconda3/bin:$PATH; source activate cadnano
 
 if __name__ == "__main__":
 
-    seg1 = DoubleStrandedSegment("strand", num_nts = 46)
+    seg1 = DoubleStrandedSegment("strand", num_bp = 46)
 
     seg2 = SingleStrandedSegment("strand", 
                                  start_position = seg1.end_position + np.array((5,0,5)),