diff --git a/src/target/breakpoints.h b/src/target/breakpoints.h
index 800e6558e80a64767b3c8daed90b24b597193e01..946347ba59a46a51dc57ea614e0d9f40a54f2c67 100644
--- a/src/target/breakpoints.h
+++ b/src/target/breakpoints.h
@@ -20,7 +20,7 @@
 #ifndef BREAKPOINTS_H
 #define BREAKPOINTS_H
 
-#include "target.h"
+#include "types.h"
 
 struct target_s;
 
diff --git a/src/target/target.c b/src/target/target.c
index 29bf8337f7d2ca73325d19800043ddf92c1f9675..68fad2fe89194c8f1d12e4bd9f30da2ae3ab6fab 100644
--- a/src/target/target.c
+++ b/src/target/target.c
@@ -33,30 +33,16 @@
 #include "config.h"
 #endif
 
-#include "replacements.h"
 #include "target.h"
 #include "target_request.h"
-
-#include "log.h"
-#include "configuration.h"
-#include "binarybuffer.h"
+#include "time_support.h"
+#include "register.h"
+#include "trace.h"
+#include "image.h"
 #include "jtag.h"
 
-#include <string.h>
-#include <stdlib.h>
 #include <inttypes.h>
 
-#include <sys/stat.h>
-#include <unistd.h>
-#include <errno.h>
-
-#include <sys/time.h>
-#include <time.h>
-
-#include <time_support.h>
-
-#include <fileio.h>
-#include <image.h>
 
 static int handle_targets_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
 
diff --git a/src/target/target.h b/src/target/target.h
index 500a55198b38b42f5ff6e30793b2139ffc7d2ea3..a664dc34bcb0a007bd09c559045d62c5dc8f4bed 100644
--- a/src/target/target.h
+++ b/src/target/target.h
@@ -26,19 +26,16 @@
 #ifndef TARGET_H
 #define TARGET_H
 
-#include "register.h"
 #include "breakpoints.h"
 #include "algorithm.h"
-#include "trace.h"
-
 #include "command.h"
-#include "types.h"
 
-#include <sys/time.h>
-#include <time.h>
+#include "replacements.h"
 
 struct reg_s;
+struct trace_s;
 struct command_context_s;
+
 /*
  * TARGET_UNKNOWN = 0: we don't know anything about the target yet
  * TARGET_RUNNING = 1: the target is executing user code