From 18cc2c6cd4901a6d3bc88e09b480a8d0a4b598f3 Mon Sep 17 00:00:00 2001
From: Marco Biasini <marco.biasini@unibas.ch>
Date: Fri, 25 Feb 2011 19:27:50 +0100
Subject: [PATCH] reduce number of includes

---
 modules/conop/src/ring_finder.cc              |  2 ++
 modules/conop/src/ring_finder.hh              |  3 ++-
 modules/gfx/src/impl/backbone_trace.hh        |  2 +-
 modules/gfx/src/impl/entity_detail.cc         |  1 +
 modules/gfx/src/impl/entity_detail.hh         |  4 ++--
 modules/gfx/src/impl/mapped_property.hh       |  2 +-
 modules/gfx/src/prim_list.cc                  |  2 ++
 modules/gfx/src/scene.hh                      |  2 +-
 modules/gfx/src/surface.hh                    |  1 -
 modules/gui/src/gl_canvas.hh                  |  4 ----
 modules/gui/src/scene_menu.hh                 |  2 +-
 modules/io/src/io_manager.hh                  |  1 -
 modules/io/src/mol/chemdict_parser.hh         |  2 +-
 modules/io/src/mol/entity_io_crd_handler.hh   |  5 +++++
 modules/io/src/mol/entity_io_handler.hh       | 12 ++++++++++--
 modules/io/src/mol/entity_io_mae_handler.hh   |  4 ++++
 modules/io/src/mol/load_entity.cc             |  2 +-
 modules/io/src/mol/load_entity.hh             |  2 +-
 modules/io/src/mol/pdb_reader.hh              |  7 ++++++-
 modules/io/src/mol/pdb_writer.cc              |  5 ++++-
 modules/io/src/mol/pdb_writer.hh              | 13 ++++++++++---
 modules/io/src/mol/save_entity.cc             |  5 ++++-
 modules/io/src/mol/save_entity.hh             | 12 ++++++++++--
 modules/io/src/mol/sdf_reader.cc              |  2 +-
 modules/io/src/mol/sdf_reader.hh              |  3 ++-
 modules/io/src/mol/sdf_writer.cc              |  5 +++++
 modules/io/src/mol/sdf_writer.hh              |  2 +-
 modules/mol/alg/pymod/export_svd_superpose.cc |  9 +++++++--
 modules/mol/alg/src/svd_superpose.cc          |  3 ++-
 modules/mol/alg/src/svd_superpose.hh          |  8 ++++++--
 modules/mol/alg/tests/test_superposition.cc   |  3 +--
 modules/mol/base/src/atom_base.hh             |  3 ++-
 modules/mol/base/src/atom_view.cc             |  1 +
 modules/mol/base/src/bond_table.hh            |  2 ++
 modules/mol/base/src/bounding_box.hh          |  3 +++
 modules/mol/base/src/chain_view.cc            |  3 ++-
 modules/mol/base/src/entity_handle.cc         |  2 ++
 modules/mol/base/src/entity_visitor.hh        | 15 +++++----------
 modules/mol/base/src/impl/atom_impl.cc        |  2 +-
 modules/mol/base/src/impl/chain_impl.cc       |  2 +-
 modules/mol/base/src/impl/connector_impl.cc   |  2 +-
 modules/mol/base/src/impl/residue_impl.cc     |  2 +-
 modules/mol/base/src/impl/torsion_impl.cc     |  2 ++
 modules/mol/base/src/residue_handle.cc        |  2 +-
 modules/mol/base/src/residue_view.cc          |  1 +
 modules/mol/base/src/xcs_editor.cc            |  5 ++++-
 modules/qa/src/clash_score.cc                 |  5 +++--
 modules/qa/src/impl/reduced_impl.cc           |  4 +++-
 modules/qa/src/impl/reduced_impl.hh           |  5 +++--
 modules/qa/src/interaction_statistics.cc      |  4 ++--
 modules/qa/src/packing_potential.cc           |  1 +
 modules/qa/src/packing_statistics.cc          |  4 +++-
 52 files changed, 138 insertions(+), 62 deletions(-)

diff --git a/modules/conop/src/ring_finder.cc b/modules/conop/src/ring_finder.cc
index 96f0c5378..04351f1d4 100755
--- a/modules/conop/src/ring_finder.cc
+++ b/modules/conop/src/ring_finder.cc
@@ -16,6 +16,8 @@
 // along with this library; if not, write to the Free Software Foundation, Inc.,
 // 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 //------------------------------------------------------------------------------
