diff --git a/src/target/arm11.c b/src/target/arm11.c
index 1ac952da9cd2d7c6c3fd5384c0c30ebf084fb605..18c3bd5c459bb72ed38fa8c4e5cb0c5029664056 100644
--- a/src/target/arm11.c
+++ b/src/target/arm11.c
@@ -26,11 +26,7 @@
 #endif
 
 #include "arm11.h"
-#include "jtag.h"
-#include "log.h"
 
-#include <stdlib.h>
-#include <string.h>
 
 #if 0
 #define _DEBUG_INSTRUCTION_EXECUTION_
diff --git a/src/target/arm11.h b/src/target/arm11.h
index 1a890d063e78238bf777e6e67675de3a725e91de..4f75a62e6d629bd51ead53a1fd50543c64334d60 100644
--- a/src/target/arm11.h
+++ b/src/target/arm11.h
@@ -22,11 +22,7 @@
 #ifndef ARM11_H
 #define ARM11_H
 
-#include "target.h"
-#include "register.h"
 #include "embeddedice.h"
-#include "arm_jtag.h"
-#include "types.h"
 
 #define asizeof(x)	(sizeof(x) / sizeof((x)[0]))
 
diff --git a/src/target/arm11_dbgtap.c b/src/target/arm11_dbgtap.c
index fa127c640b0737622f1e8ac715cab4f4a452c469..0a86bc083764cbb08fc1122514e6f2b015b62d65 100644
--- a/src/target/arm11_dbgtap.c
+++ b/src/target/arm11_dbgtap.c
@@ -24,11 +24,7 @@
 #endif
 
 #include "arm11.h"
-#include "jtag.h"
-#include "log.h"
 
-#include <stdlib.h>
-#include <string.h>
 
 #if 0
 #define JTAG_DEBUG(expr ...)	DEBUG(expr)
diff --git a/src/target/arm720t.c b/src/target/arm720t.c
index b04a17f7eb1b2c72b4bbf4f47c7662ca5986b42e..0dbfdb41b663ff3c3445790a8546eb79b2c75f35 100644
--- a/src/target/arm720t.c
+++ b/src/target/arm720t.c
@@ -22,12 +22,8 @@
 #endif
 
 #include "arm720t.h"
-#include "jtag.h"
-#include "log.h"
 #include "time_support.h"
 
-#include <stdlib.h>
-#include <string.h>
 
 #if 0
 #define _DEBUG_INSTRUCTION_EXECUTION_
diff --git a/src/target/arm720t.h b/src/target/arm720t.h
index f91f150a2f4e092b1da47dffdaf84462285c8206..10ac6535d79fda78e8b4368050e0f73a4615905b 100644
--- a/src/target/arm720t.h
+++ b/src/target/arm720t.h
@@ -20,13 +20,8 @@
 #ifndef ARM720T_H
 #define ARM720T_H
 
-#include "target.h"
-#include "register.h"
-#include "embeddedice.h"
-#include "arm_jtag.h"
 #include "arm7tdmi.h"
 #include "armv4_5_mmu.h"
-#include "armv4_5_cache.h"
 
 #define	ARM720T_COMMON_MAGIC 0xa720a720
 
diff --git a/src/target/arm7_9_common.c b/src/target/arm7_9_common.c
index 6a7b77c4ae441eb58868db154ae2bf3340c90767..a1b21030c2691ce13680142252ba07de0606f0fa 100644
--- a/src/target/arm7_9_common.c
+++ b/src/target/arm7_9_common.c
@@ -30,27 +30,12 @@
 #include "config.h"
 #endif
 
-#include "replacements.h"
-
 #include "embeddedice.h"
-#include "target.h"
 #include "target_request.h"
-#include "armv4_5.h"
-#include "arm_jtag.h"
-#include "jtag.h"
-#include "log.h"
 #include "arm7_9_common.h"
-#include "breakpoints.h"
 #include "time_support.h"
 #include "arm_simulator.h"
 
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <errno.h>
 
 int arm7_9_debug_entry(target_t *target);
 int arm7_9_enable_sw_bkpts(struct target_s *target);
