diff --git a/common/dialogs/dialog_page_settings.cpp b/common/dialogs/dialog_page_settings.cpp
index f9be3007b9..353f478752 100644
--- a/common/dialogs/dialog_page_settings.cpp
+++ b/common/dialogs/dialog_page_settings.cpp
@@ -26,6 +26,7 @@
 #include <dialog_page_settings.h>
 #include <eda_draw_frame.h>
 #include <eda_item.h>
+#include <gr_basic.h>
 #include <kiface_i.h>
 #include <math/util.h>      // for KiROUND, Clamp
 #include <project.h>
diff --git a/common/page_layout/page_layout_default_description.cpp b/common/page_layout/page_layout_default_description.cpp
index dd73769f0c..db6cb5786a 100644
--- a/common/page_layout/page_layout_default_description.cpp
+++ b/common/page_layout/page_layout_default_description.cpp
@@ -115,7 +115,6 @@
  *
  */
 
-#include <page_layout/ws_painter.h>
 
 // height of the band reference grid  2.0 mm
 // worksheet frame reference text size 1.3 mm
diff --git a/common/page_layout/ws_data_model.cpp b/common/page_layout/ws_data_model.cpp
index 896e3c3266..0a3551c2d2 100644
--- a/common/page_layout/ws_data_model.cpp
+++ b/common/page_layout/ws_data_model.cpp
@@ -46,6 +46,7 @@
 
 #include <kiface_i.h>
 #include <title_block.h>
+#include <eda_item.h>
 #include <page_layout/ws_data_item.h>
 #include <page_layout/ws_data_model.h>
 #include <page_layout/ws_draw_item.h>
diff --git a/common/page_layout/ws_draw_item.cpp b/common/page_layout/ws_draw_item.cpp
index 2e4bceeaf9..ee00376194 100644
--- a/common/page_layout/ws_draw_item.cpp
+++ b/common/page_layout/ws_draw_item.cpp
@@ -56,6 +56,7 @@
 #include <base_units.h>
 #include <page_info.h>
 #include <layers_id_colors_and_visibility.h>
+#include <gr_basic.h>
 
 // ============================ BASE CLASS ==============================
 
diff --git a/include/eda_text.h b/include/eda_text.h
index 2395e57c84..a22b6eca1d 100644
--- a/include/eda_text.h
+++ b/include/eda_text.h
@@ -27,15 +27,16 @@
 
 #include <trigo.h>                  // NORMALIZE_ANGLE_POS( angle );
 #include <common.h>                 // wxStringSplit
-#include <gr_basic.h>               // EDA_DRAW_MODE_T
-#include <eda_item.h>            // EDA_RECT
+#include <eda_rect.h>
 #include "kicad_string.h"
 #include "painter.h"
 
 class SHAPE_COMPOUND;
 class SHAPE_POLY_SET;
+class wxFindReplaceData;
 
 using KIGFX::RENDER_SETTINGS;
+using KIGFX::COLOR4D;
 
 // part of the kicad_plugin.h family of defines.
 // See kicad_plugin.h for the choice of the value
diff --git a/include/origin_viewitem.h b/include/origin_viewitem.h
index 18583d4ec5..227b1bc5cb 100644
--- a/include/origin_viewitem.h
+++ b/include/origin_viewitem.h
@@ -31,6 +31,8 @@
 #include <layers_id_colors_and_visibility.h>
 #include <gal/color4d.h>
 
+class EDA_ITEM;
+
 /**
  * ORIGIN_VIEWITEM
  *
diff --git a/include/page_layout/ws_draw_item.h b/include/page_layout/ws_draw_item.h
index 14018b4cfc..11b0c9d1ce 100644
--- a/include/page_layout/ws_draw_item.h
+++ b/include/page_layout/ws_draw_item.h
@@ -25,6 +25,7 @@
 #ifndef  WS_DRAW_ITEM_H
 #define  WS_DRAW_ITEM_H
 
+#include <core/typeinfo.h>
 #include <math/vector2d.h>
 #include <eda_text.h>
 #include <bitmap_base.h>
@@ -37,6 +38,8 @@
 class WS_DATA_ITEM;
 class TITLE_BLOCK;
 class PAGE_INFO;
+class EDA_ITEM;
+class EDA_DRAW_FRAME;
 
 /*
  * Helper classes to handle basic graphic items used to draw/plot
diff --git a/pagelayout_editor/design_inspector.cpp b/pagelayout_editor/design_inspector.cpp
index 43e02b2679..c3be7a6afa 100644
--- a/pagelayout_editor/design_inspector.cpp
+++ b/pagelayout_editor/design_inspector.cpp
@@ -25,6 +25,7 @@
 #include <wx/imaglist.h>
 #include <wx/wupdlock.h>
 
+#include <eda_item.h>
 #include <page_layout/ws_draw_item.h>
 #include <page_layout/ws_data_item.h>
 #include <page_layout/ws_data_model.h>
diff --git a/pagelayout_editor/dialogs/dialog_new_dataitem.cpp b/pagelayout_editor/dialogs/dialog_new_dataitem.cpp
index 06f86477aa..e5511fdabc 100644
--- a/pagelayout_editor/dialogs/dialog_new_dataitem.cpp
+++ b/pagelayout_editor/dialogs/dialog_new_dataitem.cpp
@@ -22,6 +22,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
  */
 
