diff --git a/projects/cmd_sync_test/src/main.cpp b/projects/cmd_sync_test/src/main.cpp
index a2057b011a4093cc5fe81a54b723e4aebae18ef9..5d1863f18e02e1bc7e00d6828fd480f0fce5c76c 100644
--- a/projects/cmd_sync_test/src/main.cpp
+++ b/projects/cmd_sync_test/src/main.cpp
@@ -18,16 +18,8 @@ int main(int argc, const char** argv) {
 		true
 	);
 
-	vkcv::CameraManager cameraManager(window, windowWidth, windowHeight);
-	uint32_t camIndex = cameraManager.addCamera();
-	uint32_t controllerIndex = cameraManager.addController(vkcv::ControllerType::PILOT, camIndex);
-	cameraManager.getCamera(camIndex).setPosition(glm::vec3(0.f, 0.f, 3.f));
-    cameraManager.getCamera(camIndex).setNearFar(0.1, 30);
-
-    uint32_t camIndex2 = cameraManager.addCamera();
-    uint32_t controllerIndex2 = cameraManager.addController(vkcv::ControllerType::TRACKBALL, camIndex2);
-    cameraManager.getCamera(camIndex2).setPosition(glm::vec3(0.f, 0.f, 3.f));
-    cameraManager.getCamera(camIndex2).setNearFar(0.1, 30);
+    vkcv::CameraManager cameraManager(window, windowWidth, windowHeight);
+    uint32_t camIndex = cameraManager.addCamera(vkcv::ControllerType::PILOT);
 
 	window.initEvents();
 
@@ -236,7 +228,8 @@ int main(int argc, const char** argv) {
 		auto end = std::chrono::system_clock::now();
 		auto deltatime = std::chrono::duration_cast<std::chrono::microseconds>(end - start);
 		start = end;
-		cameraManager.update(deltatime.count() * 0.000001);
+		cameraManager.update(std::chrono::duration<double>(deltatime).count());
+
 
 		const float sunTheta = std::chrono::duration_cast<std::chrono::milliseconds>(end - appStartTime).count() * 0.001f;
 		lightInfo.direction = glm::normalize(glm::vec3(std::cos(sunTheta), 1, std::sin(sunTheta)));
@@ -260,7 +253,7 @@ int main(int argc, const char** argv) {
 		lightInfo.lightMatrix = projectionLight * viewLight;
 		lightBuffer.fill({ lightInfo });
 
-		const glm::mat4 viewProjectionCamera = cameraManager.getActiveController().getCamera().getMVP();
+		const glm::mat4 viewProjectionCamera = cameraManager.getActiveCamera().getMVP();
 
 		mainPassMatrices.clear();
 		mvpLight.clear();
diff --git a/projects/first_mesh/src/main.cpp b/projects/first_mesh/src/main.cpp
index f444ed40bfda8f2066a87a5fe5b8836660edbf93..d7de08c80000953ddf23605d3ffb28f82d3f7790 100644
--- a/projects/first_mesh/src/main.cpp
+++ b/projects/first_mesh/src/main.cpp
@@ -142,11 +142,8 @@ int main(int argc, const char** argv) {
 	vkcv::DrawcallInfo          drawcall(renderMesh, { descriptorUsage });
 
     vkcv::CameraManager cameraManager(window, windowWidth, windowHeight);
-    uint32_t camIndex = cameraManager.addCamera();
-    uint32_t controllerIndex = cameraManager.addController(vkcv::ControllerType::PILOT, camIndex);
-
-    uint32_t camIndex2 = cameraManager.addCamera();
-    uint32_t controllerIndex2 = cameraManager.addController(vkcv::ControllerType::TRACKBALL, camIndex2);
+    uint32_t camIndex0 = cameraManager.addCamera(vkcv::ControllerType::PILOT);
+	uint32_t camIndex1 = cameraManager.addCamera(vkcv::ControllerType::TRACKBALL);
 
     auto start = std::chrono::system_clock::now();
     
@@ -172,7 +169,7 @@ int main(int argc, const char** argv) {
 		auto deltatime = end - start;
 		start = end;
 		cameraManager.update(std::chrono::duration<double>(deltatime).count());
-        glm::mat4 mvp = cameraManager.getActiveController().getCamera().getMVP();
+        glm::mat4 mvp = cameraManager.getActiveCamera().getMVP();
 
 		vkcv::PushConstantData pushConstantData((void*)&mvp, sizeof(glm::mat4));
 
diff --git a/projects/first_triangle/src/main.cpp b/projects/first_triangle/src/main.cpp
index 79de39c38adaa6e8db4c1960a99cbc4ef6f4792e..afa901986ef447c6b7077b644777bd9575e9701b 100644
--- a/projects/first_triangle/src/main.cpp
+++ b/projects/first_triangle/src/main.cpp
@@ -163,15 +163,7 @@ int main(int argc, const char** argv) {
 	const vkcv::ImageHandle swapchainInput = vkcv::ImageHandle::createSwapchainImageHandle();
 	
     vkcv::CameraManager cameraManager(window, windowWidth, windowHeight);
-    uint32_t camIndex = cameraManager.addCamera();
-    cameraManager.getCamera(camIndex).setPosition(glm::vec3(0.0f, 0.0f, 0.0f));
-    cameraManager.getCamera(camIndex).setCenter(glm::vec3(0.0f, 0.0f, -1.0f));
-    uint32_t controllerIndex = cameraManager.addController(vkcv::ControllerType::PILOT, camIndex);
-
-    uint32_t camIndex2 = cameraManager.addCamera();
-    cameraManager.getCamera(camIndex2).setPosition(glm::vec3(0.0f, 0.0f, 0.0f));
-    cameraManager.getCamera(camIndex2).setCenter(glm::vec3(0.0f, 0.0f, -1.0f));
-    uint32_t controllerIndex2 = cameraManager.addController(vkcv::ControllerType::TRACKBALL, camIndex2);
+    uint32_t camIndex = cameraManager.addCamera(vkcv::ControllerType::PILOT);
 
 	while (window.isWindowOpen())
 	{
@@ -185,8 +177,8 @@ int main(int argc, const char** argv) {
         auto end = std::chrono::system_clock::now();
         auto deltatime = end - start;
         start = end;
-        cameraManager.update(std::chrono::duration<double>(deltatime).count());
-        glm::mat4 mvp = cameraManager.getActiveController().getCamera().getMVP();
+		cameraManager.update(std::chrono::duration<double>(deltatime).count());
+        glm::mat4 mvp = cameraManager.getActiveCamera().getMVP();
 
 		vkcv::PushConstantData pushConstantData((void*)&mvp, sizeof(glm::mat4));
 		auto cmdStream = core.createCommandStream(vkcv::QueueType::Graphics);