diff --git a/src/target/arm7_9_common.h b/src/target/arm7_9_common.h
index d5b0487fece70f532ed6797c901a14dacec37335..04e29e05808904a6b30b7efe00d9398f3e8edd98 100644
--- a/src/target/arm7_9_common.h
+++ b/src/target/arm7_9_common.h
@@ -29,11 +29,7 @@
 #ifndef ARM7_9_COMMON_H
 #define ARM7_9_COMMON_H
 
-#include "armv4_5.h"
-#include "arm_jtag.h"
 #include "breakpoints.h"
-#include "target.h"
-
 #include "etm.h"
 
 #define	ARM7_9_COMMON_MAGIC 0x0a790a79
diff --git a/src/target/arm7tdmi.c b/src/target/arm7tdmi.c
index 098b3732f2dbe798479032339fbafc280fa36f37..116109d37fb5d9aaf4231ec1cad4ef34fb220d26 100644
--- a/src/target/arm7tdmi.c
+++ b/src/target/arm7tdmi.c
@@ -29,18 +29,6 @@
 
 #include "arm7tdmi.h"
 
-#include "arm7_9_common.h"
-#include "register.h"
-#include "target.h"
-#include "armv4_5.h"
-#include "embeddedice.h"
-#include "etm.h"
-#include "log.h"
-#include "jtag.h"
-#include "arm_jtag.h"
-
-#include <stdlib.h>
-#include <string.h>
 
 #if 0
 #define _DEBUG_INSTRUCTION_EXECUTION_
diff --git a/src/target/arm7tdmi.h b/src/target/arm7tdmi.h
index 3624af6e9b6db6a06dae87478f6ae49246f42616..b3ece44ec35cdbf6a4843f2f49383668c3dffade 100644
--- a/src/target/arm7tdmi.h
+++ b/src/target/arm7tdmi.h
@@ -23,12 +23,7 @@
 #ifndef ARM7TDMI_H
 #define ARM7TDMI_H
 
-#include "target.h"
-#include "register.h"
-#include "armv4_5.h"
 #include "embeddedice.h"
-#include "arm_jtag.h"
-#include "arm7_9_common.h"
 
 #define	ARM7TDMI_COMMON_MAGIC 0x00a700a7
 
diff --git a/src/target/arm920t.c b/src/target/arm920t.c
index af26a2fca998cb5b19ffe06f5074a8467c46d32e..cd3129b06f1dcfd069ff22d3f8c607113b429aaa 100644
--- a/src/target/arm920t.c
+++ b/src/target/arm920t.c
@@ -22,12 +22,8 @@
 #endif
 
 #include "arm920t.h"
-#include "jtag.h"
-#include "log.h"
 #include "time_support.h"
 
-#include <stdlib.h>
-#include <string.h>
 
 #if 0
 #define _DEBUG_INSTRUCTION_EXECUTION_
diff --git a/src/target/arm920t.h b/src/target/arm920t.h
index e1aab347bfebfca501ddd86e3803cc16f70eeea6..3f60901b6f9177d7d3948ec4908f2d16ac8a0a8a 100644
--- a/src/target/arm920t.h
+++ b/src/target/arm920t.h
@@ -20,13 +20,8 @@
 #ifndef ARM920T_H
 #define ARM920T_H
 
-#include "target.h"
-#include "register.h"
-#include "embeddedice.h"
-#include "arm_jtag.h"
 #include "arm9tdmi.h"
 #include "armv4_5_mmu.h"
-#include "armv4_5_cache.h"
 
 #define	ARM920T_COMMON_MAGIC 0xa920a920
 
diff --git a/src/target/arm926ejs.c b/src/target/arm926ejs.c
index c943f2fccdad9f04f25fb6767b34baaf335f731a..6233c7999d5b8ad8f00a94038182446cf24207d9 100644
--- a/src/target/arm926ejs.c
+++ b/src/target/arm926ejs.c
@@ -22,12 +22,8 @@
 #endif
 
 #include "arm926ejs.h"
-#include "jtag.h"
-#include "log.h"
 #include "time_support.h"
 
-#include <stdlib.h>
-#include <string.h>
 
 #if 0
 #define _DEBUG_INSTRUCTION_EXECUTION_
