diff --git a/CMakeLists.txt b/CMakeLists.txt
index efda2fd..cb32e37 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -66,8 +66,8 @@ add_executable(${CMAKE_PROJECT_NAME}
         engine/io/Mouse.h
         engine/io/SoundController.cpp
         engine/io/SoundController.h
-        engine/utils/CameraController.cpp
-        engine/utils/CameraController.h
+        engine/utils/ObjectController.cpp
+        engine/utils/ObjectController.h
         engine/animation/Animation.h
         engine/animation/Timeline.cpp
         engine/animation/Timeline.h
diff --git a/engine/utils/CameraController.cpp b/engine/utils/CameraController.cpp
deleted file mode 100644
index 116ef18..0000000
--- a/engine/utils/CameraController.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// Created by Иван Ильин on 22.01.2022.
-//
-
-#include "CameraController.h"
-#include "Time.h"
-#include "../math/Vec2D.h"
-
-CameraController::CameraController(std::shared_ptr<Camera> camera,
-                                   std::shared_ptr<Keyboard> keyboard,
-                                   std::shared_ptr<Mouse> mouse) :
-                                   _camera(std::move(camera)),
-                                   _keyboard(std::move(keyboard)),
-                                   _mouse(std::move(mouse)){
-}
-
-void CameraController::update() {
-    // Left and right
-    if (Keyboard::isKeyPressed(sf::Keyboard::A))
-        _camera->translate(_camera->left()*Time::deltaTime()*5.0);
-
-    if (Keyboard::isKeyPressed(sf::Keyboard::D))
-        _camera->translate(-_camera->left()*Time::deltaTime()*5.0);
-
-    // Forward and backward
-    if (Keyboard::isKeyPressed(sf::Keyboard::W))
-        _camera->translate(_camera->lookAt()*Time::deltaTime()*5.0);
-
-    if (Keyboard::isKeyPressed(sf::Keyboard::S))
-        _camera->translate(-_camera->lookAt()*Time::deltaTime()*5.0);
-
-    if (Keyboard::isKeyPressed(sf::Keyboard::LShift))
-        _camera->translate(Vec3D{0.0, -Time::deltaTime()*5.0, 0});
-
-    if (Keyboard::isKeyPressed(sf::Keyboard::Space))
-        _camera->translate(Vec3D{0.0, Time::deltaTime()*5.0, 0});
-
-    // Mouse movement
-    Vec2D disp = _mouse->getMouseDisplacement();
-
-    _camera->rotate(Vec3D{0, -disp.x()/1000.0, 0});
-    _camera->rotateLeft(disp.y()/1000.0);
-}
\ No newline at end of file
diff --git a/engine/utils/CameraController.h b/engine/utils/CameraController.h
deleted file mode 100644
index e0fbe8b..0000000
--- a/engine/utils/CameraController.h
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// Created by Иван Ильин on 22.01.2022.
-//
-
-#ifndef SHOOTER_CAMERACONTROLLER_H
-#define SHOOTER_CAMERACONTROLLER_H
-
-#include "../Camera.h"
-#include "../io/Keyboard.h"
-#include "../io/Mouse.h"
-
-class CameraController {
-private:
-    std::shared_ptr<Camera> _camera;
-    std::shared_ptr<Keyboard> _keyboard;
-    std::shared_ptr<Mouse> _mouse;
-
-public:
-    CameraController(std::shared_ptr<Camera> camera,
-                     std::shared_ptr<Keyboard> keyboard,
-                     std::shared_ptr<Mouse> mouse);
-
-    void update();
-};
-
-#endif //SHOOTER_CAMERACONTROLLER_H
diff --git a/engine/utils/ObjectController.cpp b/engine/utils/ObjectController.cpp
new file mode 100644
index 0000000..d9ca9ac
--- /dev/null
+++ b/engine/utils/ObjectController.cpp
@@ -0,0 +1,41 @@
+//
+// Created by Иван Ильин on 22.01.2022.
+//
+
+#include "ObjectController.h"
+#include "Time.h"
+#include "../math/Vec2D.h"
+
+ObjectController::ObjectController(std::shared_ptr<Object> object,
+                                   std::shared_ptr<Mouse> mouse) :
+                                   _object(std::move(object)),
+                                   _mouse(std::move(mouse)){
+}
+
+void ObjectController::update() {
+    // Left and right
+    if (Keyboard::isKeyPressed(sf::Keyboard::A))
+        _object->translate(_object->left()*Time::deltaTime()*5.0);
+
+    if (Keyboard::isKeyPressed(sf::Keyboard::D))
+        _object->translate(-_object->left()*Time::deltaTime()*5.0);
+
+    // Forward and backward
+    if (Keyboard::isKeyPressed(sf::Keyboard::W))
+        _object->translate(_object->lookAt()*Time::deltaTime()*5.0);
+
+    if (Keyboard::isKeyPressed(sf::Keyboard::S))
+        _object->translate(-_object->lookAt()*Time::deltaTime()*5.0);
+
+    if (Keyboard::isKeyPressed(sf::Keyboard::LShift))
+        _object->translate(Vec3D{0.0, -Time::deltaTime()*5.0, 0});
+
+    if (Keyboard::isKeyPressed(sf::Keyboard::Space))
+        _object->translate(Vec3D{0.0, Time::deltaTime()*5.0, 0});
+
+    // Mouse movement
+    Vec2D disp = _mouse->getMouseDisplacement();
+
+    _object->rotate(Vec3D{0, -disp.x()/1000.0, 0});
+    _object->rotateLeft(disp.y()/1000.0);
+}
\ No newline at end of file
diff --git a/engine/utils/ObjectController.h b/engine/utils/ObjectController.h
new file mode 100644
index 0000000..6371bd6
--- /dev/null
+++ b/engine/utils/ObjectController.h
@@ -0,0 +1,24 @@
+//
+// Created by Иван Ильин on 22.01.2022.
+//
+
+#ifndef SHOOTER_OBJECTCONTROLLER_H
+#define SHOOTER_OBJECTCONTROLLER_H
+
+#include "../Object.h"
+#include "../io/Keyboard.h"
+#include "../io/Mouse.h"
+
+class ObjectController {
+private:
+    std::shared_ptr<Object> _object;
+    std::shared_ptr<Mouse> _mouse;
+
+public:
+    ObjectController(std::shared_ptr<Object> object,
+                     std::shared_ptr<Mouse> mouse);
+
+    void update();
+};
+
+#endif //SHOOTER_OBJECTCONTROLLER_H