diff --git a/src/gfx/include/gfx/control.hpp b/src/gfx/include/gfx/control.hpp
index d6b0daa780f831499a9b90bf9b9448a14df4eda2..77369bc5afda3ac68da5bbc0b82c7b5e7bbcb638 100644
--- a/src/gfx/include/gfx/control.hpp
+++ b/src/gfx/include/gfx/control.hpp
@@ -13,20 +13,25 @@
 class Controller
 {
 protected:
+    //zrusit, pouzivat frame, camera tez
     glm::vec3 frontVec = glm::vec3(0.0f, 0.0f, -1.0f); 
     glm::vec3 upVec = glm::vec3(0.0f, 1.0f, 0.0f);
 
+
     float speed = 2.5f;
     float step = 0;
 
+    //shared ptr
     Frame &bound_frame;
 
 public:
     Controller(Frame &frame) 
     : bound_frame{frame} {}
 
-    glm::vec3 getFrontVec() { return frontVec; }
-    glm::vec3 getUpVec() { return upVec; }
+    // glm::vec3 getFrontVec() { return frontVec; }
+    // glm::vec3 getUpVec() { return upVec; }
+    virtual glm::vec3 getFrontVec() { return frontVec; }
+    virtual glm::vec3 getUpVec() { return upVec; }
     virtual void setFrontVec() = 0;
     //void setUpVec(); TO DO
 
diff --git a/src/gfx/include/gfx/frame.hpp b/src/gfx/include/gfx/frame.hpp
index d6a12b7bbb1b12dda7356b2b144e8439a13dc5ae..e934136aeea079c0dfd6620c99b0b7152f1405a6 100644
--- a/src/gfx/include/gfx/frame.hpp
+++ b/src/gfx/include/gfx/frame.hpp
@@ -20,13 +20,21 @@ public:
     {    
         setRotationQuat(rotation);
     }
-    
+
     glm::vec3 getPosition() { return positionVec; }
     glm::quat getRotation() { return rotationQuat; }
-    glm::mat4 getModelMat() { return glm::translate(glm::mat4(1.0f), positionVec); }
-    glm::mat4 getViewMat() { return glm::inverse(getModelMat()); }
+
+    // Normalize?
+    glm::vec3 getRotationAxisX() { return glm::vec3(glm::axis(rotationQuat).x, 0, 0); }
+    glm::vec3 getRotationAxisY() { return glm::vec3(0, glm::axis(rotationQuat).y, 0); }
+    glm::vec3 getRotationAxisZ() { return glm::vec3(0, 0, glm::axis(rotationQuat).z); }
+
+    glm::mat4 getTranslationMat() { return glm::translate(glm::mat4(1.0f), positionVec); }
     glm::mat4 getRotationMat() { return glm::toMat4(rotationQuat); }
 
+    glm::mat4 getModelMat() { return getTranslationMat() * getRotationMat(); }
+    glm::mat4 getViewMat() { return glm::inverse(getModelMat()); }
+    
     void setPosVec(glm::vec3 new_position) { positionVec = new_position; }
     void translatePosVec(glm::vec3 direction) { positionVec += direction; }
     void setRotationQuat(glm::vec3 new_rotation) { rotationQuat = glm::tquat(glm::radians(new_rotation)); }
diff --git a/src/gfx/include/gfx/object.hpp b/src/gfx/include/gfx/object.hpp
index fe7c027ac919400cd1aca7ad70f2772d864538c0..ffa7b9312929d626ea6623594887eec1a93477a9 100644
--- a/src/gfx/include/gfx/object.hpp
+++ b/src/gfx/include/gfx/object.hpp
@@ -11,10 +11,12 @@
 
 class Object
 {
+    // vectory do bufferu
     std::vector<float> vertices;
     std::vector<unsigned int> indices;
     std::vector<float> normals;
 
+    //shared ptr, VBO do VAO
     VAO _VAO;
     VBO _VBO_vertex;
     VBO _VBO_normal;
diff --git a/src/gfx/src/control.cpp b/src/gfx/src/control.cpp
index 902c04337b30962c22a9983984cb86255a17fd5e..d89f6d7c46429b02963351a2a235921842030f7a 100644
--- a/src/gfx/src/control.cpp
+++ b/src/gfx/src/control.cpp
@@ -27,27 +27,27 @@ void Controller::move(const std::unordered_set<std::string> &pressed_keys)
 
 void Controller::forward()
 {
-    bound_frame.translatePosVec(step * frontVec);
+    bound_frame.translatePosVec(step * getFrontVec());
 }
 void Controller::backward()
 {
-    bound_frame.translatePosVec(-step * frontVec);
+    bound_frame.translatePosVec(-step * getFrontVec());
 }
 void Controller::left()
 {
-    bound_frame.translatePosVec(-step * glm::normalize(glm::cross(frontVec, upVec)));
+    bound_frame.translatePosVec(-step * glm::normalize(glm::cross(getFrontVec(), getUpVec())));
 }
 void Controller::right()
 {
-    bound_frame.translatePosVec(step * glm::normalize(glm::cross(frontVec, upVec)));
+    bound_frame.translatePosVec(step * glm::normalize(glm::cross(getFrontVec(), getUpVec())));
 }
 void Controller::up()
 {
-    bound_frame.translatePosVec(step * upVec);
+    bound_frame.translatePosVec(step * getUpVec());
 }
 void Controller::down()
 {
-    bound_frame.translatePosVec(-step * upVec);
+    bound_frame.translatePosVec(-step * getUpVec());
 }
 
 void Controller::rotate(glm::vec3 rotational_difference)
diff --git a/src/gfx/src/obj_control.cpp b/src/gfx/src/obj_control.cpp
index d167cea5fa320cf0ffafa60c5ab6ce3062fb946f..16ef9f43b1358d1b1e687033c07a9ac708c2bc81 100644
--- a/src/gfx/src/obj_control.cpp
+++ b/src/gfx/src/obj_control.cpp
@@ -2,5 +2,5 @@
 
 void ObjectController::setFrontVec() // temporary implementation
 {
-    frontVec = glm::vec3(0.0f, 0.0f, -1.0f);
+    //frontVec = glm::vec3(0.0f, 0.0f, -1.0f);
 }
\ No newline at end of file
diff --git a/src/gfx/src/render.cpp b/src/gfx/src/render.cpp
index 72e62525b9446a67dc0202189ca1ab8ac9e3ff42..e2967cc7861890847dac8530b3c62f38636e800f 100644
--- a/src/gfx/src/render.cpp
+++ b/src/gfx/src/render.cpp
@@ -102,7 +102,7 @@ void gfx_draw(Shader &myShader,
     /* ---------------------------------------------------------------- */
 
     // DRAW CUBE
-    glm::mat4 model = obj_frame.getModelMat() * obj_frame.getRotationMat();
+    glm::mat4 model = obj_frame.getModelMat();
 
     glm::mat4 view;
     view = glm::lookAt(cam_frame.getPosition(), cam_frame.getPosition() + cam_control.getFrontVec(), cam_control.getUpVec());