+#include <ost/mol/mol.hh>
+
 #include "ring_finder.hh"
 
 namespace ost { namespace conop {
diff --git a/modules/conop/src/ring_finder.hh b/modules/conop/src/ring_finder.hh
index 599dfadf9..e617e85c1 100755
--- a/modules/conop/src/ring_finder.hh
+++ b/modules/conop/src/ring_finder.hh
@@ -24,7 +24,8 @@
  */
 
 #include <ost/conop/module_config.hh>
-#include <ost/mol/mol.hh>
+#include <ost/mol/entity_handle.hh>
+#include <ost/mol/entity_view.hh>
 #include <map>
 
 namespace ost { namespace conop {
diff --git a/modules/gfx/src/impl/backbone_trace.hh b/modules/gfx/src/impl/backbone_trace.hh
index 1e0c6c1c7..2dfd97e4c 100644
--- a/modules/gfx/src/impl/backbone_trace.hh
+++ b/modules/gfx/src/impl/backbone_trace.hh
@@ -23,7 +23,7 @@
   Authors: Ansgar Philippsen, Marco Biasini
  */
 
-#include <ost/mol/mol.hh>
+#include <ost/mol/entity_view.hh>
 
 #include <ost/gfx/module_config.hh>
 #include <ost/gfx/impl/entity_detail.hh>
diff --git a/modules/gfx/src/impl/entity_detail.cc b/modules/gfx/src/impl/entity_detail.cc
index 252da9743..3069077f4 100644
--- a/modules/gfx/src/impl/entity_detail.cc
+++ b/modules/gfx/src/impl/entity_detail.cc
@@ -17,6 +17,7 @@
 // 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 //------------------------------------------------------------------------------
 
+#include <ost/mol/atom_view.hh>
 #include <ost/gfx/gl_helper.hh>
 #include <ost/gfx/scene.hh>
 #include <ost/gfx/color.hh>
diff --git a/modules/gfx/src/impl/entity_detail.hh b/modules/gfx/src/impl/entity_detail.hh
index 4fc64525b..5905d6b87 100644
--- a/modules/gfx/src/impl/entity_detail.hh
+++ b/modules/gfx/src/impl/entity_detail.hh
@@ -26,8 +26,8 @@
 
 #include <ost/geom/geom.hh>
 
-#include <ost/mol/mol.hh>
-#include <ost/mol/entity_view.hh>
+#include <ost/mol/atom_handle.hh>
+#include <ost/mol/bond_handle.hh>
 #include <ost/mol/query.hh>
 
 #include <ost/gfx/module_config.hh>
diff --git a/modules/gfx/src/impl/mapped_property.hh b/modules/gfx/src/impl/mapped_property.hh
index 8ea37e670..096e77566 100644
--- a/modules/gfx/src/impl/mapped_property.hh
+++ b/modules/gfx/src/impl/mapped_property.hh
@@ -23,7 +23,7 @@
   Author: Marco Biasini
  */
 
-#include <ost/mol/mol.hh>
+#include <ost/mol/entity_view.hh>
 #if OST_IMG_ENABLED
 #include <ost/img/map.hh>
 #endif
diff --git a/modules/gfx/src/prim_list.cc b/modules/gfx/src/prim_list.cc
index 0d1b288fb..5486ccaed 100644
--- a/modules/gfx/src/prim_list.cc
+++ b/modules/gfx/src/prim_list.cc
@@ -20,6 +20,8 @@
   Author: Ansgar Philippsen
 */
 
+#include <ost/mol/atom_handle.hh>
+
 #include "scene.hh"
 
 #include "prim_list.hh"
diff --git a/modules/gfx/src/scene.hh b/modules/gfx/src/scene.hh
index bad00b954..a7a773a71 100644
--- a/modules/gfx/src/scene.hh
+++ b/modules/gfx/src/scene.hh
@@ -31,13 +31,13 @@
 
 #include <ost/gfx/module_config.hh>
 #include <ost/mol/transform.hh>
+#include <ost/mol/atom_handle.hh>
 
 #include "gl_include.hh"
 #include "color.hh"
 #include "gfx_object_fw.hh"
 #include "gfx_node_fw.hh"
 #include "gfx_node_visitor.hh"
-#include "selection.hh"
 #include "glwin_base.hh"
 #include "scene_observer.hh"
 #include "gfx_prim.hh"
diff --git a/modules/gfx/src/surface.hh b/modules/gfx/src/surface.hh
index b3bea4b53..bb1f4492b 100644
--- a/modules/gfx/src/surface.hh
+++ b/modules/gfx/src/surface.hh
@@ -29,7 +29,6 @@
 
 #include <ost/config.hh>
 #include <ost/mol/surface.hh>
-#include <ost/mol/mol.hh>
 #include "gfx_object.hh"
 #include "vertex_array.hh"
 
diff --git a/modules/gui/src/gl_canvas.hh b/modules/gui/src/gl_canvas.hh
index d33b41151..ad84d2b5c 100644
--- a/modules/gui/src/gl_canvas.hh
+++ b/modules/gui/src/gl_canvas.hh
@@ -20,10 +20,6 @@
 #define OST_GUI_GL_CANVAS_HH
 
 
-// must come before QGLWidget
-#include <ost/mol/mol.hh>
-
-
 // Qt includes must come last
 #include <QGLWidget>
 #include <QTime>
diff --git a/modules/gui/src/scene_menu.hh b/modules/gui/src/scene_menu.hh
index 5c009cba6..68fc6421f 100644
--- a/modules/gui/src/scene_menu.hh
+++ b/modules/gui/src/scene_menu.hh
@@ -20,7 +20,7 @@
 #define OST_GUI_SCENE_MENU_HH
 
 
-#include <ost/mol/mol.hh>
+#include <ost/mol/atom_handle.hh>
 #include <ost/gfx/gfx_object_fw.hh>
 
 #include <QObject>
diff --git a/modules/io/src/io_manager.hh b/modules/io/src/io_manager.hh
index a0ef542b2..bfebe32bd 100644
--- a/modules/io/src/io_manager.hh
+++ b/modules/io/src/io_manager.hh
@@ -23,7 +23,6 @@
 
 #include <ost/config.hh>
 #include <ost/io/module_config.hh>
-#include <ost/mol/mol.hh>
 
 #include <ost/io/mol/entity_io_handler.hh>
 #include <ost/io/seq/sequence_io_handler.hh>
diff --git a/modules/io/src/mol/chemdict_parser.hh b/modules/io/src/mol/chemdict_parser.hh
index 9f36c693c..4df2f4e2d 100644
--- a/modules/io/src/mol/chemdict_parser.hh
+++ b/modules/io/src/mol/chemdict_parser.hh
@@ -24,7 +24,7 @@
  */
  
  
-#include <ost/mol/mol.hh>
+#include <ost/mol/chem_class.hh>
 #include <ost/io/mol/star_parser.hh>
 #include <ost/conop/compound_lib.hh>
  
diff --git a/modules/io/src/mol/entity_io_crd_handler.hh b/modules/io/src/mol/entity_io_crd_handler.hh
index d8758545d..714a1d401 100644
--- a/modules/io/src/mol/entity_io_crd_handler.hh
+++ b/modules/io/src/mol/entity_io_crd_handler.hh
@@ -23,6 +23,11 @@
   CHARMM coordinate file import
   Author: Ansgar Philippsen
  */
+ 
+#include <ost/mol/entity_handle.hh>
+#include <ost/mol/chain_handle.hh>
+#include <ost/mol/residue_handle.hh>
+#include <ost/mol/entity_visitor.hh>
 #include <ost/io/mol/entity_io_handler.hh>
 
 #include <boost/iostreams/filtering_stream.hpp>
diff --git a/modules/io/src/mol/entity_io_handler.hh b/modules/io/src/mol/entity_io_handler.hh
index 903c8f705..c65137e18 100644
--- a/modules/io/src/mol/entity_io_handler.hh
+++ b/modules/io/src/mol/entity_io_handler.hh
@@ -25,9 +25,17 @@
 
 #include <ost/io/module_config.hh>
 #include <ost/io/io_utils.hh>
-#include <ost/mol/mol.hh>
 
-namespace ost { namespace io {
+namespace ost { 
+  
+namespace mol {
+
+class EntityView;
+class EntityHandle;
+
+}
+
+namespace io {
 
 //! pure abstract base class for entity io handlers
 class DLLEXPORT_OST_IO EntityIOHandler {
diff --git a/modules/io/src/mol/entity_io_mae_handler.hh b/modules/io/src/mol/entity_io_mae_handler.hh
index 4921b9daf..5b06f96bf 100644
--- a/modules/io/src/mol/entity_io_mae_handler.hh
+++ b/modules/io/src/mol/entity_io_mae_handler.hh
@@ -19,6 +19,10 @@
 #ifndef OST_IO_ENTITY_IO_PLUGIN_MAE_H
 #define OST_IO_ENTITY_IO_PLUGIN_MAE_H
 
+
+#include <ost/mol/entity_handle.hh>
+#include <ost/mol/chain_handle.hh>
+#include <ost/mol/residue_handle.hh>
 #include <ost/io/mol/entity_io_handler.hh>
 
 #include <boost/iostreams/filtering_stream.hpp>
diff --git a/modules/io/src/mol/load_entity.cc b/modules/io/src/mol/load_entity.cc
index d760d7727..6fdfa5757 100644
--- a/modules/io/src/mol/load_entity.cc
+++ b/modules/io/src/mol/load_entity.cc
@@ -20,7 +20,7 @@
 #include <ost/conop/conop.hh>
 
 #include "load_entity.hh"
-
+#include <ost/mol/xcs_editor.hh>
 #include <ost/io/io_manager.hh>
 #include <ost/io/mol/entity_io_handler.hh>
 #include <ost/profile.hh>
diff --git a/modules/io/src/mol/load_entity.hh b/modules/io/src/mol/load_entity.hh
index aba8f0e44..0a38c07af 100644
--- a/modules/io/src/mol/load_entity.hh
+++ b/modules/io/src/mol/load_entity.hh
@@ -20,7 +20,7 @@
 #define OST_IO_LOAD_ENTITY_H
 
 #include <ost/io/module_config.hh>
-#include <ost/mol/mol.hh>
+#include <ost/mol/entity_handle.hh>
 
 namespace ost { namespace io {
 
diff --git a/modules/io/src/mol/pdb_reader.hh b/modules/io/src/mol/pdb_reader.hh
index b3b6d6d0d..eacd276f6 100644
--- a/modules/io/src/mol/pdb_reader.hh
+++ b/modules/io/src/mol/pdb_reader.hh
@@ -25,8 +25,13 @@
 #include <boost/iostreams/filtering_stream.hpp>
 #include <boost/filesystem/fstream.hpp>
 #include <ost/string_ref.hh>
-#include <ost/mol/mol.hh>
+
+#include <ost/mol/residue_handle.hh>
+#include <ost/mol/entity_handle.hh>
+#include <ost/mol/chain_handle.hh>
+#include <ost/mol/atom_handle.hh>
 #include <ost/mol/xcs_editor.hh>
+
 #include <ost/io/module_config.hh>
 #include <ost/io/mol/io_profile.hh>
 namespace ost { namespace io {
diff --git a/modules/io/src/mol/pdb_writer.cc b/modules/io/src/mol/pdb_writer.cc
index 31359bbae..cc7257f25 100644
--- a/modules/io/src/mol/pdb_writer.cc
+++ b/modules/io/src/mol/pdb_writer.cc
@@ -24,7 +24,10 @@
 #include <string.h>
 
 #include <ost/io/io_exception.hh>
-
+#include <ost/mol/atom_handle.hh>
+#include <ost/mol/residue_handle.hh>
+#include <ost/mol/chain_handle.hh>
+#include <ost/mol/entity_visitor.hh>
 #include "pdb_writer.hh"
 
 using boost::format;
diff --git a/modules/io/src/mol/pdb_writer.hh b/modules/io/src/mol/pdb_writer.hh
index c34e15814..c849fd279 100644
--- a/modules/io/src/mol/pdb_writer.hh
+++ b/modules/io/src/mol/pdb_writer.hh
@@ -28,13 +28,20 @@
 #include <boost/filesystem/fstream.hpp>
 #include <boost/iostreams/filtering_stream.hpp>
 
-#include <ost/mol/mol.hh>
-
 #include <ost/io/module_config.hh>
 #include <ost/io/formatted_line.hh>
 #include <ost/io/mol/io_profile.hh>
 
-namespace ost { namespace io {
+namespace ost { 
+  
+namespace mol {
+
+class EntityView;
+class EntityHandle;
+
+}
+
+namespace io {
 
 class DLLEXPORT_OST_IO PDBWriter {
 public:
diff --git a/modules/io/src/mol/save_entity.cc b/modules/io/src/mol/save_entity.cc
index 5d5c30e9e..23aa19782 100644
--- a/modules/io/src/mol/save_entity.cc
+++ b/modules/io/src/mol/save_entity.cc
@@ -16,9 +16,12 @@
 // along with this library; if not, write to the Free Software Foundation, Inc.,
 // 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 //------------------------------------------------------------------------------
-#include "save_entity.hh"
 #include <ost/log.hh>
 #include <ost/io/io_manager.hh>
+#include <ost/mol/entity_handle.hh>
+#include <ost/mol/entity_view.hh>
+
+#include "save_entity.hh"
 
 namespace ost { namespace io {
   
diff --git a/modules/io/src/mol/save_entity.hh b/modules/io/src/mol/save_entity.hh
index a5cf1276c..033890c96 100644
--- a/modules/io/src/mol/save_entity.hh
+++ b/modules/io/src/mol/save_entity.hh
@@ -18,10 +18,18 @@
 //------------------------------------------------------------------------------
 #ifndef OST_IO_SAVE_ENTITY_HH
 #define OST_IO_SAVE_ENTITY_HH
+
 #include <ost/io/module_config.hh>
-#include <ost/mol/mol.hh>
 
-namespace ost { namespace io {
+namespace ost { 
+  
+namespace mol {
+
+class EntityHandle;
+class EntityView;
+}
+
+namespace io {
   
 /// \brief  Save entity handle
 /// \param en is the entity to be saved
diff --git a/modules/io/src/mol/sdf_reader.cc b/modules/io/src/mol/sdf_reader.cc
index 10020f079..6a2603d0d 100644
--- a/modules/io/src/mol/sdf_reader.cc
+++ b/modules/io/src/mol/sdf_reader.cc
@@ -23,7 +23,7 @@
 #include <boost/algorithm/string.hpp>
 #include <boost/format.hpp>
 #include <boost/lexical_cast.hpp>
-
+#include <ost/mol/bond_handle.hh>
 #include <ost/conop/conop.hh>
 #include <ost/io/io_exception.hh>
 #include <ost/log.hh>
diff --git a/modules/io/src/mol/sdf_reader.hh b/modules/io/src/mol/sdf_reader.hh
index 14c3f5b2c..d90bb9d1a 100644
--- a/modules/io/src/mol/sdf_reader.hh
+++ b/modules/io/src/mol/sdf_reader.hh
@@ -23,7 +23,8 @@
 #define OST_IO_SDF_READER_HH
 
 #include <boost/filesystem/fstream.hpp>
-#include <ost/mol/mol.hh>
+#include <ost/mol/chain_handle.hh>
+#include <ost/mol/residue_handle.hh>
 #include <ost/io/module_config.hh>
 
 namespace ost { namespace io {
diff --git a/modules/io/src/mol/sdf_writer.cc b/modules/io/src/mol/sdf_writer.cc
index 5f03e1337..1b59aa34c 100644
--- a/modules/io/src/mol/sdf_writer.cc
+++ b/modules/io/src/mol/sdf_writer.cc
@@ -21,6 +21,11 @@
  */
 
 #include "sdf_writer.hh"
+
+#include <ost/mol/atom_view.hh>
+#include <ost/mol/residue_view.hh>
+#include <ost/mol/chain_view.hh>
+#include <ost/mol/bond_handle.hh>
 #include <boost/regex.hpp>
 
 namespace ost { namespace io {
diff --git a/modules/io/src/mol/sdf_writer.hh b/modules/io/src/mol/sdf_writer.hh
index 3a4d611f9..02e294649 100644
--- a/modules/io/src/mol/sdf_writer.hh
+++ b/modules/io/src/mol/sdf_writer.hh
@@ -34,7 +34,7 @@
 #include <ost/log.hh>
 #include <ost/conop/conop.hh>
 #include <ost/io/io_exception.hh>
-#include <ost/mol/mol.hh>
+#include <ost/mol/entity_visitor.hh>
 
 namespace ost { namespace io {
 
diff --git a/modules/mol/alg/pymod/export_svd_superpose.cc b/modules/mol/alg/pymod/export_svd_superpose.cc
index 0f1e5098d..a02b7ff63 100644
--- a/modules/mol/alg/pymod/export_svd_superpose.cc
+++ b/modules/mol/alg/pymod/export_svd_superpose.cc
@@ -21,10 +21,15 @@
  * Author Juergen Haas
  */
 #include <boost/python.hpp>
-using namespace boost::python;
-#include <ost/mol/alg/svd_superpose.hh>
+
 #include <ost/geom/mat4.hh>
+#include <ost/mol/alg/svd_superpose.hh>
+#include <ost/mol/entity_handle.hh>
+#include <ost/mol/iterator.hh>
+
 #include <boost/python/suite/indexing/vector_indexing_suite.hpp>
+
+using namespace boost::python;
 using namespace ost;
 using namespace ost::mol::alg;
 
diff --git a/modules/mol/alg/src/svd_superpose.cc b/modules/mol/alg/src/svd_superpose.cc
index 46cc82acf..ef3d4de25 100644
--- a/modules/mol/alg/src/svd_superpose.cc
+++ b/modules/mol/alg/src/svd_superpose.cc
@@ -35,7 +35,8 @@
 #include <ost/mol/alg/svd_superpose.hh>
 #include <ost/mol/xcs_editor.hh>
 #include <ost/mol/view_op.hh>
-
+#include <ost/mol/atom_view.hh>
+#include <ost/mol/iterator.hh>
 namespace ost { namespace mol { namespace alg {
 
 
diff --git a/modules/mol/alg/src/svd_superpose.hh b/modules/mol/alg/src/svd_superpose.hh
index 4f404e780..3580055ca 100644
--- a/modules/mol/alg/src/svd_superpose.hh
+++ b/modules/mol/alg/src/svd_superpose.hh
@@ -25,10 +25,14 @@
 
 #include <ost/base.hh>
 #include <ost/geom/geom.hh>
-#include <ost/mol/mol.hh>
+#include <ost/mol/entity_view.hh>
 #include <ost/mol/alg/module_config.hh>
 
-namespace ost { namespace mol { namespace alg {
+namespace ost { namespace mol { 
+  
+class EntityHandle;
+
+namespace alg {
 
 /// \brief stores the number of cycles and the two final EntityViews
 /// (in case IterativeSuperposition was applied),
diff --git a/modules/mol/alg/tests/test_superposition.cc b/modules/mol/alg/tests/test_superposition.cc
index bc10f0412..a0d4d2309 100644
--- a/modules/mol/alg/tests/test_superposition.cc
+++ b/modules/mol/alg/tests/test_superposition.cc
@@ -23,8 +23,7 @@
 #include <ost/mol/alg/svd_superpose.hh>
 #define BOOST_TEST_DYN_LINK
 #include <boost/test/unit_test.hpp>
-#include <ost/mol/entity_handle.hh>
-
+#include <ost/mol/mol.hh>
 
 using namespace ost;
 using namespace ost::mol;
diff --git a/modules/mol/base/src/atom_base.hh b/modules/mol/base/src/atom_base.hh
index 18aec4a39..8d19514af 100644
--- a/modules/mol/base/src/atom_base.hh
+++ b/modules/mol/base/src/atom_base.hh
@@ -19,8 +19,9 @@
 #ifndef OST_ATOM_BASE_HH
 #define OST_ATOM_BASE_HH
 
-#include <ost/mol/module_config.hh>
 #include <ost/geom/vec3.hh>
+
+#include <ost/mol/module_config.hh>
 #include <ost/mol/impl/atom_impl_fw.hh>
 #include <ost/generic_property.hh>
 
diff --git a/modules/mol/base/src/atom_view.cc b/modules/mol/base/src/atom_view.cc
index d12073b9f..2d81e4aec 100644
--- a/modules/mol/base/src/atom_view.cc
+++ b/modules/mol/base/src/atom_view.cc
@@ -23,6 +23,7 @@
 
 #include "atom_view.hh"
 #include "residue_view.hh"
+#include <ost/mol/bond_handle.hh>
 #include <ost/mol/atom_handle.hh>
 #include <ost/mol/impl/atom_impl.hh>
 #include <ost/mol/entity_visitor.hh>
diff --git a/modules/mol/base/src/bond_table.hh b/modules/mol/base/src/bond_table.hh
index b0845c058..0ddd6d0fe 100644
--- a/modules/mol/base/src/bond_table.hh
+++ b/modules/mol/base/src/bond_table.hh
@@ -20,7 +20,9 @@
 #define OST_BOND_TABLE_HH
 
 #include <map>
+
 #include <ost/mol/impl/connector_impl_fw.hh>
+#include <ost/mol/bond_handle.hh>
 
 namespace ost { namespace mol {
 
diff --git a/modules/mol/base/src/bounding_box.hh b/modules/mol/base/src/bounding_box.hh
index 010d6001d..069ff39b9 100644
--- a/modules/mol/base/src/bounding_box.hh
+++ b/modules/mol/base/src/bounding_box.hh
@@ -26,6 +26,9 @@
  */
 namespace ost { namespace mol {
 
+class EntityHandle;
+class EntityView;
+
 /// \name create bounding box from entity
 //@{
 /// \brief create bounding box from entity handle
diff --git a/modules/mol/base/src/chain_view.cc b/modules/mol/base/src/chain_view.cc
index 97f69b081..b940a37ee 100644
--- a/modules/mol/base/src/chain_view.cc
+++ b/modules/mol/base/src/chain_view.cc
@@ -20,7 +20,8 @@
 #include <limits>
 
 #include <boost/bind.hpp>
-
+#include <ost/mol/bond_handle.hh>
+#include <ost/mol/residue_handle.hh>
 #include <ost/mol/chain_view.hh>
 #include <ost/mol/residue_view.hh>
 #include <ost/mol/entity_visitor.hh>
diff --git a/modules/mol/base/src/entity_handle.cc b/modules/mol/base/src/entity_handle.cc
index eebd571f7..b90c19161 100644
--- a/modules/mol/base/src/entity_handle.cc
+++ b/modules/mol/base/src/entity_handle.cc
@@ -18,6 +18,8 @@
 //------------------------------------------------------------------------------
 
 #include "impl/entity_impl.hh"
+#include "bond_handle.hh"
+#include "torsion_handle.hh"
 #include "entity_visitor.hh"
 #include "atom_handle.hh"
 #include "chain_handle.hh"
diff --git a/modules/mol/base/src/entity_visitor.hh b/modules/mol/base/src/entity_visitor.hh
index f6528e184..2cd6b3a82 100644
--- a/modules/mol/base/src/entity_visitor.hh
+++ b/modules/mol/base/src/entity_visitor.hh
@@ -16,19 +16,14 @@
 // along with this library; if not, write to the Free Software Foundation, Inc.,
 // 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 //------------------------------------------------------------------------------
-#ifndef OST_ENTITY_VISITOR_HC
-#define OST_ENTITY_VISITOR_HC
+#ifndef OST_ENTITY_VISITOR_HH
+#define OST_ENTITY_VISITOR_HH
 
+#include "module_config.hh"
 #include "entity_visitor_fw.hh"
 
-#include <ost/mol/atom_handle.hh>
-#include <ost/mol/residue_handle.hh>
-#include <ost/mol/chain_handle.hh>
-#include <ost/mol/bond_handle.hh>
-#include <ost/mol/torsion_handle.hh>
-#include <ost/mol/atom_view.hh>
-#include <ost/mol/residue_view.hh>
-#include <ost/mol/chain_view.hh>
+#include <ost/mol/view_type_fw.hh>
+#include <ost/mol/handle_type_fw.hh>
 
 namespace ost { namespace mol {
 /// \section The Entity Visitor interface
diff --git a/modules/mol/base/src/impl/atom_impl.cc b/modules/mol/base/src/impl/atom_impl.cc
index a04f4ce1e..60a6ac1f5 100644
--- a/modules/mol/base/src/impl/atom_impl.cc
+++ b/modules/mol/base/src/impl/atom_impl.cc
@@ -19,7 +19,7 @@
 #include <cmath>
 
 #include <ost/log.hh>
-
+#include <ost/mol/atom_handle.hh>
 #include "atom_impl.hh"
 #include "residue_impl.hh"
 #include "connector_impl.hh"
diff --git a/modules/mol/base/src/impl/chain_impl.cc b/modules/mol/base/src/impl/chain_impl.cc
index 456255c3c..854b3d850 100644
--- a/modules/mol/base/src/impl/chain_impl.cc
+++ b/modules/mol/base/src/impl/chain_impl.cc
@@ -17,7 +17,7 @@
 // 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 //------------------------------------------------------------------------------
 #include <ost/log.hh>
-
+#include "atom_impl.hh"
 #include "chain_impl.hh"
 #include "residue_impl.hh"
 #include "entity_impl.hh"
diff --git a/modules/mol/base/src/impl/connector_impl.cc b/modules/mol/base/src/impl/connector_impl.cc
index b244bc000..dd4b285da 100644
--- a/modules/mol/base/src/impl/connector_impl.cc
+++ b/modules/mol/base/src/impl/connector_impl.cc
@@ -22,7 +22,7 @@
 #include "connector_impl.hh"
 #include "atom_impl.hh"
 #include "entity_impl.hh"
-
+#include <ost/mol/bond_handle.hh>
 #include <ost/mol/entity_visitor.hh>
 
 namespace ost { namespace mol { namespace impl {
diff --git a/modules/mol/base/src/impl/residue_impl.cc b/modules/mol/base/src/impl/residue_impl.cc
index 3b8bd2ace..4d22f927b 100644
--- a/modules/mol/base/src/impl/residue_impl.cc
+++ b/modules/mol/base/src/impl/residue_impl.cc
@@ -18,7 +18,7 @@
 //------------------------------------------------------------------------------
 #include <ost/log.hh>
 #include <ost/mol/entity_visitor.hh>
-
+#include <ost/mol/residue_handle.hh>
 #include "chain_impl.hh"
 #include "residue_impl.hh"
 #include "atom_impl.hh"
diff --git a/modules/mol/base/src/impl/torsion_impl.cc b/modules/mol/base/src/impl/torsion_impl.cc
index cff865673..744d648f3 100644
--- a/modules/mol/base/src/impl/torsion_impl.cc
+++ b/modules/mol/base/src/impl/torsion_impl.cc
@@ -22,6 +22,8 @@
 #include <ost/mol/impl/connector_impl.hh>
 #include <ost/mol/impl/atom_impl.hh>
 #include <ost/mol/entity_visitor.hh>
+#include <ost/mol/residue_handle.hh>
+#include <ost/mol/torsion_handle.hh>
 #include <ost/mol/impl/entity_impl.hh>
 namespace ost { namespace mol { namespace impl {
 
diff --git a/modules/mol/base/src/residue_handle.cc b/modules/mol/base/src/residue_handle.cc
index da838c532..809dbb8c6 100644
--- a/modules/mol/base/src/residue_handle.cc
+++ b/modules/mol/base/src/residue_handle.cc
@@ -25,7 +25,7 @@
 #include <ost/mol/impl/chain_impl.hh>
 #include <ost/mol/impl/entity_impl.hh>
 #include <ost/mol/iterator.hh>
-
+#include <ost/mol/bond_handle.hh>
 namespace ost { namespace mol {
 
 ResidueHandle::ResidueHandle()
diff --git a/modules/mol/base/src/residue_view.cc b/modules/mol/base/src/residue_view.cc
index 4cced4497..4bd75ba32 100644
--- a/modules/mol/base/src/residue_view.cc
+++ b/modules/mol/base/src/residue_view.cc
@@ -21,6 +21,7 @@
 
 #include <boost/bind.hpp>
 
+#include <ost/mol/bond_handle.hh>
 #include <ost/mol/chain_view.hh>
 #include <ost/mol/atom_view.hh>
 #include <ost/mol/entity_visitor.hh>
diff --git a/modules/mol/base/src/xcs_editor.cc b/modules/mol/base/src/xcs_editor.cc
index 88d8bbcd4..f5a35fa66 100644
--- a/modules/mol/base/src/xcs_editor.cc
+++ b/modules/mol/base/src/xcs_editor.cc
@@ -17,7 +17,10 @@
 // 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 //------------------------------------------------------------------------------
 #include "xcs_editor.hh"
-#include <ost/mol/mol.hh>
+#include <ost/mol/atom_handle.hh>
+#include <ost/mol/residue_handle.hh>
+#include <ost/mol/chain_handle.hh>
+#include <ost/mol/bond_handle.hh>
 
 #include "impl/atom_impl.hh"
 #include "impl/entity_impl.hh"
diff --git a/modules/qa/src/clash_score.cc b/modules/qa/src/clash_score.cc
index ceb23123b..e942da7e0 100644
--- a/modules/qa/src/clash_score.cc
+++ b/modules/qa/src/clash_score.cc
@@ -16,8 +16,9 @@
 // along with this library; if not, write to the Free Software Foundation, Inc.,
 // 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 //------------------------------------------------------------------------------
-#include <ost/mol/mol.hh>
-
+#include <ost/mol/entity_view.hh>
+#include <ost/mol/atom_view.hh>
+#include <ost/mol/iterator.hh>
 #include "clash_score.hh"
 
 namespace ost { namespace qa {
diff --git a/modules/qa/src/impl/reduced_impl.cc b/modules/qa/src/impl/reduced_impl.cc
index a3778cb39..fb7fd01d7 100644
--- a/modules/qa/src/impl/reduced_impl.cc
+++ b/modules/qa/src/impl/reduced_impl.cc
@@ -1,5 +1,7 @@
 #include <ost/log.hh>
-
+#include <ost/mol/residue_handle.hh>
+#include <ost/mol/atom_handle.hh>
+#include <ost/mol/atom_view.hh>
 #include "reduced_impl.hh"
 
 
diff --git a/modules/qa/src/impl/reduced_impl.hh b/modules/qa/src/impl/reduced_impl.hh
index 77233fb30..1d1157228 100644
--- a/modules/qa/src/impl/reduced_impl.hh
+++ b/modules/qa/src/impl/reduced_impl.hh
@@ -21,8 +21,9 @@
 #define OST_QA_IMPL_REDUCED_HH
 
 
-#include <ost/mol/mol.hh>
-
+#include <ost/mol/entity_visitor.hh>
+#include <ost/mol/entity_handle.hh>
+#include <ost/mol/entity_view.hh>
 #include <ost/qa/module_config.hh>
 #include <ost/qa/amino_acids.hh>
 #include <ost/qa/reduced_statistics.hh>
diff --git a/modules/qa/src/interaction_statistics.cc b/modules/qa/src/interaction_statistics.cc
index 44789acec..c30fcf132 100644
--- a/modules/qa/src/interaction_statistics.cc
+++ b/modules/qa/src/interaction_statistics.cc
@@ -17,8 +17,8 @@
 // 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 //------------------------------------------------------------------------------
 #include "interaction_statistics.hh"
-#include <ost/mol/impl/atom_impl.hh>
-#include <ost/mol/impl/entity_impl.hh>
+#include <ost/mol/atom_view.hh>
+#include <ost/mol/residue_view.hh>
 #include <ost/io/binary_data_source.hh>
 #include <ost/io/binary_data_sink.hh>
 #include <ost/io/container_serialization.hh>
diff --git a/modules/qa/src/packing_potential.cc b/modules/qa/src/packing_potential.cc
index c10eb3186..b64ab96d0 100644
--- a/modules/qa/src/packing_potential.cc
+++ b/modules/qa/src/packing_potential.cc
@@ -23,6 +23,7 @@
 #include <boost/filesystem/convenience.hpp>
 #include <ost/message.hh>
 #include <sstream>
+#include <ost/mol/atom_view.hh>
 #include <ost/io/io_exception.hh>
 #include <ost/integrity_error.hh>
 
diff --git a/modules/qa/src/packing_statistics.cc b/modules/qa/src/packing_statistics.cc
index 595af8314..d557931ca 100644
--- a/modules/qa/src/packing_statistics.cc
+++ b/modules/qa/src/packing_statistics.cc
@@ -20,7 +20,9 @@
 
 #include <ost/log.hh>
 #include <ost/geom/geom.hh>
-#include <ost/mol/mol.hh>
+#include <ost/mol/atom_handle.hh>
+#include <ost/mol/residue_handle.hh>
+#include <ost/mol/atom_view.hh>
 #include <ost/io/binary_data_source.hh>
 #include <ost/io/binary_data_sink.hh>
 #include <ost/io/container_serialization.hh>
-- 
GitLab