diff --git a/backends/rng-egd.c b/backends/rng-egd.c
index ad84737..3a7d1ec 100644
--- a/backends/rng-egd.c
+++ b/backends/rng-egd.c
@@ -12,7 +12,7 @@
 
 #include "qemu/rng.h"
 #include "qemu-char.h"
-#include "qerror.h"
+#include "qapi/qmp/qerror.h"
 #include "hw/qdev.h" /* just for DEFINE_PROP_CHR */
 
 #define TYPE_RNG_EGD "rng-egd"
diff --git a/backends/rng-random.c b/backends/rng-random.c
index 9c9923b..c201953 100644
--- a/backends/rng-random.c
+++ b/backends/rng-random.c
@@ -12,7 +12,7 @@
 
 #include "qemu/rng-random.h"
 #include "qemu/rng.h"
-#include "qerror.h"
+#include "qapi/qmp/qerror.h"
 #include "main-loop.h"
 
 struct RndRandom
diff --git a/backends/rng.c b/backends/rng.c
index 06f2611..48a5840 100644
--- a/backends/rng.c
+++ b/backends/rng.c
@@ -11,7 +11,7 @@
  */
 
 #include "qemu/rng.h"
-#include "qerror.h"
+#include "qapi/qmp/qerror.h"
 
 void rng_backend_request_entropy(RngBackend *s, size_t size,
                                  EntropyReceiveFunc *receive_entropy,
diff --git a/balloon.c b/balloon.c
index e02ab1c..610fe6d 100644
--- a/balloon.c
+++ b/balloon.c
@@ -30,7 +30,7 @@
 #include "balloon.h"
 #include "trace.h"
 #include "qmp-commands.h"
-#include "qjson.h"
+#include "qapi/qmp/qjson.h"
 
 static QEMUBalloonEvent *balloon_event_fn;
 static QEMUBalloonStatus *balloon_stat_fn;
diff --git a/block.c b/block.c
index 0668c4b..e962a5a 100644
--- a/block.c
+++ b/block.c
@@ -28,7 +28,7 @@
 #include "block_int.h"
 #include "blockjob.h"
 #include "module.h"
-#include "qjson.h"
+#include "qapi/qmp/qjson.h"
 #include "sysemu.h"
 #include "notify.h"
 #include "qemu-coroutine.h"
diff --git a/block.h b/block.h
index 893448a..0b22892 100644
--- a/block.h
+++ b/block.h
@@ -5,7 +5,7 @@
 #include "qemu-common.h"
 #include "qemu-option.h"
 #include "qemu-coroutine.h"
-#include "qobject.h"
+#include "qapi/qmp/qobject.h"
 #include "qapi-types.h"
 
 /* block.c */
diff --git a/block/qcow2.c b/block/qcow2.c
index 8520bda..217b4e4 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -28,7 +28,7 @@
 #include "aes.h"
 #include "block/qcow2.h"
 #include "qemu-error.h"
-#include "qerror.h"
+#include "qapi/qmp/qerror.h"
 #include "trace.h"
 
 /*
diff --git a/block/qed.c b/block/qed.c
index 0b5374a..ca1fafb 100644
--- a/block/qed.c
+++ b/block/qed.c
@@ -15,7 +15,7 @@
 #include "qemu-timer.h"
 #include "trace.h"
 #include "qed.h"
-#include "qerror.h"
+#include "qapi/qmp/qerror.h"
 #include "migration.h"
 
 static void qed_aio_cancel(BlockDriverAIOCB *blockacb)
diff --git a/block_int.h b/block_int.h
index bf3f79b..a748b6c 100644
--- a/block_int.h
+++ b/block_int.h
@@ -30,7 +30,7 @@
 #include "qemu-coroutine.h"
 #include "qemu-timer.h"
 #include "qapi-types.h"
-#include "qerror.h"
+#include "qapi/qmp/qerror.h"
 #include "monitor.h"
 
 #define BLOCK_FLAG_ENCRYPT          1
diff --git a/blockdev-nbd.c b/blockdev-nbd.c
index 6b26bbf..a194ecd 100644
--- a/blockdev-nbd.c
+++ b/blockdev-nbd.c
@@ -12,7 +12,7 @@
 #include "blockdev.h"
 #include "hw/block-common.h"
 #include "monitor.h"
-#include "qerror.h"
+#include "qapi/qmp/qerror.h"
 #include "sysemu.h"
 #include "qmp-commands.h"
 #include "trace.h"
diff --git a/blockdev.c b/blockdev.c
index 9a05e57..c85c614 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -11,10 +11,10 @@
 #include "hw/block-common.h"
 #include "blockjob.h"
 #include "monitor.h"
-#include "qerror.h"
+#include "qapi/qmp/qerror.h"
 #include "qemu-option.h"
 #include "qemu-config.h"
-#include "qemu-objects.h"
+#include "qapi/qmp/types.h"
 #include "sysemu.h"
 #include "block_int.h"
 #include "qmp-commands.h"
diff --git a/blockdev.h b/blockdev.h
index d73d552..6e36d9f 100644
--- a/blockdev.h
+++ b/blockdev.h
@@ -11,7 +11,7 @@
 #define BLOCKDEV_H
 
 #include "block.h"
-#include "error.h"
+#include "qapi/error.h"
 #include "qemu-queue.h"
 
 void blockdev_mark_auto_del(BlockDriverState *bs);
diff --git a/blockjob.c b/blockjob.c
index cda12c6..8c0a286 100644
--- a/blockjob.c
+++ b/blockjob.c
@@ -30,7 +30,7 @@
 #include "block.h"
 #include "blockjob.h"
 #include "block_int.h"
-#include "qjson.h"
+#include "qapi/qmp/qjson.h"
 #include "qemu-coroutine.h"
 #include "qmp-commands.h"
 #include "qemu-timer.h"
diff --git a/dump-stub.c b/dump-stub.c
index 56d4564..0842e6f 100644
--- a/dump-stub.c
+++ b/dump-stub.c
@@ -13,7 +13,7 @@
 
 #include "qemu-common.h"
 #include "dump.h"
-#include "qerror.h"
+#include "qapi/qmp/qerror.h"
 #include "qmp-commands.h"
 
 /* we need this function in hmp.c */
diff --git a/dump.c b/dump.c
index 5640c2c..7b45b53 100644
--- a/dump.c
+++ b/dump.c
@@ -21,7 +21,7 @@
 #include "dump.h"
 #include "sysemu.h"
 #include "memory_mapping.h"
-#include "error.h"
+#include "qapi/error.h"
 #include "qmp-commands.h"
 #include "gdbstub.h"
 
diff --git a/error.c b/error.c
index 128d88c..519f6b6 100644
--- a/error.c
+++ b/error.c
@@ -11,11 +11,11 @@
  */
 
 #include "qemu-common.h"
-#include "error.h"
-#include "qjson.h"
-#include "qdict.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qjson.h"
+#include "qapi/qmp/qdict.h"
 #include "qapi-types.h"
-#include "qerror.h"
+#include "qapi/qmp/qerror.h"
 
 struct Error
 {
diff --git a/hmp.h b/hmp.h
index 0ab03be..21f3e05 100644
--- a/hmp.h
+++ b/hmp.h
@@ -16,7 +16,7 @@
 
 #include "qemu-common.h"
 #include "qapi-types.h"
-#include "qdict.h"
+#include "qapi/qmp/qdict.h"
 
 void hmp_info_name(Monitor *mon);
 void hmp_info_version(Monitor *mon);
diff --git a/hw/ivshmem.c b/hw/ivshmem.c
index 5c648d9..d15760b 100644
--- a/hw/ivshmem.c
+++ b/hw/ivshmem.c
@@ -22,7 +22,7 @@
 #include "pci/msix.h"
 #include "kvm.h"
 #include "migration.h"
-#include "qerror.h"
+#include "qapi/qmp/qerror.h"
 #include "event_notifier.h"
 #include "qemu-char.h"
 
diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c
index c79fca7..2a1278f 100644
--- a/hw/mc146818rtc.c
+++ b/hw/mc146818rtc.c
@@ -25,7 +25,7 @@
 #include "qemu-timer.h"
 #include "sysemu.h"
 #include "mc146818rtc.h"
-#include "qapi/qapi-visit-core.h"
+#include "qapi/visitor.h"
 
 #ifdef TARGET_I386
 #include "apic.h"
diff --git a/hw/pci/pci-hotplug.c b/hw/pci/pci-hotplug.c
index b850400..5ba7558 100644
--- a/hw/pci/pci-hotplug.c
+++ b/hw/pci/pci-hotplug.c
@@ -32,7 +32,7 @@
 #include "hw/virtio-blk.h"
 #include "qemu-config.h"
 #include "blockdev.h"
-#include "error.h"
+#include "qapi/error.h"
 
 #if defined(TARGET_I386)
 static PCIDevice *qemu_pci_hot_add_nic(Monitor *mon,
diff --git a/hw/pci/pcie_aer.c b/hw/pci/pcie_aer.c
index 8a2032c..b6f4f85 100644
--- a/hw/pci/pcie_aer.c
+++ b/hw/pci/pcie_aer.c
@@ -19,7 +19,7 @@
  */
 
 #include "sysemu.h"
-#include "qemu-objects.h"
+#include "qapi/qmp/types.h"
 #include "monitor.h"
 #include "hw/pci/pci_bridge.h"
 #include "hw/pci/pcie.h"
diff --git a/hw/qdev-addr.c b/hw/qdev-addr.c
index ea32c31..552ee21 100644
--- a/hw/qdev-addr.c
+++ b/hw/qdev-addr.c
@@ -1,7 +1,7 @@
 #include "qdev.h"
 #include "qdev-addr.h"
 #include "hwaddr.h"
-#include "qapi/qapi-visit-core.h"
+#include "qapi/visitor.h"
 
 /* --- target physical address --- */
 
diff --git a/hw/qdev-core.h b/hw/qdev-core.h
index d672cca..506977c 100644
--- a/hw/qdev-core.h
+++ b/hw/qdev-core.h
@@ -6,7 +6,7 @@
 #include "qemu-types.h"
 #include "qemu/object.h"
 #include "hw/irq.h"
-#include "error.h"
+#include "qapi/error.h"
 
 enum DevState {
     DEV_STATE_CREATED = 1,
diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c
index 7ab55ef..ba6c648 100644
--- a/hw/qdev-properties.c
+++ b/hw/qdev-properties.c
@@ -1,10 +1,10 @@
 #include "net/net.h"
 #include "qdev.h"
-#include "qerror.h"
+#include "qapi/qmp/qerror.h"
 #include "blockdev.h"
 #include "hw/block-common.h"
 #include "net/hub.h"
-#include "qapi/qapi-visit-core.h"
+#include "qapi/visitor.h"
 #include "qemu-char.h"
 
 void *qdev_get_prop_ptr(DeviceState *dev, Property *prop)
diff --git a/hw/qdev.c b/hw/qdev.c
index 6b91fb9..0a2a32d 100644
--- a/hw/qdev.c
+++ b/hw/qdev.c
@@ -28,8 +28,8 @@
 #include "net/net.h"
 #include "qdev.h"
 #include "sysemu.h"
-#include "error.h"
-#include "qapi/qapi-visit-core.h"
+#include "qapi/error.h"
+#include "qapi/visitor.h"
 
 int qdev_hotplug = 0;
 static bool qdev_hot_added = false;
diff --git a/hw/vga_int.h b/hw/vga_int.h
index ad02404..5efaee8 100644
--- a/hw/vga_int.h
+++ b/hw/vga_int.h
@@ -25,7 +25,7 @@
 #define HW_VGA_INT_H 1
 
 #include <hw/hw.h>
-#include "error.h"
+#include "qapi/error.h"
 #include "memory.h"
 
 #define ST01_V_RETRACE      0x08
diff --git a/hw/watchdog.c b/hw/watchdog.c
index 5c82c17..f878bec 100644
--- a/hw/watchdog.c
+++ b/hw/watchdog.c
@@ -23,7 +23,7 @@
 #include "qemu-option.h"
 #include "qemu-config.h"
 #include "qemu-queue.h"
-#include "qemu-objects.h"
+#include "qapi/qmp/types.h"
 #include "monitor.h"
 #include "sysemu.h"
 #include "hw/watchdog.h"
diff --git a/include/net/net.h b/include/net/net.h
index 9ff9305..26dd0cf 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -3,7 +3,7 @@
 
 #include "qemu-queue.h"
 #include "qemu-common.h"
-#include "qdict.h"
+#include "qapi/qmp/qdict.h"
 #include "qemu-option.h"
 #include "net/queue.h"
 #include "vmstate.h"
diff --git a/include/net/slirp.h b/include/net/slirp.h
index 2ca09b6..ac9d449 100644
--- a/include/net/slirp.h
+++ b/include/net/slirp.h
@@ -25,7 +25,7 @@
 #define QEMU_NET_SLIRP_H
 
 #include "qemu-common.h"
-#include "qdict.h"
+#include "qapi/qmp/qdict.h"
 #include "qemu-option.h"
 #include "qapi-types.h"
 
diff --git a/qapi/qapi-dealloc-visitor.h b/include/qapi/dealloc-visitor.h
similarity index 95%
rename from qapi/qapi-dealloc-visitor.h
rename to include/qapi/dealloc-visitor.h
index 5842bc7..cf4c36d 100644
--- a/qapi/qapi-dealloc-visitor.h
+++ b/include/qapi/dealloc-visitor.h
@@ -14,7 +14,7 @@
 #ifndef QAPI_DEALLOC_VISITOR_H
 #define QAPI_DEALLOC_VISITOR_H
 
-#include "qapi-visit-core.h"
+#include "qapi/visitor.h"
 
 typedef struct QapiDeallocVisitor QapiDeallocVisitor;
 
diff --git a/error.h b/include/qapi/error.h
similarity index 100%
rename from error.h
rename to include/qapi/error.h
diff --git a/qapi/opts-visitor.h b/include/qapi/opts-visitor.h
similarity index 96%
rename from qapi/opts-visitor.h
rename to include/qapi/opts-visitor.h
index ea1a395..31fa4c5 100644
--- a/qapi/opts-visitor.h
+++ b/include/qapi/opts-visitor.h
@@ -13,7 +13,7 @@
 #ifndef OPTS_VISITOR_H
 #define OPTS_VISITOR_H
 
-#include "qapi-visit-core.h"
+#include "qapi/visitor.h"
 #include "qemu-option.h"
 
 typedef struct OptsVisitor OptsVisitor;
diff --git a/qapi/qmp-input-visitor.h b/include/qapi/qmp-input-visitor.h
similarity index 91%
rename from qapi/qmp-input-visitor.h
rename to include/qapi/qmp-input-visitor.h
index e0a48a5..3ed499c 100644
--- a/qapi/qmp-input-visitor.h
+++ b/include/qapi/qmp-input-visitor.h
@@ -14,8 +14,8 @@
 #ifndef QMP_INPUT_VISITOR_H
 #define QMP_INPUT_VISITOR_H
 
-#include "qapi-visit-core.h"
-#include "qobject.h"
+#include "qapi/visitor.h"
+#include "qapi/qmp/qobject.h"
 
 typedef struct QmpInputVisitor QmpInputVisitor;
 
diff --git a/qapi/qmp-output-visitor.h b/include/qapi/qmp-output-visitor.h
similarity index 91%
rename from qapi/qmp-output-visitor.h
rename to include/qapi/qmp-output-visitor.h
index 4a649c2..2266770 100644
--- a/qapi/qmp-output-visitor.h
+++ b/include/qapi/qmp-output-visitor.h
@@ -14,8 +14,8 @@
 #ifndef QMP_OUTPUT_VISITOR_H
 #define QMP_OUTPUT_VISITOR_H
 
-#include "qapi-visit-core.h"
-#include "qobject.h"
+#include "qapi/visitor.h"
+#include "qapi/qmp/qobject.h"
 
 typedef struct QmpOutputVisitor QmpOutputVisitor;
 
diff --git a/qapi/qmp-core.h b/include/qapi/qmp/dispatch.h
similarity index 93%
rename from qapi/qmp-core.h
rename to include/qapi/qmp/dispatch.h
index 00446cf..1ce11f5 100644
--- a/qapi/qmp-core.h
+++ b/include/qapi/qmp/dispatch.h
@@ -14,9 +14,9 @@
 #ifndef QMP_CORE_H
 #define QMP_CORE_H
 
-#include "qobject.h"
-#include "qdict.h"
-#include "error.h"
+#include "qapi/qmp/qobject.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/error.h"
 
 typedef void (QmpCommandFunc)(QDict *, QObject **, Error **);
 
diff --git a/json-lexer.h b/include/qapi/qmp/json-lexer.h
similarity index 94%
rename from json-lexer.h
rename to include/qapi/qmp/json-lexer.h
index 10bc0a7..cdff046 100644
--- a/json-lexer.h
+++ b/include/qapi/qmp/json-lexer.h
@@ -14,8 +14,8 @@
 #ifndef QEMU_JSON_LEXER_H
 #define QEMU_JSON_LEXER_H
 
-#include "qstring.h"
-#include "qlist.h"
+#include "qapi/qmp/qstring.h"
+#include "qapi/qmp/qlist.h"
 
 typedef enum json_token_type {
     JSON_OPERATOR = 100,
diff --git a/json-parser.h b/include/qapi/qmp/json-parser.h
similarity index 90%
rename from json-parser.h
rename to include/qapi/qmp/json-parser.h
index 8f2b5ec..44d88f3 100644
--- a/json-parser.h
+++ b/include/qapi/qmp/json-parser.h
@@ -15,8 +15,8 @@
 #define QEMU_JSON_PARSER_H
 
 #include "qemu-common.h"
-#include "qlist.h"
-#include "error.h"
+#include "qapi/qmp/qlist.h"
+#include "qapi/error.h"
 
 QObject *json_parser_parse(QList *tokens, va_list *ap);
 QObject *json_parser_parse_err(QList *tokens, va_list *ap, Error **errp);
diff --git a/json-streamer.h b/include/qapi/qmp/json-streamer.h
similarity index 93%
rename from json-streamer.h
rename to include/qapi/qmp/json-streamer.h
index f09bc4d..823f7d7 100644
--- a/json-streamer.h
+++ b/include/qapi/qmp/json-streamer.h
@@ -14,8 +14,8 @@
 #ifndef QEMU_JSON_STREAMER_H
 #define QEMU_JSON_STREAMER_H
 
-#include "qlist.h"
-#include "json-lexer.h"
+#include "qapi/qmp/qlist.h"
+#include "qapi/qmp/json-lexer.h"
 
 typedef struct JSONMessageParser
 {
diff --git a/qbool.h b/include/qapi/qmp/qbool.h
similarity index 94%
rename from qbool.h
rename to include/qapi/qmp/qbool.h
index fe66fcd..c4eaab9 100644
--- a/qbool.h
+++ b/include/qapi/qmp/qbool.h
@@ -15,7 +15,7 @@
 #define QBOOL_H
 
 #include <stdint.h>
-#include "qobject.h"
+#include "qapi/qmp/qobject.h"
 
 typedef struct QBool {
     QObject_HEAD;
diff --git a/qdict.h b/include/qapi/qmp/qdict.h
similarity index 97%
rename from qdict.h
rename to include/qapi/qmp/qdict.h
index 929d8d2..c815981 100644
--- a/qdict.h
+++ b/include/qapi/qmp/qdict.h
@@ -13,8 +13,8 @@
 #ifndef QDICT_H
 #define QDICT_H
 
-#include "qobject.h"
-#include "qlist.h"
+#include "qapi/qmp/qobject.h"
+#include "qapi/qmp/qlist.h"
 #include "qemu-queue.h"
 #include <stdint.h>
 
diff --git a/qerror.h b/include/qapi/qmp/qerror.h
similarity index 99%
rename from qerror.h
rename to include/qapi/qmp/qerror.h
index 8db4309..d912297 100644
--- a/qerror.h
+++ b/include/qapi/qmp/qerror.h
@@ -12,10 +12,10 @@
 #ifndef QERROR_H
 #define QERROR_H
 
-#include "qdict.h"
-#include "qstring.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qmp/qstring.h"
 #include "qemu-error.h"
-#include "error.h"
+#include "qapi/error.h"
 #include "qapi-types.h"
 #include <stdarg.h>
 
diff --git a/qfloat.h b/include/qapi/qmp/qfloat.h
similarity index 94%
rename from qfloat.h
rename to include/qapi/qmp/qfloat.h
index 9d67876..a865844 100644
--- a/qfloat.h
+++ b/include/qapi/qmp/qfloat.h
@@ -15,7 +15,7 @@
 #define QFLOAT_H
 
 #include <stdint.h>
-#include "qobject.h"
+#include "qapi/qmp/qobject.h"
 
 typedef struct QFloat {
     QObject_HEAD;
diff --git a/qint.h b/include/qapi/qmp/qint.h
similarity index 94%
rename from qint.h
rename to include/qapi/qmp/qint.h
index 6b1a15c..48a41b0 100644
--- a/qint.h
+++ b/include/qapi/qmp/qint.h
@@ -14,7 +14,7 @@
 #define QINT_H
 
 #include <stdint.h>
-#include "qobject.h"
+#include "qapi/qmp/qobject.h"
 
 typedef struct QInt {
     QObject_HEAD;
diff --git a/qjson.h b/include/qapi/qmp/qjson.h
similarity index 91%
rename from qjson.h
rename to include/qapi/qmp/qjson.h
index 1190d8a..0473374 100644
--- a/qjson.h
+++ b/include/qapi/qmp/qjson.h
@@ -16,8 +16,8 @@
 
 #include <stdarg.h>
 #include "compiler.h"
-#include "qobject.h"
-#include "qstring.h"
+#include "qapi/qmp/qobject.h"
+#include "qapi/qmp/qstring.h"
 
 QObject *qobject_from_json(const char *string) GCC_FMT_ATTR(1, 0);
 QObject *qobject_from_jsonf(const char *string, ...) GCC_FMT_ATTR(1, 2);
diff --git a/qlist.h b/include/qapi/qmp/qlist.h
similarity index 98%
rename from qlist.h
rename to include/qapi/qmp/qlist.h
index 7408947..ffa0846 100644
--- a/qlist.h
+++ b/include/qapi/qmp/qlist.h
@@ -13,7 +13,7 @@
 #ifndef QLIST_H
 #define QLIST_H
 
-#include "qobject.h"
+#include "qapi/qmp/qobject.h"
 #include "qemu-queue.h"
 #include "qemu-queue.h"
 
diff --git a/qobject.h b/include/qapi/qmp/qobject.h
similarity index 100%
rename from qobject.h
rename to include/qapi/qmp/qobject.h
diff --git a/qstring.h b/include/qapi/qmp/qstring.h
similarity index 96%
rename from qstring.h
rename to include/qapi/qmp/qstring.h
index 84ccd96..0e690f4 100644
--- a/qstring.h
+++ b/include/qapi/qmp/qstring.h
@@ -14,7 +14,7 @@
 #define QSTRING_H
 
 #include <stdint.h>
-#include "qobject.h"
+#include "qapi/qmp/qobject.h"
 
 typedef struct QString {
     QObject_HEAD;
diff --git a/qemu-objects.h b/include/qapi/qmp/types.h
similarity index 60%
rename from qemu-objects.h
rename to include/qapi/qmp/types.h
index c53fbaa..7782ec5 100644
--- a/qemu-objects.h
+++ b/include/qapi/qmp/types.h
@@ -13,13 +13,13 @@
 #ifndef QEMU_OBJECTS_H
 #define QEMU_OBJECTS_H
 
-#include "qobject.h"
-#include "qint.h"
-#include "qfloat.h"
-#include "qbool.h"
-#include "qstring.h"
-#include "qdict.h"
-#include "qlist.h"
-#include "qjson.h"
+#include "qapi/qmp/qobject.h"
+#include "qapi/qmp/qint.h"
+#include "qapi/qmp/qfloat.h"
+#include "qapi/qmp/qbool.h"
+#include "qapi/qmp/qstring.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qmp/qlist.h"
+#include "qapi/qmp/qjson.h"
 
 #endif /* QEMU_OBJECTS_H */
diff --git a/qapi/string-input-visitor.h b/include/qapi/string-input-visitor.h
similarity index 95%
rename from qapi/string-input-visitor.h
rename to include/qapi/string-input-visitor.h
index d269d42..089243c 100644
--- a/qapi/string-input-visitor.h
+++ b/include/qapi/string-input-visitor.h
@@ -13,7 +13,7 @@
 #ifndef STRING_INPUT_VISITOR_H
 #define STRING_INPUT_VISITOR_H
 
-#include "qapi-visit-core.h"
+#include "qapi/visitor.h"
 
 typedef struct StringInputVisitor StringInputVisitor;
 
diff --git a/qapi/string-output-visitor.h b/include/qapi/string-output-visitor.h
similarity index 95%
rename from qapi/string-output-visitor.h
rename to include/qapi/string-output-visitor.h
index 8868454..ec81e42 100644
--- a/qapi/string-output-visitor.h
+++ b/include/qapi/string-output-visitor.h
@@ -13,7 +13,7 @@
 #ifndef STRING_OUTPUT_VISITOR_H
 #define STRING_OUTPUT_VISITOR_H
 
-#include "qapi-visit-core.h"
+#include "qapi/visitor.h"
 
 typedef struct StringOutputVisitor StringOutputVisitor;
 
diff --git a/qapi/qapi-visit-impl.h b/include/qapi/visitor-impl.h
similarity index 98%
rename from qapi/qapi-visit-impl.h
rename to include/qapi/visitor-impl.h
index 9337d62..5159964 100644
--- a/qapi/qapi-visit-impl.h
+++ b/include/qapi/visitor-impl.h
@@ -12,8 +12,8 @@
 #ifndef QAPI_VISITOR_IMPL_H
 #define QAPI_VISITOR_IMPL_H
 
-#include "error.h"
-#include "qapi/qapi-visit-core.h"
+#include "qapi/error.h"
+#include "qapi/visitor.h"
 
 struct Visitor
 {
diff --git a/qapi/qapi-visit-core.h b/include/qapi/visitor.h
similarity index 99%
rename from qapi/qapi-visit-core.h
rename to include/qapi/visitor.h
index 602debe..1fef18c 100644
--- a/qapi/qapi-visit-core.h
+++ b/include/qapi/visitor.h
@@ -13,7 +13,7 @@
 #ifndef QAPI_VISITOR_CORE_H
 #define QAPI_VISITOR_CORE_H
 
-#include "error.h"
+#include "qapi/error.h"
 #include <stdlib.h>
 
 typedef struct GenericList
diff --git a/include/qemu/rng.h b/include/qemu/rng.h
index d094bf8..3791297 100644
--- a/include/qemu/rng.h
+++ b/include/qemu/rng.h
@@ -15,7 +15,7 @@
 
 #include "qemu/object.h"
 #include "qemu-common.h"
-#include "error.h"
+#include "qapi/error.h"
 
 #define TYPE_RNG_BACKEND "rng-backend"
 #define RNG_BACKEND(obj) \
diff --git a/include/ui/console.h b/include/ui/console.h
index 777881d..eff5cc9 100644
--- a/include/ui/console.h
+++ b/include/ui/console.h
@@ -2,12 +2,12 @@
 #define CONSOLE_H
 
 #include "ui/qemu-pixman.h"
-#include "qdict.h"
+#include "qapi/qmp/qdict.h"
 #include "notify.h"
 #include "monitor.h"
 #include "trace.h"
 #include "qapi-types.h"
-#include "error.h"
+#include "qapi/error.h"
 
 /* keyboard/mouse support */
 
diff --git a/json-lexer.c b/json-lexer.c
index 3cd3285..440df60 100644
--- a/json-lexer.c
+++ b/json-lexer.c
@@ -11,12 +11,12 @@
  *
  */
 
-#include "qstring.h"
-#include "qlist.h"
-#include "qdict.h"
-#include "qint.h"
+#include "qapi/qmp/qstring.h"
+#include "qapi/qmp/qlist.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qmp/qint.h"
 #include "qemu-common.h"
-#include "json-lexer.h"
+#include "qapi/qmp/json-lexer.h"
 
 #define MAX_TOKEN_SIZE (64ULL << 20)
 
diff --git a/json-parser.c b/json-parser.c
index 457291b..05279c1 100644
--- a/json-parser.c
+++ b/json-parser.c
@@ -14,15 +14,15 @@
 #include <stdarg.h>
 
 #include "qemu-common.h"
-#include "qstring.h"
-#include "qint.h"
-#include "qdict.h"
-#include "qlist.h"
-#include "qfloat.h"
-#include "qbool.h"
-#include "json-parser.h"
-#include "json-lexer.h"
-#include "qerror.h"
+#include "qapi/qmp/qstring.h"
+#include "qapi/qmp/qint.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qmp/qlist.h"
+#include "qapi/qmp/qfloat.h"
+#include "qapi/qmp/qbool.h"
+#include "qapi/qmp/json-parser.h"
+#include "qapi/qmp/json-lexer.h"
+#include "qapi/qmp/qerror.h"
 
 typedef struct JSONParserContext
 {
diff --git a/json-streamer.c b/json-streamer.c
index c255c78..1b2f9b1 100644
--- a/json-streamer.c
+++ b/json-streamer.c
@@ -11,12 +11,12 @@
  *
  */
 
-#include "qlist.h"
-#include "qint.h"
-#include "qdict.h"
+#include "qapi/qmp/qlist.h"
+#include "qapi/qmp/qint.h"
+#include "qapi/qmp/qdict.h"
 #include "qemu-common.h"
-#include "json-lexer.h"
-#include "json-streamer.h"
+#include "qapi/qmp/json-lexer.h"
+#include "qapi/qmp/json-streamer.h"
 
 #define MAX_TOKEN_SIZE (64ULL << 20)
 #define MAX_NESTING (1ULL << 10)
diff --git a/migration.h b/migration.h
index c3a23cc..af444d4 100644
--- a/migration.h
+++ b/migration.h
@@ -14,10 +14,10 @@
 #ifndef QEMU_MIGRATION_H
 #define QEMU_MIGRATION_H
 
-#include "qdict.h"
+#include "qapi/qmp/qdict.h"
 #include "qemu-common.h"
 #include "notify.h"
-#include "error.h"
+#include "qapi/error.h"
 #include "vmstate.h"
 #include "qapi-types.h"
 
diff --git a/monitor.c b/monitor.c
index 6546f8c..7d5c8a6 100644
--- a/monitor.c
+++ b/monitor.c
@@ -47,14 +47,14 @@
 #include "migration.h"
 #include "kvm.h"
 #include "acl.h"
-#include "qint.h"
-#include "qfloat.h"
-#include "qlist.h"
-#include "qbool.h"
-#include "qstring.h"
-#include "qjson.h"
-#include "json-streamer.h"
-#include "json-parser.h"
+#include "qapi/qmp/qint.h"
+#include "qapi/qmp/qfloat.h"
+#include "qapi/qmp/qlist.h"
+#include "qapi/qmp/qbool.h"
+#include "qapi/qmp/qstring.h"
+#include "qapi/qmp/qjson.h"
+#include "qapi/qmp/json-streamer.h"
+#include "qapi/qmp/json-parser.h"
 #include "osdep.h"
 #include "cpu.h"
 #include "trace.h"
diff --git a/monitor.h b/monitor.h
index 4595c21..7c29d9d 100644
--- a/monitor.h
+++ b/monitor.h
@@ -2,8 +2,8 @@
 #define MONITOR_H
 
 #include "qemu-common.h"
-#include "qerror.h"
-#include "qdict.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi/qmp/qdict.h"
 #include "block.h"
 #include "readline.h"
 
diff --git a/net/net.c b/net/net.c
index a4395be..ead7e96 100644
--- a/net/net.c
+++ b/net/net.c
@@ -38,7 +38,7 @@
 #include "iov.h"
 #include "qapi-visit.h"
 #include "qapi/opts-visitor.h"
-#include "qapi/qapi-dealloc-visitor.h"
+#include "qapi/dealloc-visitor.h"
 
 /* Net bridge is currently not supported for W32. */
 #if !defined(_WIN32)
diff --git a/pixman b/pixman
index a5e5179..97336fa 160000
--- a/pixman
+++ b/pixman
@@ -1 +1 @@
-Subproject commit a5e5179b5624c99c812e9bf6e7b907e355a811e8
+Subproject commit 97336fad32acf802003855cd8bd6477fa49a12e3
diff --git a/qapi/opts-visitor.c b/qapi/opts-visitor.c
index 6ccb8a1..f8149ce 100644
--- a/qapi/opts-visitor.c
+++ b/qapi/opts-visitor.c
@@ -11,11 +11,11 @@
  */
 
 #include "qemu-common.h"
-#include "qerror.h"
-#include "opts-visitor.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi/opts-visitor.h"
 #include "qemu-queue.h"
 #include "qemu-option-internal.h"
-#include "qapi-visit-impl.h"
+#include "qapi/visitor-impl.h"
 
 
 struct OptsVisitor
diff --git a/qapi/qapi-dealloc-visitor.c b/qapi/qapi-dealloc-visitor.c
index 7c44042..98f2a58 100644
--- a/qapi/qapi-dealloc-visitor.c
+++ b/qapi/qapi-dealloc-visitor.c
@@ -11,11 +11,11 @@
  *
  */
 
-#include "qapi-dealloc-visitor.h"
+#include "qapi/dealloc-visitor.h"
 #include "qemu-queue.h"
 #include "qemu-common.h"
-#include "qemu-objects.h"
-#include "qapi-visit-impl.h"
+#include "qapi/qmp/types.h"
+#include "qapi/visitor-impl.h"
 
 typedef struct StackEntry
 {
diff --git a/qapi/qapi-visit-core.c b/qapi/qapi-visit-core.c
index 4649fb7..401ee6e 100644
--- a/qapi/qapi-visit-core.c
+++ b/qapi/qapi-visit-core.c
@@ -12,9 +12,9 @@
  */
 
 #include "qemu-common.h"
-#include "qerror.h"
-#include "qapi/qapi-visit-core.h"
-#include "qapi/qapi-visit-impl.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi/visitor.h"
+#include "qapi/visitor-impl.h"
 
 void visit_start_handle(Visitor *v, void **obj, const char *kind,
                         const char *name, Error **errp)
diff --git a/qapi/qmp-dispatch.c b/qapi/qmp-dispatch.c
index 4085994..921de33 100644
--- a/qapi/qmp-dispatch.c
+++ b/qapi/qmp-dispatch.c
@@ -11,12 +11,12 @@
  *
  */
 
-#include "qemu-objects.h"
-#include "qapi/qmp-core.h"
-#include "json-parser.h"
+#include "qapi/qmp/types.h"
+#include "qapi/qmp/dispatch.h"
+#include "qapi/qmp/json-parser.h"
 #include "qapi-types.h"
-#include "error.h"
-#include "qerror.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qerror.h"
 
 static QDict *qmp_dispatch_check_obj(const QObject *request, Error **errp)
 {
diff --git a/qapi/qmp-input-visitor.c b/qapi/qmp-input-visitor.c
index 107d8d3..8087909 100644
--- a/qapi/qmp-input-visitor.c
+++ b/qapi/qmp-input-visitor.c
@@ -11,12 +11,12 @@
  *
  */
 
-#include "qmp-input-visitor.h"
-#include "qapi/qapi-visit-impl.h"
+#include "qapi/qmp-input-visitor.h"
+#include "qapi/visitor-impl.h"
 #include "qemu-queue.h"
 #include "qemu-common.h"
-#include "qemu-objects.h"
-#include "qerror.h"
+#include "qapi/qmp/types.h"
+#include "qapi/qmp/qerror.h"
 
 #define QIV_STACK_SIZE 1024
 
diff --git a/qapi/qmp-output-visitor.c b/qapi/qmp-output-visitor.c
index 2bce9d5..8015e3f 100644
--- a/qapi/qmp-output-visitor.c
+++ b/qapi/qmp-output-visitor.c
@@ -11,12 +11,12 @@
  *
  */
 
-#include "qmp-output-visitor.h"
-#include "qapi/qapi-visit-impl.h"
+#include "qapi/qmp-output-visitor.h"
+#include "qapi/visitor-impl.h"
 #include "qemu-queue.h"
 #include "qemu-common.h"
-#include "qemu-objects.h"
-#include "qerror.h"
+#include "qapi/qmp/types.h"
+#include "qapi/qmp/qerror.h"
 
 typedef struct QStackEntry
 {
diff --git a/qapi/qmp-registry.c b/qapi/qmp-registry.c
index c2c31b4..70cdbca 100644
--- a/qapi/qmp-registry.c
+++ b/qapi/qmp-registry.c
@@ -14,7 +14,7 @@
 
 #include <glib.h>
 #include <string.h>
-#include "qapi/qmp-core.h"
+#include "qapi/qmp/dispatch.h"
 
 static QTAILQ_HEAD(QmpCommandList, QmpCommand) qmp_commands =
     QTAILQ_HEAD_INITIALIZER(qmp_commands);
diff --git a/qapi/string-input-visitor.c b/qapi/string-input-visitor.c
index 497eb9a..8f1bc41 100644
--- a/qapi/string-input-visitor.c
+++ b/qapi/string-input-visitor.c
@@ -11,9 +11,9 @@
  */
 
 #include "qemu-common.h"
-#include "string-input-visitor.h"
-#include "qapi/qapi-visit-impl.h"
-#include "qerror.h"
+#include "qapi/string-input-visitor.h"
+#include "qapi/visitor-impl.h"
+#include "qapi/qmp/qerror.h"
 
 struct StringInputVisitor
 {
diff --git a/qapi/string-output-visitor.c b/qapi/string-output-visitor.c
index 34e525e..921653d 100644
--- a/qapi/string-output-visitor.c
+++ b/qapi/string-output-visitor.c
@@ -11,9 +11,9 @@
  */
 
 #include "qemu-common.h"
-#include "string-output-visitor.h"
-#include "qapi/qapi-visit-impl.h"
-#include "qerror.h"
+#include "qapi/string-output-visitor.h"
+#include "qapi/visitor-impl.h"
+#include "qapi/qmp/qerror.h"
 
 struct StringOutputVisitor
 {
diff --git a/qbool.c b/qbool.c
index 590cd71..a3d2afa 100644
--- a/qbool.c
+++ b/qbool.c
@@ -11,8 +11,8 @@
  *
  */
 
-#include "qbool.h"
-#include "qobject.h"
+#include "qapi/qmp/qbool.h"
+#include "qapi/qmp/qobject.h"
 #include "qemu-common.h"
 
 static void qbool_destroy_obj(QObject *obj);
diff --git a/qdict.c b/qdict.c
index 4bf308b..fa7a62c 100644
--- a/qdict.c
+++ b/qdict.c
@@ -10,12 +10,12 @@
  * See the COPYING.LIB file in the top-level directory.
  */
 
-#include "qint.h"
-#include "qfloat.h"
-#include "qdict.h"
-#include "qbool.h"
-#include "qstring.h"
-#include "qobject.h"
+#include "qapi/qmp/qint.h"
+#include "qapi/qmp/qfloat.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qmp/qbool.h"
+#include "qapi/qmp/qstring.h"
+#include "qapi/qmp/qobject.h"
 #include "qemu-queue.h"
 #include "qemu-common.h"
 
diff --git a/qemu-char.h b/qemu-char.h
index a121e04..3e230a1 100644
--- a/qemu-char.h
+++ b/qemu-char.h
@@ -6,8 +6,8 @@
 #include "qemu-option.h"
 #include "qemu-config.h"
 #include "qemu-aio.h"
-#include "qobject.h"
-#include "qstring.h"
+#include "qapi/qmp/qobject.h"
+#include "qapi/qmp/qstring.h"
 #include "main-loop.h"
 
 /* character device */
diff --git a/qemu-config.c b/qemu-config.c
index b4ce0d8..ceec6bd 100644
--- a/qemu-config.c
+++ b/qemu-config.c
@@ -3,7 +3,7 @@
 #include "qemu-option.h"
 #include "qemu-config.h"
 #include "hw/qdev.h"
-#include "error.h"
+#include "qapi/error.h"
 
 static QemuOptsList qemu_drive_opts = {
     .name = "drive",
diff --git a/qemu-config.h b/qemu-config.h
index eb50eca..584491a 100644
--- a/qemu-config.h
+++ b/qemu-config.h
@@ -3,7 +3,7 @@
 
 #include <stdio.h>
 #include "qemu-option.h"
-#include "error.h"
+#include "qapi/error.h"
 #include "qemu-option.h"
 
 extern QemuOptsList qemu_fsdev_opts;
diff --git a/qemu-img.c b/qemu-img.c
index c989a52..a13bc78 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -23,7 +23,7 @@
  */
 #include "qapi-visit.h"
 #include "qapi/qmp-output-visitor.h"
-#include "qjson.h"
+#include "qapi/qmp/qjson.h"
 #include "qemu-common.h"
 #include "qemu-option.h"
 #include "qemu-error.h"
diff --git a/qemu-option.c b/qemu-option.c
index 94557cf..ebd3537 100644
--- a/qemu-option.c
+++ b/qemu-option.c
@@ -28,9 +28,9 @@
 
 #include "qemu-common.h"
 #include "qemu-error.h"
-#include "qemu-objects.h"
-#include "error.h"
-#include "qerror.h"
+#include "qapi/qmp/types.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qerror.h"
 #include "qemu-option-internal.h"
 
 /*
diff --git a/qemu-option.h b/qemu-option.h
index 002dd07..ca0dc04 100644
--- a/qemu-option.h
+++ b/qemu-option.h
@@ -28,8 +28,8 @@
 
 #include <stdint.h>
 #include "qemu-queue.h"
-#include "error.h"
-#include "qdict.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qdict.h"
 
 enum QEMUOptionParType {
     OPT_FLAG,
diff --git a/qemu_socket.h b/qemu_socket.h
index 02490ad..42899fe 100644
--- a/qemu_socket.h
+++ b/qemu_socket.h
@@ -27,8 +27,8 @@ int inet_aton(const char *cp, struct in_addr *ia);
 #endif /* !_WIN32 */
 
 #include "qemu-option.h"
-#include "error.h"
-#include "qerror.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qerror.h"
 
 /* misc helpers */
 int qemu_socket(int domain, int type, int protocol);
diff --git a/qerror.c b/qerror.c
index 0818504..8c78104 100644
--- a/qerror.c
+++ b/qerror.c
@@ -11,8 +11,8 @@
  */
 
 #include "monitor.h"
-#include "qjson.h"
-#include "qerror.h"
+#include "qapi/qmp/qjson.h"
+#include "qapi/qmp/qerror.h"
 #include "qemu-common.h"
 
 static void qerror_destroy_obj(QObject *obj);
diff --git a/qfloat.c b/qfloat.c
index 98338f3..7de0992 100644
--- a/qfloat.c
+++ b/qfloat.c
@@ -11,8 +11,8 @@
  *
  */
 
-#include "qfloat.h"
-#include "qobject.h"
+#include "qapi/qmp/qfloat.h"
+#include "qapi/qmp/qobject.h"
 #include "qemu-common.h"
 
 static void qfloat_destroy_obj(QObject *obj);
diff --git a/qga/commands-posix.c b/qga/commands-posix.c
index 726930a..cedf2cc 100644
--- a/qga/commands-posix.c
+++ b/qga/commands-posix.c
@@ -17,7 +17,7 @@
 #include <sys/wait.h>
 #include "qga/guest-agent-core.h"
 #include "qga-qmp-commands.h"
-#include "qerror.h"
+#include "qapi/qmp/qerror.h"
 #include "qemu-queue.h"
 #include "host-utils.h"
 
diff --git a/qga/commands-win32.c b/qga/commands-win32.c
index 5bd8fb2..7e8ecb3 100644
--- a/qga/commands-win32.c
+++ b/qga/commands-win32.c
@@ -16,7 +16,7 @@
 #include <powrprof.h>
 #include "qga/guest-agent-core.h"
 #include "qga-qmp-commands.h"
-#include "qerror.h"
+#include "qapi/qmp/qerror.h"
 
 #ifndef SHTDN_REASON_FLAG_PLANNED
 #define SHTDN_REASON_FLAG_PLANNED 0x80000000
diff --git a/qga/commands.c b/qga/commands.c
index 46b0b08..7ffb35e 100644
--- a/qga/commands.c
+++ b/qga/commands.c
@@ -13,7 +13,7 @@
 #include <glib.h>
 #include "qga/guest-agent-core.h"
 #include "qga-qmp-commands.h"
-#include "qerror.h"
+#include "qapi/qmp/qerror.h"
 
 /* Note: in some situations, like with the fsfreeze, logging may be
  * temporarilly disabled. if it is necessary that a command be able
diff --git a/qga/guest-agent-core.h b/qga/guest-agent-core.h
index 49a7abe..8934163 100644
--- a/qga/guest-agent-core.h
+++ b/qga/guest-agent-core.h
@@ -10,7 +10,7 @@
  * This work is licensed under the terms of the GNU GPL, version 2 or later.
  * See the COPYING file in the top-level directory.
  */
-#include "qapi/qmp-core.h"
+#include "qapi/qmp/dispatch.h"
 #include "qemu-common.h"
 
 #define QGA_READ_COUNT_DEFAULT 4096
diff --git a/qga/main.c b/qga/main.c
index 9b59a52..ead58cc 100644
--- a/qga/main.c
+++ b/qga/main.c
@@ -20,15 +20,15 @@
 #include <sys/wait.h>
 #include <sys/stat.h>
 #endif
-#include "json-streamer.h"
-#include "json-parser.h"
-#include "qint.h"
-#include "qjson.h"
+#include "qapi/qmp/json-streamer.h"
+#include "qapi/qmp/json-parser.h"
+#include "qapi/qmp/qint.h"
+#include "qapi/qmp/qjson.h"
 #include "qga/guest-agent-core.h"
 #include "module.h"
 #include "signal.h"
-#include "qerror.h"
-#include "qapi/qmp-core.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi/qmp/dispatch.h"
 #include "qga/channel.h"
 #ifdef _WIN32
 #include "qga/service-win32.h"
diff --git a/qint.c b/qint.c
index ee51804..86b9b04 100644
--- a/qint.c
+++ b/qint.c
@@ -10,8 +10,8 @@
  * See the COPYING.LIB file in the top-level directory.
  */
 
-#include "qint.h"
-#include "qobject.h"
+#include "qapi/qmp/qint.h"
+#include "qapi/qmp/qobject.h"
 #include "qemu-common.h"
 
 static void qint_destroy_obj(QObject *obj);
diff --git a/qjson.c b/qjson.c
index f9c8e77..83a6b4f 100644
--- a/qjson.c
+++ b/qjson.c
@@ -11,15 +11,15 @@
  *
  */
 
-#include "json-lexer.h"
-#include "json-parser.h"
-#include "json-streamer.h"
-#include "qjson.h"
-#include "qint.h"
-#include "qlist.h"
-#include "qbool.h"
-#include "qfloat.h"
-#include "qdict.h"
+#include "qapi/qmp/json-lexer.h"
+#include "qapi/qmp/json-parser.h"
+#include "qapi/qmp/json-streamer.h"
+#include "qapi/qmp/qjson.h"
+#include "qapi/qmp/qint.h"
+#include "qapi/qmp/qlist.h"
+#include "qapi/qmp/qbool.h"
+#include "qapi/qmp/qfloat.h"
+#include "qapi/qmp/qdict.h"
 
 typedef struct JSONParsingState
 {
diff --git a/qlist.c b/qlist.c
index b48ec5b..c5ac211 100644
--- a/qlist.c
+++ b/qlist.c
@@ -10,8 +10,8 @@
  * See the COPYING.LIB file in the top-level directory.
  */
 
-#include "qlist.h"
-#include "qobject.h"
+#include "qapi/qmp/qlist.h"
+#include "qapi/qmp/qobject.h"
 #include "qemu-queue.h"
 #include "qemu-common.h"
 
diff --git a/qom/object.c b/qom/object.c
index 8d3036d..932f8b3 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -12,18 +12,18 @@
 
 #include "qemu/object.h"
 #include "qemu-common.h"
-#include "qapi/qapi-visit-core.h"
+#include "qapi/visitor.h"
 #include "qapi/string-input-visitor.h"
 #include "qapi/string-output-visitor.h"
-#include "qerror.h"
+#include "qapi/qmp/qerror.h"
 
 /* TODO: replace QObject with a simpler visitor to avoid a dependency
  * of the QOM core on QObject?  */
 #include "qemu/qom-qobject.h"
-#include "qobject.h"
-#include "qbool.h"
-#include "qint.h"
-#include "qstring.h"
+#include "qapi/qmp/qobject.h"
+#include "qapi/qmp/qbool.h"
+#include "qapi/qmp/qint.h"
+#include "qapi/qmp/qstring.h"
 
 #define MAX_INTERFACES 32
 
diff --git a/qom/qom-qobject.c b/qom/qom-qobject.c
index 0689914..f0fa652 100644
--- a/qom/qom-qobject.c
+++ b/qom/qom-qobject.c
@@ -12,7 +12,7 @@
 #include "qemu-common.h"
 #include "qemu/object.h"
 #include "qemu/qom-qobject.h"
-#include "qapi/qapi-visit-core.h"
+#include "qapi/visitor.h"
 #include "qapi/qmp-input-visitor.h"
 #include "qapi/qmp-output-visitor.h"
 
diff --git a/qstring.c b/qstring.c
index b7e12e4..5f7376c 100644
--- a/qstring.c
+++ b/qstring.c
@@ -10,8 +10,8 @@
  * See the COPYING.LIB file in the top-level directory.
  */
 
-#include "qobject.h"
-#include "qstring.h"
+#include "qapi/qmp/qobject.h"
+#include "qapi/qmp/qstring.h"
 #include "qemu-common.h"
 
 static void qstring_destroy_obj(QObject *obj);
diff --git a/scripts/qapi-commands.py b/scripts/qapi-commands.py
index 5d034c2..eccc28d 100644
--- a/scripts/qapi-commands.py
+++ b/scripts/qapi-commands.py
@@ -342,8 +342,8 @@ def gen_command_decl_prologue(header, guard, prefix=""):
 #define %(guard)s
 
 #include "%(prefix)sqapi-types.h"
-#include "qdict.h"
-#include "error.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/error.h"
 
 ''',
                  header=basename(header), guard=guardname(header), prefix=prefix)
@@ -368,13 +368,13 @@ def gen_command_def_prologue(prefix="", proxy=False):
 
 #include "qemu-common.h"
 #include "module.h"
-#include "qerror.h"
-#include "qemu-objects.h"
-#include "qapi/qmp-core.h"
-#include "qapi/qapi-visit-core.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi/qmp/types.h"
+#include "qapi/qmp/dispatch.h"
+#include "qapi/visitor.h"
 #include "qapi/qmp-output-visitor.h"
 #include "qapi/qmp-input-visitor.h"
-#include "qapi/qapi-dealloc-visitor.h"
+#include "qapi/dealloc-visitor.h"
 #include "%(prefix)sqapi-types.h"
 #include "%(prefix)sqapi-visit.h"
 
diff --git a/scripts/qapi-types.py b/scripts/qapi-types.py
index 6bc2391..9e19920 100644
--- a/scripts/qapi-types.py
+++ b/scripts/qapi-types.py
@@ -248,7 +248,7 @@ fdef.write(mcgen('''
  *
  */
 
-#include "qapi/qapi-dealloc-visitor.h"
+#include "qapi/dealloc-visitor.h"
 #include "%(prefix)sqapi-types.h"
 #include "%(prefix)sqapi-visit.h"
 
diff --git a/scripts/qapi-visit.py b/scripts/qapi-visit.py
index f1aabb3..a276540 100644
--- a/scripts/qapi-visit.py
+++ b/scripts/qapi-visit.py
@@ -322,7 +322,7 @@ fdecl.write(mcgen('''
 #ifndef %(guard)s
 #define %(guard)s
 
-#include "qapi/qapi-visit-core.h"
+#include "qapi/visitor.h"
 #include "%(prefix)sqapi-types.h"
 ''',
                   prefix=prefix, guard=guardname(h_file)))
diff --git a/stubs/arch-query-cpu-def.c b/stubs/arch-query-cpu-def.c
index 47b5246..6eca852 100644
--- a/stubs/arch-query-cpu-def.c
+++ b/stubs/arch-query-cpu-def.c
@@ -1,6 +1,6 @@
 #include "qemu-common.h"
 #include "arch_init.h"
-#include "qerror.h"
+#include "qapi/qmp/qerror.h"
 
 CpuDefinitionInfoList *arch_query_cpu_definitions(Error **errp)
 {
diff --git a/target-i386/cpu-qom.h b/target-i386/cpu-qom.h
index 5901140..3a7bc6a 100644
--- a/target-i386/cpu-qom.h
+++ b/target-i386/cpu-qom.h
@@ -22,7 +22,7 @@
 
 #include "qemu/cpu.h"
 #include "cpu.h"
-#include "error.h"
+#include "qapi/error.h"
 
 #ifdef TARGET_X86_64
 #define TYPE_X86_CPU "x86_64-cpu"
diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index e968006..150c4df 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -26,9 +26,9 @@
 
 #include "qemu-option.h"
 #include "qemu-config.h"
-#include "qerror.h"
+#include "qapi/qmp/qerror.h"
 
-#include "qapi/qapi-visit-core.h"
+#include "qapi/visitor.h"
 #include "arch_init.h"
 
 #include "hyperv.h"
diff --git a/target-openrisc/cpu.h b/target-openrisc/cpu.h
index ebb5ad3..c7b1750 100644
--- a/target-openrisc/cpu.h
+++ b/target-openrisc/cpu.h
@@ -33,7 +33,7 @@ struct OpenRISCCPU;
 #include "cpu-defs.h"
 #include "softfloat.h"
 #include "qemu/cpu.h"
-#include "error.h"
+#include "qapi/error.h"
 
 #define TYPE_OPENRISC_CPU "or32-cpu"
 
diff --git a/tests/check-qdict.c b/tests/check-qdict.c
index fc0d276..dc5f05a 100644
--- a/tests/check-qdict.c
+++ b/tests/check-qdict.c
@@ -11,9 +11,9 @@
  */
 #include <glib.h>
 
-#include "qint.h"
-#include "qdict.h"
-#include "qstring.h"
+#include "qapi/qmp/qint.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qmp/qstring.h"
 #include "qemu-common.h"
 
 /*
diff --git a/tests/check-qfloat.c b/tests/check-qfloat.c
index cdc66ea..6404ac8 100644
--- a/tests/check-qfloat.c
+++ b/tests/check-qfloat.c
@@ -12,7 +12,7 @@
  */
 #include <glib.h>
 
-#include "qfloat.h"
+#include "qapi/qmp/qfloat.h"
 #include "qemu-common.h"
 
 /*
diff --git a/tests/check-qint.c b/tests/check-qint.c
index 5a27119..8686884 100644
--- a/tests/check-qint.c
+++ b/tests/check-qint.c
@@ -11,7 +11,7 @@
  */
 #include <glib.h>
 
-#include "qint.h"
+#include "qapi/qmp/qint.h"
 #include "qemu-common.h"
 
 /*
diff --git a/tests/check-qjson.c b/tests/check-qjson.c
index 3b896f5..32ffb43 100644
--- a/tests/check-qjson.c
+++ b/tests/check-qjson.c
@@ -10,13 +10,13 @@
  */
 #include <glib.h>
 
-#include "qstring.h"
-#include "qint.h"
-#include "qdict.h"
-#include "qlist.h"
-#include "qfloat.h"
-#include "qbool.h"
-#include "qjson.h"
+#include "qapi/qmp/qstring.h"
+#include "qapi/qmp/qint.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qmp/qlist.h"
+#include "qapi/qmp/qfloat.h"
+#include "qapi/qmp/qbool.h"
+#include "qapi/qmp/qjson.h"
 
 #include "qemu-common.h"
 
diff --git a/tests/check-qlist.c b/tests/check-qlist.c
index 501ba26..b9c05d4 100644
--- a/tests/check-qlist.c
+++ b/tests/check-qlist.c
@@ -11,8 +11,8 @@
  */
 #include <glib.h>
 
-#include "qint.h"
-#include "qlist.h"
+#include "qapi/qmp/qint.h"
+#include "qapi/qmp/qlist.h"
 
 /*
  * Public Interface test-cases
diff --git a/tests/check-qstring.c b/tests/check-qstring.c
index addad6c..95dc9e3 100644
--- a/tests/check-qstring.c
+++ b/tests/check-qstring.c
@@ -11,7 +11,7 @@
  */
 #include <glib.h>
 
-#include "qstring.h"
+#include "qapi/qmp/qstring.h"
 #include "qemu-common.h"
 
 /*
diff --git a/tests/test-qmp-commands.c b/tests/test-qmp-commands.c
index dc3c507..5195f69 100644
--- a/tests/test-qmp-commands.c
+++ b/tests/test-qmp-commands.c
@@ -1,7 +1,7 @@
 #include <glib.h>
-#include "qemu-objects.h"
+#include "qapi/qmp/types.h"
 #include "test-qmp-commands.h"
-#include "qapi/qmp-core.h"
+#include "qapi/qmp/dispatch.h"
 #include "module.h"
 #include "qapi/qmp-input-visitor.h"
 #include "tests/test-qapi-types.h"
diff --git a/tests/test-qmp-input-strict.c b/tests/test-qmp-input-strict.c
index f6df8cb..19d4990 100644
--- a/tests/test-qmp-input-strict.c
+++ b/tests/test-qmp-input-strict.c
@@ -17,7 +17,7 @@
 #include "qapi/qmp-input-visitor.h"
 #include "test-qapi-types.h"
 #include "test-qapi-visit.h"
-#include "qemu-objects.h"
+#include "qapi/qmp/types.h"
 
 typedef struct TestInputVisitorData {
     QObject *obj;
diff --git a/tests/test-qmp-input-visitor.c b/tests/test-qmp-input-visitor.c
index 8f5a509..d76df8c 100644
--- a/tests/test-qmp-input-visitor.c
+++ b/tests/test-qmp-input-visitor.c
@@ -16,7 +16,7 @@
 #include "qapi/qmp-input-visitor.h"
 #include "test-qapi-types.h"
 #include "test-qapi-visit.h"
-#include "qemu-objects.h"
+#include "qapi/qmp/types.h"
 
 typedef struct TestInputVisitorData {
     QObject *obj;
diff --git a/tests/test-qmp-output-visitor.c b/tests/test-qmp-output-visitor.c
index 24a6359..7868f56 100644
--- a/tests/test-qmp-output-visitor.c
+++ b/tests/test-qmp-output-visitor.c
@@ -15,7 +15,7 @@
 #include "qapi/qmp-output-visitor.h"
 #include "test-qapi-types.h"
 #include "test-qapi-visit.h"
-#include "qemu-objects.h"
+#include "qapi/qmp/types.h"
 
 typedef struct TestOutputVisitorData {
     QmpOutputVisitor *qov;
diff --git a/tests/test-string-input-visitor.c b/tests/test-string-input-visitor.c
index 5370e32..64b10dd 100644
--- a/tests/test-string-input-visitor.c
+++ b/tests/test-string-input-visitor.c
@@ -16,7 +16,7 @@
 #include "qapi/string-input-visitor.h"
 #include "test-qapi-types.h"
 #include "test-qapi-visit.h"
-#include "qemu-objects.h"
+#include "qapi/qmp/types.h"
 
 typedef struct TestInputVisitorData {
     StringInputVisitor *siv;
diff --git a/tests/test-string-output-visitor.c b/tests/test-string-output-visitor.c
index 608f14a..238a268 100644
--- a/tests/test-string-output-visitor.c
+++ b/tests/test-string-output-visitor.c
@@ -15,7 +15,7 @@
 #include "qapi/string-output-visitor.h"
 #include "test-qapi-types.h"
 #include "test-qapi-visit.h"
-#include "qemu-objects.h"
+#include "qapi/qmp/types.h"
 
 typedef struct TestOutputVisitorData {
     StringOutputVisitor *sov;
diff --git a/tests/test-visitor-serialization.c b/tests/test-visitor-serialization.c
index b8ad16f..906011d 100644
--- a/tests/test-visitor-serialization.c
+++ b/tests/test-visitor-serialization.c
@@ -16,7 +16,7 @@
 #include <float.h>
 #include "test-qapi-types.h"
 #include "test-qapi-visit.h"
-#include "qemu-objects.h"
+#include "qapi/qmp/types.h"
 #include "qapi/qmp-input-visitor.h"
 #include "qapi/qmp-output-visitor.h"
 #include "qapi/string-input-visitor.h"
diff --git a/ui/input.c b/ui/input.c
index 58d3b47..65950af 100644
--- a/ui/input.c
+++ b/ui/input.c
@@ -25,7 +25,7 @@
 #include "sysemu.h"
 #include "monitor.h"
 #include "ui/console.h"
-#include "error.h"
+#include "qapi/error.h"
 #include "qmp-commands.h"
 #include "qapi-types.h"
 
diff --git a/ui/spice-core.c b/ui/spice-core.c
index ec925ec..0550805 100644
--- a/ui/spice-core.c
+++ b/ui/spice-core.c
@@ -29,10 +29,10 @@
 #include "qemu-x509.h"
 #include "qemu_socket.h"
 #include "qmp-commands.h"
-#include "qint.h"
-#include "qbool.h"
-#include "qstring.h"
-#include "qjson.h"
+#include "qapi/qmp/qint.h"
+#include "qapi/qmp/qbool.h"
+#include "qapi/qmp/qstring.h"
+#include "qapi/qmp/qjson.h"
 #include "notify.h"
 #include "migration.h"
 #include "monitor.h"
diff --git a/ui/vnc-enc-tight.c b/ui/vnc-enc-tight.c
index 62d0fde..09199ef 100644
--- a/ui/vnc-enc-tight.c
+++ b/ui/vnc-enc-tight.c
@@ -45,7 +45,7 @@
 #endif
 
 #include "bswap.h"
-#include "qint.h"
+#include "qapi/qmp/qint.h"
 #include "vnc.h"
 #include "vnc-enc-tight.h"
 #include "vnc-palette.h"
diff --git a/ui/vnc-palette.h b/ui/vnc-palette.h
index b82dc5d..bfc7fe6 100644
--- a/ui/vnc-palette.h
+++ b/ui/vnc-palette.h
@@ -29,7 +29,7 @@
 #ifndef VNC_PALETTE_H
 #define VNC_PALETTE_H
 
-#include "qlist.h"
+#include "qapi/qmp/qlist.h"
 #include "qemu-queue.h"
 #include <stdint.h>
 #include <stdbool.h>
diff --git a/ui/vnc.c b/ui/vnc.c
index 04afcff..dad2dde 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -30,7 +30,7 @@
 #include "qemu_socket.h"
 #include "qemu-timer.h"
 #include "acl.h"
-#include "qemu-objects.h"
+#include "qapi/qmp/types.h"
 #include "qmp-commands.h"
 #include "osdep.h"
 
diff --git a/vl.c b/vl.c
index 6713220..975767a 100644
--- a/vl.c
+++ b/vl.c
@@ -143,7 +143,7 @@ int main(int argc, char **argv)
 #include "audio/audio.h"
 #include "migration.h"
 #include "kvm.h"
-#include "qjson.h"
+#include "qapi/qmp/qjson.h"
 #include "qemu-option.h"
 #include "qemu-config.h"
 #include "qemu-options.h"
