diff --git a/modules/mol/base/src/atom_base.cc b/modules/mol/base/src/atom_base.cc
index c0e1f94b22fa4f81fc5c05bd118fc1450ff78b3f..95141733ff27a4ab798e67d9aa814b1d7201aa58 100644
--- a/modules/mol/base/src/atom_base.cc
+++ b/modules/mol/base/src/atom_base.cc
@@ -126,10 +126,13 @@ long AtomBase::GetHashCode() const
   return reinterpret_cast<long>(Impl().get());
 }
 
-std::ostream& operator<<(std::ostream& os, 
-                         const AtomBase& atom) 
+std::ostream& operator<<(std::ostream& os, const AtomBase& atom) 
 {
-  os << atom.GetQualifiedName();
+  if (atom.IsValid()) {
+    os << atom.GetQualifiedName();
+  } else {
+    os << "invalid atom";
+  }
   return os;
 }
 
diff --git a/modules/mol/base/src/chain_base.cc b/modules/mol/base/src/chain_base.cc
index 53385715c8b98b0d5161eaf4afd5376570eff509..29a40f3a2b1801309432c409a546b79c40b9e0df 100644
--- a/modules/mol/base/src/chain_base.cc
+++ b/modules/mol/base/src/chain_base.cc
@@ -49,7 +49,7 @@ ChainBase::operator bool() const {
 }
 
 bool ChainBase::IsValid() const {
-  return impl_;
+  return impl_.get()!=0;
 }
 
 void ChainBase::CheckValidity() const {
@@ -57,9 +57,13 @@ void ChainBase::CheckValidity() const {
     throw InvalidHandle();
 }
 
-DLLEXPORT_OST_MOL std::ostream& operator<<(std::ostream& os, 
-                                            const ChainBase& chain) {
-  os << chain.GetName();                                              
+std::ostream& operator<<(std::ostream& os, const ChainBase& chain) 
+{
+  if (chain.IsValid()) {
+    os << chain.GetName();
+  } else {
+    os << "invalid chain";
+  }
   return os;
 }
 
diff --git a/modules/mol/base/src/entity_base.cc b/modules/mol/base/src/entity_base.cc
index 546db3743c7ff3c8636687784639e5c3d07fd6af..df3fc636ebcec737de5f4f0d28ff73a323da3806 100644
--- a/modules/mol/base/src/entity_base.cc
+++ b/modules/mol/base/src/entity_base.cc
@@ -47,11 +47,11 @@ const GenericPropertyContainerImpl* EntityBase::GpImpl() const
 }
 
 bool EntityBase::IsValid() const {
-  return Impl();
+  return impl_.get()!=0;
 }
 
 EntityBase::operator bool() const {
-  return impl_;
+  return impl_.get()!=0;
 }
 
 void EntityBase::CheckValidity() const {
@@ -69,9 +69,14 @@ void EntityBase::SetName(const String& ent_name) {
   impl_->SetName(ent_name);
 }
 
-DLLEXPORT_OST_MOL std::ostream& operator<<(std::ostream& os, 
-                                            const EntityBase& ent) {
+DLLEXPORT_OST_MOL std::ostream& operator<<(std::ostream& os,   
+                                           const EntityBase& ent) {
+  if (ent.IsValid()) {
     os << "entity";
+  } else {
+    os << "invalid";
+  }
+
   return os;
 }
 }} //ns
diff --git a/modules/mol/base/src/residue_base.cc b/modules/mol/base/src/residue_base.cc
index e53801668e53d7f4b6745669369589a5f037b1a6..60e684806ef8b5cb34ac5a1b89a39d111977eefd 100644
--- a/modules/mol/base/src/residue_base.cc
+++ b/modules/mol/base/src/residue_base.cc
@@ -70,7 +70,7 @@ ResidueBase::operator bool() const {
 }
 
 bool ResidueBase::IsValid() const {
-  return impl_;
+  return impl_.get()!=0;
 }
 
 bool ResidueBase::IsPeptideLinking() const 
@@ -141,9 +141,12 @@ void ResidueBase::CheckValidity() const
     throw InvalidHandle();
 }
 
-DLLEXPORT_OST_MOL std::ostream& operator<<(std::ostream& os, 
-                                            const ResidueBase& residue) {
-   os << residue.GetQualifiedName();  
+std::ostream& operator<<(std::ostream& os, const ResidueBase& residue) {
+  if (residue.IsValid()) {
+    os << residue.GetQualifiedName();
+  } else {
+    os << "invalid residue"; 
+  }
    return os;                                                                              
 }
 
diff --git a/modules/seq/base/src/sequence_handle.cc b/modules/seq/base/src/sequence_handle.cc
index 903b4edd4cca8324496879c8998f17d0e4c0a035..d24fff1ae4cf4543f7b5bbe81e1e1505e833f4c9 100644
--- a/modules/seq/base/src/sequence_handle.cc
+++ b/modules/seq/base/src/sequence_handle.cc
@@ -219,7 +219,12 @@ SequenceHandle SequenceFromInfo(info::InfoGroup& group)
 
 std::ostream& operator<<(std::ostream& os, const ConstSequenceHandle& sequence)
 {
-  os << sequence.GetName() << ": " << sequence.GetString();
+  if (sequence.IsValid()) {
+    os << sequence.GetName() << ": " << sequence.GetString();    
+  } else {
+    os << "invalid";
+  }
+
   return os;
 }