diff --git a/modules/mol/base/pymod/export_entity.cc b/modules/mol/base/pymod/export_entity.cc
index 6ae3727031bf27cd0ced5adcb638d20f0d7b83e2..c46f07284aab3eec978e25d4d87c265d39133939 100644
--- a/modules/mol/base/pymod/export_entity.cc
+++ b/modules/mol/base/pymod/export_entity.cc
@@ -45,11 +45,6 @@ typedef BondHandle (EntityHandle::*Connect2)(const AtomHandle&,
                                              Real, Real);
 
 typedef EntityView (EntityHandle::*QueryMethod)(const Query&, uint) const;
-QueryMethod select_query=&EntityHandle::Select;
-StringMethod select_string=&EntityHandle::Select;
-//Connect1 conn1=&EntityHandle::Connect;
-//Connect2 conn2=&EntityHandle::Connect;
-
 
 Real (EntityHandle::*get_angle1)(const AtomHandle&, const AtomHandle&, const AtomHandle&) const = &EntityHandle::GetAngle;
 Real (EntityHandle::*get_angle2)(const AtomView&, const AtomView&, const AtomView&) const = &EntityHandle::GetAngle;
@@ -127,10 +122,22 @@ void export_Entity()
     .add_property("valid", &EntityBase::IsValid)
   ;
   generic_prop_def<EntityBase>(ent_base);
+
+  EntityView (EntityHandle::*select1)(const Query&) const = &EntityHandle::Select;
+  EntityView (EntityHandle::*select2)(const Query&, QueryFlags) const = &EntityHandle::Select;
+  EntityView (EntityHandle::*select3)(const String&) const = &EntityHandle::Select;
+  EntityView (EntityHandle::*select4)(const String&, QueryFlags) const = &EntityHandle::Select;
   
   class_<EntityHandle, bases<EntityBase> >("EntityHandle", init<>())
-    .def("Select",select_query, (arg("query"), arg("flags")=0))
-    .def("Select",select_string, (arg("query"), arg("flags")=0))
+    .def("Select",select1)
+    .def("Select",select2)
+    .def("Select",select3)
+    .def("Select",select4)
+    .def("SetDefaultQueryFlags",&EntityHandle::SetDefaultQueryFlags)
+    .def("GetDefaultQueryFlags",&EntityHandle::GetDefaultQueryFlags)
+    .add_property("default_query_flags",
+                  &EntityHandle::GetDefaultQueryFlags,
+                  &EntityHandle::SetDefaultQueryFlags)
     .def("FindChain", &EntityHandle::FindChain)
     .def("FindResidue", &EntityHandle::FindResidue)
     .def("FindAtom", &EntityHandle::FindAtom)
diff --git a/modules/mol/base/src/entity_handle.cc b/modules/mol/base/src/entity_handle.cc
index b90c191613790f9c5867f51e928a561815e59d40..e975132ea84a50c5ea7fb76026cff894645b6920 100644
--- a/modules/mol/base/src/entity_handle.cc
+++ b/modules/mol/base/src/entity_handle.cc
@@ -115,13 +115,38 @@ AtomHandleList EntityHandle::FindWithin(const geom::Vec3& pos,
   return handles;
 }
 
+void EntityHandle::SetDefaultQueryFlags(QueryFlags flags)
+{
+  this->CheckValidity();
+  Impl()->SetDefaultQueryFlags(flags);
+}
+
+QueryFlags EntityHandle::GetDefaultQueryFlags() const
+{
+  this->CheckValidity();
+  return Impl()->GetDefaultQueryFlags();
+}
+
+EntityView EntityHandle::Select(const Query& q) const
+{
+  this->CheckValidity();
+  return Impl()->Select(*this, q);
+}
+
+EntityView EntityHandle::Select(const String& q) const
+{
+  this->CheckValidity();
+  return Impl()->Select(*this, Query(q));
+}
+
 EntityView EntityHandle::Select(const Query& q, QueryFlags flags) const
 {
   this->CheckValidity();
   return Impl()->Select(*this, q, flags);
 }
 
