diff --git a/src/App.php b/src/App.php
index 98d70b07b2ee61ff68dfac60b10f9b277daac578..eba86c7a897c9e209dad8233aebfd7a8edb1ab6c 100644
--- a/src/App.php
+++ b/src/App.php
@@ -4,6 +4,7 @@ namespace app;
 
 use app\Router;
 use app\base\BaseController;
+use app\controllers\LoginController;
 use app\controllers\MainController;
 use app\repositories\UserRepository;
 use app\services\UserService;
@@ -21,7 +22,9 @@ class App
 
   function init_router()
   {
-    $this->router->addRoute('/', MainController::getInstance());
+
+    $this->router->addRoute('/', MainController::class);
+    $this->router->addRoute('/login', LoginController::class);
     // $this->router->addRoute('/', new BaseController(new UserService(new UserRepository())));
   }
 }
diff --git a/src/Router.php b/src/Router.php
index 731f441d4854377221c5a6fbf6a2b483e991a05d..c81ba44f2494e8c9e05ad03fb801ada99467620c 100644
--- a/src/Router.php
+++ b/src/Router.php
@@ -11,6 +11,7 @@ class Router
 
   function addRoute(string $route, $controller)
   {
+    var_dump($controller);
     $this->routes[$route] = $controller;
   }
 
@@ -20,8 +21,12 @@ class Router
     $method = AppRequest::getMethod();
     $params = AppRequest::getParams();
 
+    var_dump($this->routes);
     if (isset($this->routes[$uri])) {
-      return $this->routes[$uri]->handle($method, $params);
+      // var_dump($this->routes[$uri]);
+      $controllerClass = $this->routes[$uri];
+      $class = new $controllerClass();
+      return $class->handle($method, $params);
     }
   }
 }
diff --git a/src/base/BaseController.php b/src/base/BaseController.php
index 5de245a9a40595ef70b43f18ac0a809ef9fa2c3a..cfc1966bec2869798af5146dcc2071a6133f2b10 100644
--- a/src/base/BaseController.php
+++ b/src/base/BaseController.php
@@ -6,9 +6,6 @@ use app\exceptions\MethodNotAllowedException;
 
 abstract class BaseController
 {
-  // ngasih tau layoutnya pake apa
-
-  protected static $instance;
   protected $service;
 
   protected function __construct($service)
@@ -16,14 +13,6 @@ abstract class BaseController
     $this->service = $service;
   }
 
-  public static function getInstance()
-  {
-    if (!isset(self::$instance)) {
-      self::$instance = new static(null);
-    }
-    return self::$instance;
-  }
-
   protected function get($urlParams)
   {
     throw new MethodNotAllowedException("Method not allowed");
diff --git a/src/controllers/LoginController.php b/src/controllers/LoginController.php
new file mode 100644
index 0000000000000000000000000000000000000000..41a6a4fbd6171ccec909c4ca2be2314e807290cb
--- /dev/null
+++ b/src/controllers/LoginController.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace app\controllers;
+
+use app\base\BaseController;
+use app\services\UserService;
+use Exception;
+
+class LoginController extends BaseController
+{
+  public function __construct()
+  {
+    parent::__construct(null);
+  }
+
+  protected function get($urlParams)
+  {
+    try {
+      parent::render($urlParams, "login", "layouts/base");
+    } catch (Exception $e) {
+      echo $e;
+    }
+  }
+  protected function post($urlParams)
+  {
+    try {
+      parent::put($urlParams);
+    } catch (Exception $e) {
+      echo $e;
+    }
+  }
+  protected function put($urlParams)
+  {
+    try {
+      parent::put($urlParams);
+    } catch (Exception $e) {
+      echo $e;
+    }
+  }
+  protected function delete($urlParams)
+  {
+    try {
+      parent::delete($urlParams);
+    } catch (Exception $e) {
+      echo $e;
+    }
+  }
+}
diff --git a/src/controllers/MainController.php b/src/controllers/MainController.php
index 5afc1913ea99b5ddc36089f4633da23471f50e76..cb4b74cf46366c352f6f2091d07810294f77a482 100644
--- a/src/controllers/MainController.php
+++ b/src/controllers/MainController.php
@@ -3,13 +3,12 @@
 namespace app\controllers;
 
 use app\base\BaseController;
-use app\exceptions\MethodNotAllowedException;
 use Exception;
 
 class MainController extends BaseController
 {
 
-  protected function __construct()
+  public function __construct()
   {
     parent::__construct(null);
   }