diff --git a/modules/mol/base/src/impl/entity_impl.cc b/modules/mol/base/src/impl/entity_impl.cc
index 096db3ceeb0ce3552d82424bc82dfd5bce85914f..e17a5a76dbcd2b23047cd34df54ed6ac3a5dff61 100644
--- a/modules/mol/base/src/impl/entity_impl.cc
+++ b/modules/mol/base/src/impl/entity_impl.cc
@@ -227,6 +227,7 @@ void EntityImpl::DoCopy(EntityImplPtr dest)
 {
   // first copy the chain - residue - atom hierarchy before replicating the 
   // bond network and the torsions
+  dest->SetName(this->GetName());
   this->ReplicateHierarchy(dest);
   this->DoCopyBondsAndTorsions(dest);
 }
diff --git a/modules/mol/base/src/view_op.cc b/modules/mol/base/src/view_op.cc
index c186931a79ab8b2fca6df5a67ab8c494c71957d7..0526dd4cbeec4870e0a50b6b0a45584f0d0a4db7 100644
--- a/modules/mol/base/src/view_op.cc
+++ b/modules/mol/base/src/view_op.cc
@@ -398,6 +398,7 @@ EntityHandle CreateEntityFromView(const EntityView& view,
   if (!handle.IsValid()) {
     handle=CreateEntity();
   }
+  handle.SetName(view.GetName());
   Replicator replicator(handle.Impl(), view, include_exlusive_atoms);
   TorsionAdder adder(replicator, handle.Impl(), view);
   return handle;
diff --git a/modules/mol/base/tests/test_entity.cc b/modules/mol/base/tests/test_entity.cc
index bacd2f410c1d4e5fe3b83086d8bd86868d74a794..8deba9b01bad9b3a814daee98736ef1e8d0b465f 100644
--- a/modules/mol/base/tests/test_entity.cc
+++ b/modules/mol/base/tests/test_entity.cc
@@ -49,6 +49,8 @@ EntityHandle make_test_entity()
   ChainHandle chain = e.InsertChain("A");
   ResidueHandle res1 = e.AppendResidue(chain, "MET");
 
+  eh.SetName("TestEntity");
+
   e.InsertAtom(res1, "N",geom::Vec3(21.609,35.384,56.705));
   e.InsertAtom(res1, "CA",geom::Vec3(20.601,35.494,57.793));
   e.InsertAtom(res1, "C",geom::Vec3(19.654,34.300,57.789));
@@ -78,6 +80,9 @@ BOOST_AUTO_TEST_SUITE( mol_base )
 BOOST_AUTO_TEST_CASE(entity_creator) 
 {
   EntityHandle eh = CreateEntity();
+  eh.SetName("TestEntity");
+  BOOST_CHECK(eh.GetName()=="TestEntity");
+
   XCSEditor e=eh.RequestXCSEditor();
   ChainHandle chain = e.InsertChain("C");
   BOOST_CHECK(chain.GetName()=="C");
@@ -297,6 +302,8 @@ BOOST_AUTO_TEST_CASE(copy)
 {
   EntityHandle eh=make_test_entity();
   EntityHandle cp=eh.Copy();
+  BOOST_CHECK_EQUAL(cp.GetName(),eh.GetName());
+
   ResidueHandle x2=eh.FindResidue("A", mol::ResNum(2));
   BOOST_CHECK_EQUAL(cp.GetAtomCount(),eh.GetAtomCount());
   BOOST_CHECK_EQUAL(cp.GetResidueCount(),eh.GetResidueCount());
diff --git a/modules/mol/base/tests/test_view_op.cc b/modules/mol/base/tests/test_view_op.cc
index 6af7d87f3340fb38941fd927456d3892497cee0d..f589bf2107638956d21663a4db196044c020c610 100644
--- a/modules/mol/base/tests/test_view_op.cc
+++ b/modules/mol/base/tests/test_view_op.cc
@@ -30,6 +30,7 @@ using namespace ost::mol;
 EntityHandle mk_test_ent()
 {
   EntityHandle ent=CreateEntity();
+  ent.SetName("TestEntity");
   XCSEditor edi=ent.RequestXCSEditor();
   ChainHandle chain_a=edi.InsertChain("A");
   ResidueHandle res_a=edi.AppendResidue(chain_a, "A");
@@ -333,5 +334,18 @@ BOOST_AUTO_TEST_CASE(test_intersection_b)
                          bonds));
 }
 
+BOOST_AUTO_TEST_CASE(entity_from_view) {
+  EntityHandle ent=mk_test_ent();
+  EntityView v1=ent.Select("aname=B,C,F,G");
+  EntityHandle ent_fv=mol::CreateEntityFromView(v1, false);
+
+  BOOST_CHECK_EQUAL(ent.GetName(), ent_fv.GetName());
+  BOOST_CHECK_EQUAL(ent_fv.GetBondCount(),2);
+  BOOST_CHECK_EQUAL(ent_fv.GetAtomCount(), 4);
+  BOOST_CHECK_EQUAL(ent_fv.GetResidueCount(), 4);
+  BOOST_CHECK_EQUAL(ent_fv.GetChainCount(), 2);
+
+}
+
 BOOST_AUTO_TEST_SUITE_END()