diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1556db88df8bdf325814e429c9b86e07f914fa09..7f557d7d22d17d8e841de60b0c5c7d4912385f48 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -152,7 +152,7 @@ add_definitions(-DEIGEN2_SUPPORT)
 if (COMPOUND_LIB)
   set(_COMP_LIB "${COMPOUND_LIB}")
   if (NOT IS_ABSOLUTE "${COMPOUND_LIB}")
-    set(COMPOUND_LIB "${CMAKE_CURRENT_SOURCE_DIR}/${COMPOUND_LIB}")
+    set(COMPOUND_LIB "${CMAKE_CURRENT_BINARY_DIR}/${COMPOUND_LIB}")
   endif()
 else()
   set(_COMP_LIB "NONE")
diff --git a/modules/gfx/src/gradient.cc b/modules/gfx/src/gradient.cc
index c65261b16a60eb2deac7ecfcf41def8be63239f5..f1c93ffbbbfa7ff799073a49a3da5210fc688eb7 100644
--- a/modules/gfx/src/gradient.cc
+++ b/modules/gfx/src/gradient.cc
@@ -70,7 +70,7 @@ Color Gradient::GetColorAt(float t) const
   }
   
   uint c=0;
-  while (t>=stops_[c].t && c<stops_.size()) {
+  while (c<stops_.size() && t>=stops_[c].t) {
     ++c;
   }
   if (c==0) {
diff --git a/modules/mol/base/src/impl/entity_impl.cc b/modules/mol/base/src/impl/entity_impl.cc
index 4b4cb3a7a1331b60d1295f0069a782b496503b72..1fd465f235f4d05f7d29d727b4b423dc6a69d277 100644
--- a/modules/mol/base/src/impl/entity_impl.cc
+++ b/modules/mol/base/src/impl/entity_impl.cc
@@ -145,20 +145,7 @@ void EntityImpl::ReplicateHierarchy(EntityImplPtr dest)
   for (ChainImplList::const_iterator i=chain_list_.begin(), 
        e1=chain_list_.end(); i!=e1; ++i) {
     ChainImplPtr src_chain=*i;
-    ChainImplPtr dst_chain=dest->InsertChain(src_chain,false);
-    // copy generic properties
-    dst_chain->Assign(*src_chain.get());
-    for (ResidueImplList::iterator j=src_chain->GetResidueList().begin(),
-         e2=src_chain->GetResidueList().end(); j!=e2; ++j) {
-      ResidueImplPtr src_res=*j;
-      ResidueImplPtr dst_res=dst_chain->AppendResidue(src_res, false);
-      for (AtomImplList::iterator k=src_res->GetAtomList().begin(),
-           e3=src_res->GetAtomList().end(); k!=e3; ++k) {
-        AtomImplPtr src_atom=*k;
-        AtomImplPtr dst_atom=dst_res->InsertAtom(src_atom);
-        dst_atom->SetIndex(src_atom->GetIndex());
-      }
-    }
+    dest->InsertChain(src_chain,true);
   }
 }
 
diff --git a/modules/mol/base/src/impl/residue_impl.cc b/modules/mol/base/src/impl/residue_impl.cc
index fd2c7762b3193caafa68d2b86af177243ceafe5d..29fee9883e5a8381eac4c12d3d75a194f007de44 100644
--- a/modules/mol/base/src/impl/residue_impl.cc
+++ b/modules/mol/base/src/impl/residue_impl.cc
@@ -69,7 +69,8 @@ AtomImplPtr ResidueImpl::InsertAtom(const AtomImplPtr& atom)
   dst_atom->SetState(atom->GetState());
   dst_atom->SetBFactor(atom->GetBFactor());
   dst_atom->SetOccupancy(atom->GetOccupancy());
-  dst_atom->SetHetAtom(atom->IsHetAtom());  
+  dst_atom->SetHetAtom(atom->IsHetAtom());
+  dst_atom->SetIndex(atom->GetIndex());
 
   if (!atom->HasDefaultProps()) {
     dst_atom->SetRadius(atom->GetRadius());