diff --git a/modules/conop/src/amino_acids.hh b/modules/conop/src/amino_acids.hh
index 85aef04878cb3f59f8a7f026a13dbc3cd327c39a..376dd0fba0c2958ec7e5600936d5289943c12b3e 100644
--- a/modules/conop/src/amino_acids.hh
+++ b/modules/conop/src/amino_acids.hh
@@ -58,8 +58,13 @@ char DLLEXPORT_OST_CONOP ResidueNameToOneLetterCode(String rn);
 
 AminoAcid DLLEXPORT_OST_CONOP ResidueNameToAminoAcid(String rn);
 
-class AminoAcidSetIterator : public std::iterator<std::forward_iterator_tag,
-                                                  AminoAcid> {
+class AminoAcidSetIterator {
+  using iterator_category = std::forward_iterator_tag;
+  using value_type = AminoAcid;
+  using difference_type = std::ptrdiff_t;
+  using pointer = AminoAcid*;
+  using reference = AminoAcid&;
+
 public:
   AminoAcidSetIterator(unsigned int bits, int start):
     bits_(bits), curr_(start)
diff --git a/modules/geom/src/circular_iterator.hh b/modules/geom/src/circular_iterator.hh
index 58d47ab462e3b2eb6cd0e5c2af0e18552659eb4e..059a51282b797c47ac9c76702d072fe60719b0e0 100644
--- a/modules/geom/src/circular_iterator.hh
+++ b/modules/geom/src/circular_iterator.hh
@@ -19,13 +19,15 @@
 #ifndef CIRCULAR_ITERATOR_HH
 #define CIRCULAR_ITERATOR_HH
 
-#include <iterator>
-
 template<typename T>
-class const_circular_iter : public std::iterator<std::bidirectional_iterator_tag,typename T::value_type>  
+class const_circular_iter
 {
-typedef typename T::const_iterator iterator;
-typedef typename T::value_type value_type;
+    using iterator = typename T::const_iterator;
+    using iterator_category = std::bidirectional_iterator_tag;
+    using value_type = typename T::value_type;
+    using difference_type = std::ptrdiff_t;
+    using pointer = value_type*;
+    using reference = value_type&;
 protected:
         iterator iter;
         iterator begin;
@@ -97,10 +99,15 @@ public:
 
 
 template<typename T>
-class circular_iter : public std::iterator<std::bidirectional_iterator_tag,typename T::value_type>  
+class circular_iter
 {
-typedef typename T::iterator iterator;
-typedef typename T::value_type value_type;
+    using iterator = typename T::iterator;
+    using iterator_category = std::bidirectional_iterator_tag;
+    using value_type = typename T::value_type;
+    using difference_type = std::ptrdiff_t;
+    using pointer = value_type*;
+    using reference = value_type&;
+
 private:
         iterator     iter;
         iterator     begin;
diff --git a/modules/mol/base/src/impl/pointer_iterator.hh b/modules/mol/base/src/impl/pointer_iterator.hh
index b8c679df84ae1c11d5a1d38375fe8f385bbde2ba..098cb2270174946327e8fca35fa14905ad00c686 100644
--- a/modules/mol/base/src/impl/pointer_iterator.hh
+++ b/modules/mol/base/src/impl/pointer_iterator.hh
@@ -24,7 +24,14 @@
 namespace ost { namespace mol { namespace impl {
 
 template <typename T>
-class pointer_it :  public std::iterator<std::forward_iterator_tag, T>{
+class pointer_it {
+
+  using iterator_category = std::forward_iterator_tag;
+  using value_type = T;
+  using difference_type = std::ptrdiff_t;
+  using pointer = T*;
+  using reference = T&;
+
 public:
   pointer_it(T* s): s_(s) { }
   
diff --git a/modules/seq/base/src/aligned_column_iterator.hh b/modules/seq/base/src/aligned_column_iterator.hh
index 72fba01a8a56b7ba2d52e36ee876abc3ce9fef9a..91dd301e41bd6d8711ef0c6095cce25b1dc644ae 100644
--- a/modules/seq/base/src/aligned_column_iterator.hh
+++ b/modules/seq/base/src/aligned_column_iterator.hh
@@ -26,8 +26,14 @@
  */
 namespace ost { namespace seq {
 
-class AlignedColumnIterator : public std::iterator<std::forward_iterator_tag,
-                                                   AlignedColumn> {
+class AlignedColumnIterator {
+
+  using iterator_category = std::forward_iterator_tag;
+  using value_type = AlignedColumn;
+  using difference_type = std::ptrdiff_t;
+  using pointer = AlignedColumn*;
+  using reference = AlignedColumn&;
+
 private:
   void UpdateVal()
   {
diff --git a/modules/seq/base/src/impl/sequence_list_iterator.hh b/modules/seq/base/src/impl/sequence_list_iterator.hh
index c798e92ab20fa8425fde0e643d717be95f7ad674..72b819a197c0995e140649e43d2cf310050e61d0 100644
--- a/modules/seq/base/src/impl/sequence_list_iterator.hh
+++ b/modules/seq/base/src/impl/sequence_list_iterator.hh
@@ -28,12 +28,18 @@ namespace ost { namespace seq { namespace impl {
 
 /// \internal
 template <typename T, typename I>
-class TEMPLATE_EXPORT SequenceListIterator 
-  : public std::iterator<std::random_access_iterator_tag, T>{
+class TEMPLATE_EXPORT SequenceListIterator {
 public:
-  typedef T ValueType;
-  typedef I IteratorType;
-  typedef SequenceListIterator<T, I> ClassType;
+  using ValueType = T;
+  using IteratorType = I;
+  using ClassType = SequenceListIterator<T, I>;
+
+  using iterator_category = std::random_access_iterator_tag;
+  using value_type = T; // duplicate
+  using difference_type = std::ptrdiff_t;
+  using pointer = T*;
+  using reference = T&;
+
 protected:
   void UpdateVal()
   {