diff --git a/src/target/arm926ejs.h b/src/target/arm926ejs.h
index ba5fcc13480288df55d34ef05df7b349b1130802..54796512daca612b9bf03d7d358b4b5a43db521d 100644
--- a/src/target/arm926ejs.h
+++ b/src/target/arm926ejs.h
@@ -20,13 +20,8 @@
 #ifndef ARM926EJS_H
 #define ARM926EJS_H
 
-#include "target.h"
-#include "register.h"
-#include "embeddedice.h"
-#include "arm_jtag.h"
 #include "arm9tdmi.h"
 #include "armv4_5_mmu.h"
-#include "armv4_5_cache.h"
 
 #define	ARM926EJS_COMMON_MAGIC 0xa926a926
 
diff --git a/src/target/arm966e.c b/src/target/arm966e.c
index 758b5f11cd37e6adcec40ba1fcfbbc9c9a500d43..effc272822ce8bd536c239b0635bd09902072339 100644
--- a/src/target/arm966e.c
+++ b/src/target/arm966e.c
@@ -26,17 +26,6 @@
 
 #include "arm966e.h"
 
-#include "arm7_9_common.h"
-#include "register.h"
-#include "target.h"
-#include "armv4_5.h"
-#include "embeddedice.h"
-#include "log.h"
-#include "jtag.h"
-#include "arm_jtag.h"
-
-#include <stdlib.h>
-#include <string.h>
 
 #if 0
 #define _DEBUG_INSTRUCTION_EXECUTION_
diff --git a/src/target/arm966e.h b/src/target/arm966e.h
index b98c022489e7dc653cfd160149316bc2b3cf819f..995a79727f268eac5f3d5c117c722c045cc70e9e 100644
--- a/src/target/arm966e.h
+++ b/src/target/arm966e.h
@@ -23,10 +23,6 @@
 #ifndef ARM966E_H
 #define ARM966E_H
 
-#include "target.h"
-#include "register.h"
-#include "embeddedice.h"
-#include "arm_jtag.h"
 #include "arm9tdmi.h"
 
 #define	ARM966E_COMMON_MAGIC 0x20f920f9
diff --git a/src/target/arm9tdmi.c b/src/target/arm9tdmi.c
index e0a311397b9b7e30f953d2b64a7adc8d8fcacda5..63846cf29acba45756d4d281d25821fd86a857ea 100644
--- a/src/target/arm9tdmi.c
+++ b/src/target/arm9tdmi.c
@@ -29,19 +29,6 @@
 
 #include "arm9tdmi.h"
 
-#include "arm7_9_common.h"
-#include "register.h"
-#include "target.h"
-#include "armv4_5.h"
-#include "embeddedice.h"
-#include "etm.h"
-#include "etb.h"
-#include "log.h"
-#include "jtag.h"
-#include "arm_jtag.h"
-
-#include <stdlib.h>
-#include <string.h>
 
 #if 0
 #define _DEBUG_INSTRUCTION_EXECUTION_
diff --git a/src/target/arm9tdmi.h b/src/target/arm9tdmi.h
index fc650914a254543c1f0a20ce7e2b9ce4dee4491e..5c1a9f9ce4d14db1d2f66a47ee1fe1087732fa2d 100644
--- a/src/target/arm9tdmi.h
+++ b/src/target/arm9tdmi.h
@@ -23,12 +23,7 @@
 #ifndef ARM9TDMI_H
 #define ARM9TDMI_H
 
-#include "target.h"
-#include "register.h"
-#include "armv4_5.h"
 #include "embeddedice.h"
-#include "arm_jtag.h"
-#include "arm7_9_common.h"
 
 #define	ARM9TDMI_COMMON_MAGIC 0x00a900a9
 
diff --git a/src/target/arm_adi_v5.c b/src/target/arm_adi_v5.c
index fb30989a397d2a257f81e5fe8d97392d4c949e25..3c9461ae041302bfa6dba1fc0566da738ee61ee5 100644
--- a/src/target/arm_adi_v5.c
+++ b/src/target/arm_adi_v5.c
@@ -38,14 +38,8 @@
 #include "config.h"
 #endif
 
