diff --git a/modules/mol/alg/src/entity_to_density.cc b/modules/mol/alg/src/entity_to_density.cc
index 118653ccedcfefb53b66be9f1e420d3926ae1d5f..f138899aa20cc30afaf3e7ac10634296f3918aa8 100644
--- a/modules/mol/alg/src/entity_to_density.cc
+++ b/modules/mol/alg/src/entity_to_density.cc
@@ -126,18 +126,21 @@ public:
              (img::Point(-static_cast<int>(x_limit),-static_cast<int>(y_limit),0),
               img::Point(x_limit,y_limit,z_limit));
 
-    mol::AtomViewIter iterator_end = entity_view_.AtomsEnd();
-    for (mol::AtomViewIter iterator = entity_view_.AtomsBegin();
-           iterator!=iterator_end; ++iterator)
-    {
+
+    for (ChainViewList::const_iterator ci = entity_view_.GetChainList().begin(),
+        ce = entity_view_.GetChainList().end(); ci != ce; ++ci) {
+    for (ResidueViewList::const_iterator ri = ci->GetResidueList().begin(),
+          re = ci->GetResidueList().end(); ri != re; ++re) {
+    for (AtomViewList::const_iterator ai = ri->GetAtomList().begin(),
+          ae = ri->GetAtomList().end(); ai!= ae; ++ai) {
       AtomScatteringPropsTable::iterator table_iter =
                                              scatt_props_table_.begin();
       bool found = false;
       while (found != true && table_iter!=scatt_props_table_.end())
       {
-        if ( (*table_iter).element == (*iterator).GetElement())
+        if ( (*table_iter).element == (*ai).GetElement())
         {        
-          geom::Vec3 coord = (*iterator).GetPos();
+          geom::Vec3 coord = ai->GetPos();
 
           if (coord[0] >= map_start_[0] &&
               coord[0] <= map_end_[0] &&
@@ -199,7 +202,7 @@ public:
         }
         ++table_iter;
       }
-    }
+    }}} // loop over atoms
   }
 
   template <typename T, class D>
@@ -280,17 +283,20 @@ public:
     geom::Vec3 sampling = is.GetSampling().GetPixelSampling();
     img::Extent is_extent = is.GetExtent();
 
-    mol::AtomViewIter iterator_end = effective_entity_view.AtomsEnd();
-    for (mol::AtomViewIter iterator = effective_entity_view.AtomsBegin();
-         iterator!=iterator_end; ++iterator) {
+    for (ChainViewList::const_iterator ci = effective_entity_view.GetChainList().begin(),
+        ce = effective_entity_view.GetChainList().end(); ci != ce; ++ci) {
+    for (ResidueViewList::const_iterator ri = ci->GetResidueList().begin(),
+        re = ci->GetResidueList().end(); ri != re; ++re) {
+    for (AtomViewList::const_iterator ai = ri->GetAtomList().begin(),
+        ae = ri->GetAtomList().end(); ai!= ae; ++ai) {
       AtomScatteringPropsTable::iterator table_iter =
                                              scatt_props_table_.begin();
       bool found = false;
       while (found != true && table_iter!=scatt_props_table_.end()) {
-        if ((*table_iter).element == (*iterator).GetElement()) {
+        if ((*table_iter).element == ai->GetElement()) {
           found = true;
           Real a = (*table_iter).atomic_weight;
-          geom::Vec3 coord = (*iterator).GetPos();
+          geom::Vec3 coord = ai->GetPos();
           if (coord[0] >= map_start[0] &&
               coord[0] <= map_end[0] &&
               coord[1] >= map_start[1] &&
@@ -341,7 +347,7 @@ public:
         }
         ++table_iter;
       }
-    }
+    }}}
   }
 
   template <typename T, class D>