diff --git a/liblava/base/device.cpp b/liblava/base/device.cpp
index ee79c62573b10dcc83614282a9041f649be1631a..8b39724a5c9ff84578a83ba9e8f83821f004b384 100644
--- a/liblava/base/device.cpp
+++ b/liblava/base/device.cpp
@@ -53,6 +53,7 @@ namespace lava {
         graphics_queue_list.clear();
         compute_queue_list.clear();
         transfer_queue_list.clear();
+        queue_list.clear();
 
         index_map queue_family_map;
 
@@ -73,6 +74,8 @@ namespace lava {
                     compute_queue_list.push_back({ queue, queue_create_info_list[i].queueFamilyIndex });
                 if (param.queue_info_list[i].flags & VK_QUEUE_TRANSFER_BIT)
                     transfer_queue_list.push_back({ queue, queue_create_info_list[i].queueFamilyIndex });
+
+                queue_list.push_back({ queue, queue_create_info_list[i].queueFamilyIndex });
             }
         }
 
@@ -86,6 +89,7 @@ namespace lava {
         graphics_queue_list.clear();
         compute_queue_list.clear();
         transfer_queue_list.clear();
+        queue_list.clear();
 
         call().vkDestroyDescriptorPool(vk_device, descriptor_pool, memory::alloc());
         descriptor_pool = 0;
diff --git a/liblava/base/device.hpp b/liblava/base/device.hpp
index aa1aa49e6b568feb4fbdeca6a87dda1380331008..9da9193d68b963a87d4d15dccbfe79d5362788cb 100644
--- a/liblava/base/device.hpp
+++ b/liblava/base/device.hpp
@@ -109,6 +109,14 @@ namespace lava {
             return get_transfer_queues();
         }
 
+        queue::list const& get_queues() const {
+            return queue_list;
+        }
+
+        queue::list const& queues() const {
+            return get_queues();
+        }
+
         VkDevice get() const {
             return vk_device;
         }
@@ -155,6 +163,7 @@ namespace lava {
         device::queue::list graphics_queue_list;
         device::queue::list compute_queue_list;
         device::queue::list transfer_queue_list;
+        device::queue::list queue_list;
 
         VkPhysicalDeviceFeatures features;