-#include "replacements.h"
-
 #include "arm_adi_v5.h"
-#include "jtag.h"
-#include "log.h"
 #include "time_support.h"
-#include <stdlib.h>
-#include <string.h>
 
 /*
  * Transaction Mode:
diff --git a/src/target/arm_disassembler.c b/src/target/arm_disassembler.c
index d222c47c15d31c4e0f5f1728a438c86cda99135c..dcff7a743c6f6fa3d9e5424c6f340b8ed1c9b0a4 100644
--- a/src/target/arm_disassembler.c
+++ b/src/target/arm_disassembler.c
@@ -22,10 +22,8 @@
 #endif
 
 #include "arm_disassembler.h"
-
 #include "log.h"
 
-#include <string.h>
 
 /* textual represenation of the condition field */
 /* ALways (default) is ommitted (empty string) */
diff --git a/src/target/arm_jtag.c b/src/target/arm_jtag.c
index ad57cef940198a5e9fd8c28cf8ff4037054ec4c2..0c1c36c8242ddb8d5f33a3f180196087a180c1a2 100644
--- a/src/target/arm_jtag.c
+++ b/src/target/arm_jtag.c
@@ -26,11 +26,6 @@
 
 #include "arm_jtag.h"
 
-#include "binarybuffer.h"
-#include "log.h"
-#include "jtag.h"
-
-#include <stdlib.h>
 
 #if 0
 #define _ARM_JTAG_SCAN_N_CHECK_
diff --git a/src/target/arm_jtag.h b/src/target/arm_jtag.h
index fff3e79e405c44bb8dd01a70b1a54589d81ab940..c76ba4a8cab50f16d6c81c6c5bd6b3c79729fe2e 100644
--- a/src/target/arm_jtag.h
+++ b/src/target/arm_jtag.h
@@ -23,7 +23,6 @@
 #ifndef ARM_JTAG
 #define ARM_JTAG
 
-#include "types.h"
 #include "jtag.h"
 
 typedef struct arm_jtag_s
diff --git a/src/target/arm_simulator.c b/src/target/arm_simulator.c
index b21ea4a8865cf5b15c210e5a4f03141dd481c2bb..00fbb2d78fdb9bb8fa77a2b14f10a21f505a91ff 100644
--- a/src/target/arm_simulator.c
+++ b/src/target/arm_simulator.c
@@ -24,14 +24,12 @@
 #include "config.h"
 #endif
 
-#include "target.h"
 #include "armv4_5.h"
 #include "arm_disassembler.h"
 #include "arm_simulator.h"
 #include "log.h"
 #include "binarybuffer.h"
 
