diff --git a/targets/x86-64 b/targets/x86-64
index 3ef1251580a5e372fac26815b1232ce8c8ff2882..28de8543f0a817dbc2dd7c3601bc339dbae5e1cb 100644
--- a/targets/x86-64
+++ b/targets/x86-64
@@ -1,6 +1,9 @@
 include 'x86.inc'
 
-factory_image('x86-64', 'combined-squashfs', '.img.gz')
-factory_image('x86-64', 'combined-squashfs', '.vdi')
-factory_image('x86-64', 'combined-squashfs', '.vmdk')
-sysupgrade_image('x86-64', 'combined-squashfs', '.img.gz')
+packages {
+        'kmod-gpio-nct5104d',
+        'kmod-leds-gpio',
+        'kmod-leds-apu2',
+}
+
+device('x86-64', 'generic')
diff --git a/targets/x86-generic b/targets/x86-generic
index 57b55f4a090dcf1f29250bbd28e04cd4206d8d68..3bbe72ec9343703061c2fc197923ec3cebdf8110 100644
--- a/targets/x86-generic
+++ b/targets/x86-generic
@@ -1,9 +1,12 @@
 include 'x86.inc'
 
-factory_image('x86-generic', 'combined-squashfs', '.img.gz')
-factory_image('x86-generic', 'combined-squashfs', '.vdi')
-factory_image('x86-generic', 'combined-squashfs', '.vmdk')
-sysupgrade_image('x86-generic', 'combined-squashfs', '.img.gz', {
+packages {
+        'kmod-gpio-nct5104d',
+        'kmod-leds-gpio',
+        'kmod-leds-apu2',
+}
+
+device('x86-generic', 'generic', {
 	manifest_aliases = {
 		'x86-kvm',
 		'x86-xen_domu',
diff --git a/targets/x86-geode b/targets/x86-geode
index 57519eb1b69d1f3cded0fb72bc1b171cc85e891b..146cfce9f4a2b9746e03a4687eb9ffb9f7d40890 100644
--- a/targets/x86-geode
+++ b/targets/x86-geode
@@ -18,5 +18,9 @@ packages {
 	'kmod-via-velocity',
 }
 
-factory_image('x86-geode', 'combined-squashfs', '.img.gz')
-sysupgrade_image('x86-geode', 'combined-squashfs', '.img.gz')
+device('x86-geode', 'generic', {
+	factory = '-squashfs-combined',
+	factory_ext = '.img.gz',
+	sysupgrade = '-squashfs-combined',
+	sysupgrade_ext = '.img.gz',
+})
diff --git a/targets/x86-legacy b/targets/x86-legacy
index 79667dad2a8cbb40a0b235ddd683b710181e5181..402d7e21950f72b032e4160456b0c7ebb1d37587 100644
--- a/targets/x86-legacy
+++ b/targets/x86-legacy
@@ -1,10 +1,3 @@
 include 'x86.inc'
 
-packages {
-        '-kmod-gpio-nct5104d',
-        '-kmod-leds-gpio',
-        '-kmod-leds-apu2',
-}
-
-factory_image('x86-legacy', 'combined-squashfs', '.img.gz')
-sysupgrade_image('x86-legacy', 'combined-squashfs', '.img.gz')
+device('x86-legacy', 'generic')
diff --git a/targets/x86.inc b/targets/x86.inc
index c6037c688f1fa683acc25e8dd927ce3a6b9987bf..286d2a07791f1f296a76db93e6fef2f9b26f53b9 100644
--- a/targets/x86.inc
+++ b/targets/x86.inc
@@ -22,10 +22,7 @@ packages {
 	'kmod-via-velocity',
 	'kmod-ath9k',
 	'kmod-gpio-button-hotplug',
-	'kmod-gpio-nct5104d',
 	'kmod-hwmon-core',
-	'kmod-leds-gpio',
-	'kmod-leds-apu2',
 	'kmod-sp5100_tco',
 	'kmod-usb-core',
 	'kmod-usb-ohci',
@@ -42,3 +39,10 @@ packages {
 	'kmod-mt7603',
 	'kmod-mt7615e',
 }
+
+defaults {
+	factory = '-squashfs-combined',
+	factory_ext = {'.img.gz', '.vmdk', '.vdi'},
+	sysupgrade = '-squashfs-combined',
+	sysupgrade_ext = '.img.gz',
+}