diff --git a/modules/seq/base/pymod/export_sequence.cc b/modules/seq/base/pymod/export_sequence.cc
index 454245778ff6b6ca0b03dfa394d4830cb50e3394..87345ad2a597a038c36a75c9a877136f03822a96 100644
--- a/modules/seq/base/pymod/export_sequence.cc
+++ b/modules/seq/base/pymod/export_sequence.cc
@@ -208,6 +208,7 @@ void const_seq_handle_def(O& bp_class)
     .def("GetLength", &C::GetLength)
     .def("GetResidue", &C::GetResidue)
     .def("GetOneLetterCode", &C::GetOneLetterCode)
+    .def("__iter__", iterator<C>())
     .def("__getitem__", &C::GetOneLetterCode)
     .def("GetOffset", &C::GetOffset)
     .def("Copy", &C::Copy)
@@ -287,6 +288,9 @@ void export_sequence()
   class_<SeqListIter>("SeqListIter", no_init)
     .def("next", &SeqListIter::next)
   ;
+  to_python_converter<std::pair<mol::EntityView, mol::EntityView>, 
+                      PairToTupleConverter<mol::EntityView, mol::EntityView> >();
+  
   class_<AlignmentHandle>("AlignmentHandle", init<>())
     .def("GetCount", &AlignmentHandle::GetCount)
     .add_property("sequence_count", &AlignmentHandle::GetCount)
@@ -357,8 +361,7 @@ void export_sequence()
     .def("__getitem__", &do_slice_b)
   ;
   implicitly_convertible<SequenceList, ConstSequenceList>();
-  to_python_converter<std::pair<mol::EntityView, mol::EntityView>, 
-                      PairToTupleConverter<mol::EntityView, mol::EntityView> >();
+
   def("CreateSequenceList", &CreateSequenceList);
   def("SequenceFromChain", seq_from_chain_a);
   def("SequenceFromChain", seq_from_chain_b);
diff --git a/modules/seq/base/src/sequence_handle.cc b/modules/seq/base/src/sequence_handle.cc
index 6991a14f76b2988f814e5b5d04252cf7e6536699..3065ae9f06af335c97a88e35742368ddc775037a 100644
--- a/modules/seq/base/src/sequence_handle.cc
+++ b/modules/seq/base/src/sequence_handle.cc
@@ -58,6 +58,8 @@ char ConstSequenceHandle::operator[](int index) const
 }
 
 
+
+
 void ConstSequenceHandle::CheckValidity() const
 {
   if (!impl_) {
@@ -380,4 +382,11 @@ const GenericPropContainerImpl* SequenceHandle::GpImpl() const
 {
   return Impl().get();
 }
+
+char SequenceHandle::operator[](size_t index) const
+{
+  this->CheckValidity();
+  return this->GetString()[index];
+}
+
 }}
diff --git a/modules/seq/base/src/sequence_handle.hh b/modules/seq/base/src/sequence_handle.hh
index 8d370e59e58f85e82c5e6f4e4346ff4909842020..d6fb0ab3ea438b3655594f8863c78c676f28abc0 100644
--- a/modules/seq/base/src/sequence_handle.hh
+++ b/modules/seq/base/src/sequence_handle.hh
@@ -49,6 +49,9 @@ public:
   friend class AlignmentHandle;
   friend class ConstSequenceList;
   friend class SequenceList;
+  
+  typedef String::const_iterator iterator;
+  
   /// \brief create invalid sequence handle
   /// 
   /// \sa IsValid()
@@ -118,6 +121,8 @@ public:
   
   char operator[](int index) const;
   
+  iterator begin() const { return this->GetString().begin(); }
+  iterator end() const { return this->GetString().end(); }
   
   /// \brief whether the sequence is valid
   bool IsValid() const;
@@ -159,6 +164,7 @@ private:
 class DLLEXPORT_OST_SEQ SequenceHandle : 
   public GenericPropContainer<SequenceHandle> {
 public:
+  typedef String::const_iterator iterator;
   friend class GenericPropContainer<SequenceHandle>;  
   friend class SequenceList;
 
@@ -255,6 +261,12 @@ public:
   
   void SetOneLetterCode(int position, char new_char);
   
+
+  char operator[](size_t index) const;
+    
+  iterator begin() const { return this->GetString().begin(); }
+  iterator end() const { return this->GetString().end(); }
+  
   operator ConstSequenceHandle() const;
   /// \brief attach entity view to sequence
   ///
diff --git a/modules/seq/base/tests/test_seq.py b/modules/seq/base/tests/test_seq.py
index 80f13e364c07e3ba9665f34e62a462af79ae79ec..9ae40d5fc98cba9e64d15efe67dabd0978fc718b 100644
--- a/modules/seq/base/tests/test_seq.py
+++ b/modules/seq/base/tests/test_seq.py
@@ -30,7 +30,10 @@ class TestSeq(unittest.TestCase):
     string_b=''.join([r.one_letter_code for r in b.residues])
     self.assertEqual(string_a, 'ABCDFGH')
     self.assertEqual(string_b, 'ABCDFGH')
- 
+  def testSeqIterBZDNG148(self):
+    s=seq.CreateSequence('A', 'abcdef')
+    for x in s: 
+      pass
   def testViewsFromSequences_02(self):
     seq_a=seq.CreateSequence("A", "ABCD-FGH")
     seq_a.AttachView(self.ent.Select('rname=A,B,C,D,F,G,H'))