diff --git a/modules/seq/base/pymod/__init__.py b/modules/seq/base/pymod/__init__.py
index 6b92feb561d921cbf76caba2939286e5b5ca2c9f..6a742908d60a4d4c49dc5f5e0da3480679c0de75 100644
--- a/modules/seq/base/pymod/__init__.py
+++ b/modules/seq/base/pymod/__init__.py
@@ -67,8 +67,8 @@ def ViewsFromSequences(seq_a, seq_b, ent_a=None, ent_b=None,
   #~ print seq_ent_a
   #~ print s1
 
-  #~ print seq_ent_a
-  #~ print s1
+  #~ print seq_ent_b
+  #~ print s2
   off_a = seq_ent_a.index(s1)
   off_b = seq_ent_b.index(s2)
 
@@ -84,32 +84,34 @@ def ViewsFromSequences(seq_a, seq_b, ent_a=None, ent_b=None,
   # iterate over residues
   while index_a<seq_a.GetLength() and index_b<seq_b.GetLength():
       # print 'index',index_a, seq_a.GetLength(), index_b, seq_b.GetLength()
-   while seq_a.GetOneLetterCode(index_a)=='-':
+    while seq_a.GetOneLetterCode(index_a)=='-':
      index_a+=1
      if seq_a.GetLength()<index_a:
        done=True
        break
-   while seq_b.GetOneLetterCode(index_b)=='-':
+    while seq_b.GetOneLetterCode(index_b)=='-':
      index_b+=1
      if seq_b.GetLength()<index_b:
        done=True
        break
-   if done or len(res_a)<=off_a+index_b or len(res_b)<=off_b+index_a:
+    if done or len(res_a)<=off_a+index_b or len(res_b)<=off_b+index_a:
      break
-   ra=res_a[off_a+index_b]
-   rb=res_b[off_b+index_a]
-   #ra = res_a[index_b]
-   #rb = res_a[index_a]
-   #~ print "set align_index %d for %s %s" % (align_index, ra, rb)
-   #ra.SetIntProp("align_index",align_index)
-   #rb.SetIntProp("align_index",align_index)
-   align_index += 1
-   ev_a.AddResidue(is_ha and ra or ra.handle, flags)
-   ev_b.AddResidue(is_hb and rb or rb.handle, flags)
-   index_a+=1
-   index_b+=1
-   eda=ev_a.handle.RequestXCSEditor()
-   eda.RenameChain(ent_a.chains[0].handle,ent_a.chains[0].name)
-   edb=ev_b.handle.RequestXCSEditor()
-   edb.RenameChain(ent_b.chains[0].handle, ent_b.chains[0].name)
+    ra=res_a[off_a+index_b]
+    rb=res_b[off_b+index_a]
+    #ra = res_a[index_b]
+    #rb = res_a[index_a]
+    #~ print "set align_index %d for %s %s" % (align_index, ra, rb)
+    #ra.SetIntProp("align_index",align_index)
+    #rb.SetIntProp("align_index",align_index)
+    align_index += 1
+    ev_a.AddResidue(is_ha and ra or ra.handle, flags)
+    ev_b.AddResidue(is_hb and rb or rb.handle, flags)
+    index_a+=1
+    index_b+=1
+  if (ent_a.chains[0].name!=ev_a.chains[0].name):
+    eda=ev_a.handle.RequestXCSEditor()
+    eda.RenameChain(ent_a.chains[0].handle,ent_a.chains[0].name)
+  if  (ent_b.chains[0].name!=ev_b.chains[0].name): 
+    edb=ev_b.handle.RequestXCSEditor()
+    edb.RenameChain(ent_b.chains[0].handle, ent_b.chains[0].name)
   return ev_a, ev_b
diff --git a/modules/seq/base/tests/CMakeLists.txt b/modules/seq/base/tests/CMakeLists.txt
index 62099af52d17e9f09fba08323a4e8b055f18a8be..528cb936ddae91eabe14d1b06c6aa743de7e29ac 100644
--- a/modules/seq/base/tests/CMakeLists.txt
+++ b/modules/seq/base/tests/CMakeLists.txt
@@ -1,4 +1,5 @@
 set(OST_SEQ_UNIT_TESTS
+  test_seq.py
   test_sequence.cc
   test_aligned_column.cc
   test_aligned_region.cc
diff --git a/modules/seq/base/tests/test_seq.py b/modules/seq/base/tests/test_seq.py
new file mode 100644
index 0000000000000000000000000000000000000000..db027f6d05eb6c483b905cae3e0c15f9184ea305
--- /dev/null
+++ b/modules/seq/base/tests/test_seq.py
@@ -0,0 +1,70 @@
+import unittest
+from ost import *
+from ost import settings
+from ost import seq
+
+class TestSeq(unittest.TestCase):
+  
+  def setUp(self):
+    self.protein = io.LoadEntity("testfiles/testprotein.pdb")
+    c=self.protein.chains[0]
+    self.seq_a=seq.SequenceFromChain('0',c) # MRLDGKTALITGSAR
+    self.seq_a.AttachView(self.protein.Select('aname==CA'))
+    self.seq_b=seq.CreateSequence('1','---DGKTALITGSAR')
+    self.seq_b.AttachView(self.protein.Select('aname==CA'))
+    self.seq_c=seq.CreateSequence('2','MRLDG---LITGSAR')
+    self.seq_c.AttachView(self.protein.Select('aname==CA'))
+    self.seq_d=seq.CreateSequence('3','MRLDG----ITGSAR')
+    self.seq_d.AttachView(self.protein.Select('aname==CA'))
+    self.seq_e=seq.CreateSequence('4','AMRLDG----ITGSA')
+    self.seq_e.AttachView(self.protein.Select('aname==CA'))
+    self.seq_e.SetSequenceOffset(1)
+    
+  def testViewsFromSequencesGapFrontSeqB(self):
+    #~ MRLDGKTALITGSAR
+    #~ ---DGKTALITGSAR
+    [a,b]=seq.ViewsFromSequences(self.seq_a,
+                                 self.seq_b,
+                                 self.seq_a.GetAttachedView(),
+                                 self.seq_b.GetAttachedView())
+
+
+    assert(a.atoms[0].GetResidue().GetOneLetterCode()=='D');
+    assert(b.atoms[0].GetResidue().GetOneLetterCode()=='D');
+                  #~ self.seq_b.GetResidue(j.GetResidue().GetIndex()).GetOneLetterCode());
+  
+  def testViewsFromSequencesGapMiddleBoth(self):
+    #~ MRLDG---LITGSAR
+    #~ MRLDG----ITGSAR
+    [a,b]=seq.ViewsFromSequences(self.seq_c,
+                                 self.seq_d,
+                                 self.seq_c.GetAttachedView(),
+                                 self.seq_d.GetAttachedView())
+
+    print 'aaa'+a.atoms[4].name+'aaaa'
+    assert(a.atoms[0].GetResidue().GetOneLetterCode()=='M');
+    assert(b.atoms[0].GetResidue().GetOneLetterCode()=='M');
+    assert(a.atoms[4].GetResidue().GetOneLetterCode()=='I');
+    assert(b.atoms[4].GetResidue().GetOneLetterCode()=='I');
+                  #~ self.seq_b.GetResidue(j.GetResidue().GetIndex()).GetOneLetterCode());
+                  
+  def testViewsFromSequencesGapSeqOffset(self):
+    #~ MRLDGKTALITGSAR
+    #~ AMRLDG----ITGSA
+    [a,b]=seq.ViewsFromSequences(self.seq_a,
+                                 self.seq_e,
+                                 self.seq_a.GetAttachedView(),
+                                 self.seq_e.GetAttachedView())
+
+
+    assert(a.atoms[0].GetResidue().GetOneLetterCode()=='M');
+    assert(b.atoms[0].GetResidue().GetOneLetterCode()=='M');
+    assert(a.atoms[5].GetResidue().GetOneLetterCode()=='I');
+    assert(b.atoms[5].GetResidue().GetOneLetterCode()=='I');
+                  #~ self.seq_b.GetResidue(j.GetResidue().GetIndex()).GetOneLetterCode());
+ 
+
+
+if __name__ == "__main__":
+  # test if python extension for seq module work
+  unittest.main()