diff --git a/src/controls/include/controls/control.hpp b/src/controls/include/controls/control.hpp
index 56ac21a428ebb5a12fcc706118e86aa238e195bc..6d15654b9154cf7274d40f504e2da916d936ce40 100644
--- a/src/controls/include/controls/control.hpp
+++ b/src/controls/include/controls/control.hpp
@@ -33,6 +33,14 @@ public:
     void setSpeed(float _speed);
 
     void teleport(glm::vec3 new_position) { bound_frame->setPosVec(new_position); }
+    void setRotation(glm::vec3 rotation) { bound_frame->setRotationQuat(rotation); }
+    void setRotation(glm::quat rotation) { bound_frame->setRotationQuat(rotation); }
+
+    void setPos(glm::vec3 position) { bound_frame->setPosVec(position); }
+    void setPos(float x, float y, float z) { bound_frame->setPosVec(glm::vec3(x, y, z)); }
+    void setPosX(float coord) { bound_frame->setPosVec(glm::vec3(coord, bound_frame->getPosition().y, bound_frame->getPosition().z)); }
+    void setPosY(float coord) { bound_frame->setPosVec(glm::vec3(bound_frame->getPosition().x, coord, bound_frame->getPosition().z)); }
+    void setPosZ(float coord) { bound_frame->setPosVec(glm::vec3(bound_frame->getPosition().x, bound_frame->getPosition().y, coord)); }    
 
     void keyboardMove(const std::unordered_set<std::string> &pressed_keys);
     void forward();
diff --git a/src/edit/include/edit/editor.hpp b/src/edit/include/edit/editor.hpp
index f10828edeeb87c6983d204d95727c07561d4653e..bdff623a5a6fadb699030a77fdd6c75388891b01 100644
--- a/src/edit/include/edit/editor.hpp
+++ b/src/edit/include/edit/editor.hpp
@@ -29,6 +29,12 @@ class Level
 public:
     std::uint8_t getActiveIndex() const { return active; }
     float getActive() const { return axes[active]; }
+    float getX() { return axes[0]; }
+    float getY() { return axes[1]; }
+    float getZ() { return axes[2]; }
+    std::array<float, 3> getAll() const { return axes; }
+
+    void setActiveIndex(std::uint8_t index) { active = index; }
     void setActiveX() { active = 0; }
     void setActiveY() { active = 1; }
     void setActiveZ() { active = 2; }
@@ -71,6 +77,7 @@ public:
     void setPrevPlaneIntersect(glm::vec3 _prev_plane_intersect) { prev_plane_intersect = _prev_plane_intersect; }
 
     void doObjectAction(scene_ptr scene, ctrlhub_ptr controls);
+    void updateCamera(scene_ptr scene, ctrlhub_ptr controls);
 
     void selectObject(scene_ptr scene, ctrlhub_ptr controls);
     void rotateObject(scene_ptr scene, ctrlhub_ptr controls);
diff --git a/src/edit/src/editor.cpp b/src/edit/src/editor.cpp
index 0c61122d8ea943bf6e8adf36909538c48ca1b3e2..44c7653a108cfee466ee204f345d57326fd43180 100644
--- a/src/edit/src/editor.cpp
+++ b/src/edit/src/editor.cpp
@@ -24,6 +24,33 @@ void Editor::doObjectAction(scene_ptr scene, ctrlhub_ptr controls)
     }
 }
 
+void Editor::updateCamera(scene_ptr scene, ctrlhub_ptr controls)
+{
+    if (!keyboard.just_pressed().contains("I") 
+        && !keyboard.just_pressed().contains("K") 
+        && !keyboard.just_pressed().contains("L") )
+        return;
+
+    std::array<float, 3> levels = build_level.getAll();
+    std::array<glm::vec3, 3> rotations = { glm::vec3(0.0f, 90.0f, 0.0f), // L(x-depth)
+                                           glm::vec3(-89.0f, 0.0f, 0.0f), // I (y-depth) // FIX - should be -90.0f
+                                           glm::vec3(0.0f, 00.0f, 0.0f)  }; // K (z-depth)
+    std::uint8_t new_active = 0;
+
+    if (keyboard.just_pressed().contains("I"))
+        new_active = 1;
+
+    if (keyboard.just_pressed().contains("K"))
+        new_active = 2;
+
+    if (keyboard.just_pressed().contains("L"))
+        new_active = 0;
+
+    levels[new_active] += 5.0f;
+    build_level.setActiveIndex(new_active);
+    controls->getActiveCamCtrl()->setRotation(rotations[new_active]);
+    controls->getActiveCamCtrl()->setPos(levels[0], levels[1], levels[2]);
+}
 void Editor::selectObject(scene_ptr scene, ctrlhub_ptr controls)
 {
     if (!mouse.just_released().contains("MouseLeft"))
diff --git a/src/studio/src/simulator.cpp b/src/studio/src/simulator.cpp
index 7fdb7ffd85a75c7e6f57ea5cbd509e7fc01f1d89..e6e3d1b43d8b22b66a4eb0909545ac88ea4175ec 100644
--- a/src/studio/src/simulator.cpp
+++ b/src/studio/src/simulator.cpp
@@ -37,6 +37,7 @@ void Simulator::update()
     controls->processInput(scene, keyboard(), timer(), window());
     controls->processMouse(mouse(), window(), editor->getEditorRunning()); 
 
+    editor->updateCamera(scene, controls);
     editor->doObjectAction(scene, controls);
 
     /* Rotation around x-axis demo */