+#include <eda_item.h>
 #include <page_layout/ws_data_item.h>
 
 #include "dialog_new_dataitem_base.h"
diff --git a/pagelayout_editor/dialogs/dialogs_for_printing.cpp b/pagelayout_editor/dialogs/dialogs_for_printing.cpp
index 9fcb5660a3..6040d21dbd 100644
--- a/pagelayout_editor/dialogs/dialogs_for_printing.cpp
+++ b/pagelayout_editor/dialogs/dialogs_for_printing.cpp
@@ -28,6 +28,8 @@
 
 #include <base_units.h>
 #include <dialog_helpers.h>
+#include <eda_item.h>
+#include <gr_basic.h>
 #include <page_layout/ws_draw_item.h>
 #include <page_layout/ws_data_item.h>
 #include <page_layout/ws_data_model.h>
diff --git a/pagelayout_editor/pl_editor_frame.cpp b/pagelayout_editor/pl_editor_frame.cpp
index c0628ee60b..caaa7922ac 100644
--- a/pagelayout_editor/pl_editor_frame.cpp
+++ b/pagelayout_editor/pl_editor_frame.cpp
@@ -27,6 +27,7 @@
 #include <pgm_base.h>
 #include <msgpanel.h>
 #include <bitmaps.h>
+#include <eda_item.h>
 #include <page_layout/ws_data_item.h>
 #include <page_layout/ws_data_model.h>
 #include <widgets/paged_dialog.h>
diff --git a/pagelayout_editor/pl_editor_layout.cpp b/pagelayout_editor/pl_editor_layout.cpp
index 1a75d467be..3ec62e6ed4 100644
--- a/pagelayout_editor/pl_editor_layout.cpp
+++ b/pagelayout_editor/pl_editor_layout.cpp
@@ -29,6 +29,7 @@
 #include <algorithm>
 #include <climits>
 
+#include <eda_item.h>
 #include <eda_rect.h>
 #include "pl_editor_layout.h"
 
diff --git a/pagelayout_editor/tools/pl_actions.cpp b/pagelayout_editor/tools/pl_actions.cpp
index 4803e1ff9c..d997dd9f45 100644
--- a/pagelayout_editor/tools/pl_actions.cpp
+++ b/pagelayout_editor/tools/pl_actions.cpp
@@ -24,6 +24,7 @@
 
 #include <tool/tool_action.h>
 #include <bitmaps.h>
+#include <eda_item.h>
 #include <page_layout/ws_data_item.h>
 
 #include "tools/pl_actions.h"
diff --git a/pcbnew/import_gfx/graphics_import_mgr.cpp b/pcbnew/import_gfx/graphics_import_mgr.cpp
index 0961bb0f68..80d25730d4 100644
--- a/pcbnew/import_gfx/graphics_import_mgr.cpp
+++ b/pcbnew/import_gfx/graphics_import_mgr.cpp
@@ -24,6 +24,7 @@
 
 #include "graphics_import_mgr.h"
 
+#include <eda_item.h>
 #include "dxf_import_plugin.h"
 #include "svg_import_plugin.h"
 
diff --git a/pcbnew/import_gfx/graphics_importer.cpp b/pcbnew/import_gfx/graphics_importer.cpp
index 095275a871..fa82a6ee00 100644
--- a/pcbnew/import_gfx/graphics_importer.cpp
+++ b/pcbnew/import_gfx/graphics_importer.cpp
@@ -22,6 +22,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
  */
 
+#include <eda_item.h>
 #include "graphics_importer.h"
 #include "graphics_import_plugin.h"
 
diff --git a/pcbnew/import_gfx/graphics_importer_buffer.cpp b/pcbnew/import_gfx/graphics_importer_buffer.cpp
index 2c5872e2fb..9d74822c14 100644
--- a/pcbnew/import_gfx/graphics_importer_buffer.cpp
+++ b/pcbnew/import_gfx/graphics_importer_buffer.cpp
@@ -22,6 +22,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
  */
 
+#include <eda_item.h>
 #include "graphics_importer_buffer.h"
 
 using namespace std;
diff --git a/pcbnew/import_gfx/svg_import_plugin.cpp b/pcbnew/import_gfx/svg_import_plugin.cpp
index 2d73e6a0dc..e87c3810a6 100644
--- a/pcbnew/import_gfx/svg_import_plugin.cpp
+++ b/pcbnew/import_gfx/svg_import_plugin.cpp
@@ -32,6 +32,7 @@
 #include <math/vector2d.h>
 
 #include "convert_to_biu.h"
+#include <eda_item.h>
 #include "graphics_importer.h"
 
 static VECTOR2D calculateBezierBoundingBoxExtremity( const float* aCurvePoints,
diff --git a/pcbnew/router/pns_tool_base.cpp b/pcbnew/router/pns_tool_base.cpp
index 8cd1060f1f..59c2454954 100644
--- a/pcbnew/router/pns_tool_base.cpp
+++ b/pcbnew/router/pns_tool_base.cpp
@@ -23,6 +23,7 @@
 #include <functional>
 using namespace std::placeholders;
 
+#include <eda_item.h>
 #include <id.h>
 #include <view/view.h>
 #include <view/view_controls.h>