-EntityView EntityHandle::Select(const String& q, QueryFlags flags) const {
+EntityView EntityHandle::Select(const String& q, QueryFlags flags) const 
+{
   this->CheckValidity();
   return Impl()->Select(*this, Query(q), flags);
 }
diff --git a/modules/mol/base/src/entity_handle.hh b/modules/mol/base/src/entity_handle.hh
index fff9f6efc306b77df8ca9aa6f6b804f1480329c0..0fcadee77d9e68b69048b7c346d3d3c266919fd0 100644
--- a/modules/mol/base/src/entity_handle.hh
+++ b/modules/mol/base/src/entity_handle.hh
@@ -201,13 +201,31 @@ public:
   /// \brief use atom hash to perform fast within lookup
   AtomHandleList FindWithin(const geom::Vec3& pos, Real radius) const;
 
+  /// \brief set default query flags
+  /// these will be used if flags are not explicitely specified as
+  /// a second argument to a Select call
+  void SetDefaultQueryFlags(QueryFlags flags);
+
+  /// \brief return default query flags
+  QueryFlags GetDefaultQueryFlags() const;
+
   /// \brief return view based on a query object
   /// \sa Query
-  EntityView Select(const Query& q, QueryFlags flags=0) const;
+  /// The default query flags will be used for the selection
+  EntityView Select(const Query& q) const;
 
   /// \brief return view based on query String.
   /// \sa Query
-  EntityView Select(const String& query_string, QueryFlags flags=0) const;
+  /// The default query flags will be used for the selection
+  EntityView Select(const String& query_string) const;
+
+  /// \brief return view based on a query object, specifying behavior flags
+  /// \sa Query
+  EntityView Select(const Query& q, QueryFlags flags) const;
+
+  /// \brief return view based on query String, specifying behavior flags
+  /// \sa Query
+  EntityView Select(const String& query_string, QueryFlags flags) const;
 
   /// \brief return a (new) full view of this entity
   EntityView CreateFullView() const;
diff --git a/modules/mol/base/src/impl/entity_impl.cc b/modules/mol/base/src/impl/entity_impl.cc
index 1441af7cc3a079e5d08589951aff5e8f7be14e76..305e3423041abfb58252cf417a861ada5d77967b 100644
--- a/modules/mol/base/src/impl/entity_impl.cc
+++ b/modules/mol/base/src/impl/entity_impl.cc
@@ -77,7 +77,8 @@ EntityImpl::EntityImpl():
   ics_editor_count_(0),  
   dirty_flags_(DisableICS),
   name_(""),
-  next_index_(0L)
+  next_index_(0L),
+  default_query_flags_(0)
 {    
 }
 
@@ -986,6 +987,11 @@ EntityView EntityImpl::do_selection(const EntityHandle& eh,
   return view;
 }
 
+EntityView EntityImpl::Select(const EntityHandle& h, const Query& q) const
+{
+  return do_selection<false>(h, q, default_query_flags_);
+}
+
 EntityView EntityImpl::Select(const EntityHandle& h, const Query& q, 
                               QueryFlags flags) const
 {
diff --git a/modules/mol/base/src/impl/entity_impl.hh b/modules/mol/base/src/impl/entity_impl.hh
index 541aec54e7f590bd80abc433baca8564e5fe70fb..3c5000920c23a959ab631e62874d54df6cce6878 100644
--- a/modules/mol/base/src/impl/entity_impl.hh
+++ b/modules/mol/base/src/impl/entity_impl.hh
@@ -157,9 +157,15 @@ public:
   void UpdateOrganizer();
   
   AtomImplList FindWithin(const geom::Vec3& pos, Real radius) const;
+  // use query flag defaults
+  EntityView Select(const EntityHandle& h, const Query& q) const;
+  // override query flag defaults with given flags
   EntityView Select(const EntityHandle& h, const Query& q, 
                     QueryFlags flags) const;
   EntityView CreateFullView(const EntityHandle& h) const;
+  void SetDefaultQueryFlags(QueryFlags f) {default_query_flags_=f;}
+  QueryFlags GetDefaultQueryFlags() const {return default_query_flags_;}
+
 
   /// Get chain by name. Returns an invalid ChainImplPtr if no chain with the
   /// given name exists.
@@ -276,6 +282,8 @@ private:
 
   unsigned long next_index_;
 
+  QueryFlags default_query_flags_;
+
   template <bool always_true>
   EntityView do_selection(const EntityHandle&, const Query&, QueryFlags) const;
 };