-#include <string.h>
 
 u32 arm_shift(u8 shift, u32 Rm, u32 shift_amount, u8 *carry)
 {
diff --git a/src/target/arm_simulator.h b/src/target/arm_simulator.h
index 7894873043a75184ddf407f84d2ff3f134c9c6a6..730e6ccb852f62cabd202caad0eafc8b28dde947 100644
--- a/src/target/arm_simulator.h
+++ b/src/target/arm_simulator.h
@@ -20,11 +20,11 @@
 #ifndef ARM_SIMULATOR_H
 #define ARM_SIMULATOR_H
 
-#include "target.h"
 #include "types.h"
 
-extern int arm_simulate_step(target_t *target, u32 *dry_run_pc);
+struct target_s;
 
+extern int arm_simulate_step(struct target_s *target, u32 *dry_run_pc);
 
 #define ERROR_ARM_SIMULATOR_NOT_IMPLEMENTED	(-700)
 
diff --git a/src/target/armv4_5.c b/src/target/armv4_5.c
index 1144c7f12508f5636dd9756b292e838336fe937c..14aec0198c805bbd27b05721966d1a9255ca08a4 100644
--- a/src/target/armv4_5.c
+++ b/src/target/armv4_5.c
@@ -27,21 +27,10 @@
 #include "config.h"
 #endif
 
-#include "replacements.h"
-
-#include "arm_disassembler.h"
-
 #include "armv4_5.h"
-
-#include "target.h"
-#include "register.h"
-#include "log.h"
+#include "arm_disassembler.h"
 #include "binarybuffer.h"
-#include "command.h"
 
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
 
 bitfield_desc_t armv4_5_psr_bitfield_desc[] =
 {
diff --git a/src/target/armv4_5_cache.c b/src/target/armv4_5_cache.c
index 127420dc44ddaeacb0dbe202b343708a30615585..e6f08894c6d4ba74b7c8d52b6d412fd0fd544303 100644
--- a/src/target/armv4_5_cache.c
+++ b/src/target/armv4_5_cache.c
@@ -22,9 +22,7 @@
 #endif
 
 #include "armv4_5_cache.h"
-
 #include "log.h"
-#include "command.h"
 
 int armv4_5_identify_cache(u32 cache_type_reg, armv4_5_cache_common_t *cache)
 {
diff --git a/src/target/armv4_5_cache.h b/src/target/armv4_5_cache.h
index 03b9593527014cc0c3283a2d48f44b8d61fd252c..0a6e88ae560f78bcfa3a082588a585bc7fed6ea7 100644
--- a/src/target/armv4_5_cache.h
+++ b/src/target/armv4_5_cache.h
@@ -21,7 +21,8 @@
 #define ARMV4_5_CACHE_H
 
 #include "types.h"
-#include "command.h"
+
+struct command_context_s;
 
 typedef struct armv4_5_cachesize_s
 {
diff --git a/src/target/armv4_5_mmu.c b/src/target/armv4_5_mmu.c
index b108196e034ae809fc34d553167ee733de24eea0..cc8fb3a23a5fa022abc5d3fc0c0da896f491ecc2 100644
--- a/src/target/armv4_5_mmu.c
+++ b/src/target/armv4_5_mmu.c
@@ -21,13 +21,9 @@
 #include "config.h"
 #endif
 
-#include "arm7_9_common.h"
 #include "log.h"
-#include "command.h"
 #include "armv4_5_mmu.h"
-#include "target.h"
 
-#include <stdlib.h>
 
 u32 armv4mmu_translate_va(target_t *target, armv4_5_mmu_common_t *armv4_5_mmu, u32 va, int *type, u32 *cb, int *domain, u32 *ap);
 
diff --git a/src/target/armv4_5_mmu.h b/src/target/armv4_5_mmu.h
index b0a87ebbed9f8cd45c66524895af1f273eebb617..100beca93da407f00cedbf55e310280d6494647e 100644
--- a/src/target/armv4_5_mmu.h
+++ b/src/target/armv4_5_mmu.h
@@ -21,6 +21,7 @@
 #define ARMV4_5_MMU_H
 
 #include "armv4_5_cache.h"
+#include "target.h"
 
 typedef struct armv4_5_mmu_common_s
 {
diff --git a/src/target/armv7m.c b/src/target/armv7m.c
index 712b5ae341f4b1b28e9f2898bab52a485521d541..a73e60eaea975ff2839a85477c428246b428beae 100644
--- a/src/target/armv7m.c
+++ b/src/target/armv7m.c
@@ -30,17 +30,8 @@
 #include "config.h"
 #endif
 
-#include "replacements.h"
-
 #include "armv7m.h"
-#include "register.h"
-#include "target.h"
-#include "log.h"
-#include "jtag.h"
-#include "arm_jtag.h"
-
-#include <stdlib.h>
-#include <string.h>
+
 
 #if 0
 #define _DEBUG_INSTRUCTION_EXECUTION_
diff --git a/src/target/armv7m.h b/src/target/armv7m.h
index 35afe11f7efe934abd50025518b8d7503248b393..cb7bb5cbfae4d0bc952af8df389437c35a9e4c03 100644
--- a/src/target/armv7m.h
+++ b/src/target/armv7m.h
@@ -26,9 +26,6 @@
 #ifndef ARMV7M_COMMON_H
 #define ARMV7M_COMMON_H
 
-#include "register.h"
-#include "target.h"
-#include "arm_jtag.h"
 #include "arm_adi_v5.h"
 
 /* define for enabling armv7 gdb workarounds */