diff --git a/projects/first_triangle/src/main.cpp b/projects/first_triangle/src/main.cpp
index 6b99b0e222ac732974420fbcac9e6a629e20c3ec..542bec6b20a7bb5d52fb5c7e2511e9f0dc6f3de5 100644
--- a/projects/first_triangle/src/main.cpp
+++ b/projects/first_triangle/src/main.cpp
@@ -8,9 +8,9 @@ int main(int argc, const char** argv) {
 			VK_MAKE_VERSION(0, 0, 1)
 	);
 
-	const vk::Instance instance = context.getInstance();
-	const vk::PhysicalDevice physicalDevice = context.getPhysicalDevice();
-	const vk::Device device = context.getDevice();
+	const vk::Instance& instance = context.getInstance();
+	const vk::PhysicalDevice& physicalDevice = context.getPhysicalDevice();
+	const vk::Device& device = context.getDevice();
 
 	std::cout << "Physical device: " << physicalDevice.getProperties().deviceName << std::endl;
 
diff --git a/src/vkcv/Context.cpp b/src/vkcv/Context.cpp
index e77bae20585239be2efdacb03f00bd94240da495..a1c54c0804318ca946a793f5abf10e4b15a2030b 100644
--- a/src/vkcv/Context.cpp
+++ b/src/vkcv/Context.cpp
@@ -53,15 +53,15 @@ namespace vkcv {
 		return Context(instance, physicalDevice, device);
 	}
 
-	vk::Instance Context::getInstance() {
+	const vk::Instance& Context::getInstance() const {
 		return m_instance;
 	}
 
-	vk::PhysicalDevice Context::getPhysicalDevice() {
+	const vk::PhysicalDevice& Context::getPhysicalDevice() const {
 		return m_physicalDevice;
 	}
 
-	vk::Device Context::getDevice() {
+	const vk::Device& Context::getDevice() const {
 		return m_device;
 	}
 }
diff --git a/src/vkcv/Context.hpp b/src/vkcv/Context.hpp
index 116d5f5abe7a599f12d911f58589035dac1c17bc..c6b365a44eee26d4691c677f5e0525e6b5b13c2a 100644
--- a/src/vkcv/Context.hpp
+++ b/src/vkcv/Context.hpp
@@ -16,9 +16,14 @@ namespace vkcv {
 		Context(const Context &other) = delete;
 		Context(Context &&other) = default;
 
-		vk::Instance getInstance();
-		vk::PhysicalDevice getPhysicalDevice();
-		vk::Device getDevice();
+		[[nodiscard]]
+		const vk::Instance& getInstance() const;
+		
+		[[nodiscard]]
+		const vk::PhysicalDevice& getPhysicalDevice() const;
+		
+		[[nodiscard]]
+		const vk::Device& getDevice() const;
 
 		virtual ~Context();