diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 1d4a3d8..093ecc3 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,5 +1,5 @@
 {
-  "action-hints.nvim": { "branch": "main", "commit": "ab10fef255dd4bc933c92d8f9969828f2f856e71" },
+  "action-hints.nvim": { "branch": "main", "commit": "ac72c23c2e901084e0c08a743942d8d7b8c560de" },
   "barbecue": { "branch": "main", "commit": "cd7e7da622d68136e13721865b4d919efd6325ed" },
   "blink.download": { "branch": "main", "commit": "d95072328fb8293cc62c2574b0de2026e74d6f92" },
   "blink.pairs": { "branch": "main", "commit": "903cddb0ba5b47f48ebb43574ba202c88e0dab07" },
@@ -9,25 +9,25 @@
   "cmp-under-comparator": { "branch": "master", "commit": "6857f10272c3cfe930cece2afa2406e1385bfef8" },
   "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
   "comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
-  "conform.nvim": { "branch": "master", "commit": "db8a4a9edb217067b1d7a2e0362c74bfe9cc944d" },
+  "conform.nvim": { "branch": "master", "commit": "f9ef25a7ef00267b7d13bfc00b0dea22d78702d5" },
   "cpsm": { "branch": "master", "commit": "1a5fc1b6169bb80c29b0b986130c4f3f1a9ed82e" },
-  "csvview.nvim": { "branch": "main", "commit": "02edaf830c2225ec39b889173f09cbbf89da3b87" },
+  "csvview.nvim": { "branch": "main", "commit": "7dcb6aa2965a1d5555d4940ed0c9c2f0e173ecdb" },
   "diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
   "fterm.nvim": { "branch": "master", "commit": "d1320892cc2ebab472935242d9d992a2c9570180" },
   "fzy-lua-native": { "branch": "master", "commit": "9d720745d5c2fb563c0d86c17d77612a3519c506" },
-  "git-blame.nvim": { "branch": "master", "commit": "2883a7460f611c2705b23f12d58d398d5ce6ec00" },
+  "git-blame.nvim": { "branch": "master", "commit": "b12da2156ec1c3f53f42c129201ff0bfed69c86e" },
   "gitsigns.nvim": { "branch": "main", "commit": "7010000889bfb6c26065e0b0f7f1e6aa9163edd9" },
   "goto-preview": { "branch": "main", "commit": "cd49bcf6a853512fce46f035fe95469e5b2d26c7" },
-  "image.nvim": { "branch": "master", "commit": "6ffafab2e98b5bda46bf227055aa84b90add8cdc" },
+  "image.nvim": { "branch": "master", "commit": "2e2d28b7734b5efdfc1219f4da8a46c761587bc2" },
   "indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
   "jupytext.nvim": { "branch": "main", "commit": "c8baf3ad344c59b3abd461ecc17fc16ec44d0f7b" },
   "knap": { "branch": "main", "commit": "7db44d0bb760120142cc1e8f43e44976de59c2f6" },
   "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
   "leap.nvim": { "branch": "main", "commit": "346a16ef942635a8ca5ff92e603d07e7e8be6cbe" },
   "logger.nvim": { "branch": "main", "commit": "63dd10c9b9a159fd6cfe08435d9606384ff103c5" },
-  "lsp_signature.nvim": { "branch": "master", "commit": "8b681c86b0bd7f932cd91987983d91497e43d83f" },
+  "lsp_signature.nvim": { "branch": "master", "commit": "b58cca003d1d3311213d6db0352f58d8e57bfff0" },
   "lspkind-nvim": { "branch": "master", "commit": "d79a1c3299ad0ef94e255d045bed9fa26025dab6" },
-  "lualine.nvim": { "branch": "master", "commit": "b8b60c7f1d0d95ad74ee215b2291280b30482476" },
+  "lualine.nvim": { "branch": "master", "commit": "1517caa8fff05e4b4999857319d3b0609a7f57fa" },
   "luasnip": { "branch": "master", "commit": "03c8e67eb7293c404845b3982db895d59c0d1538" },
   "mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" },
   "mason-null-ls.nvim": { "branch": "main", "commit": "de19726de7260c68d94691afb057fa73d3cc53e7" },
@@ -37,28 +37,27 @@
   "none-ls.nvim": { "branch": "main", "commit": "a117163db44c256d53c3be8717f3e1a2a28e6299" },
   "nvim-cmp": { "branch": "main", "commit": "1e1900b0769324a9675ef85b38f99cca29e203b3" },
   "nvim-colorizer.lua": { "branch": "master", "commit": "6ed09146ee637006367b5e225be6208a1ea02579" },
-  "nvim-docs-view": { "branch": "master", "commit": "1b97f8f954d74c46061bf289b6cea9232484c12c" },
-  "nvim-hlslens": { "branch": "main", "commit": "e22f8448b571b56d6140427e27e02406bcf4e059" },
-  "nvim-lspconfig": { "branch": "master", "commit": "2574ad38c6ee4f0bef3a1ca305cd5df627a52bb3" },
+  "nvim-docs-view": { "branch": "master", "commit": "5676cc094d426edd39134b1eefca2cab441cca8a" },
+  "nvim-hlslens": { "branch": "main", "commit": "00b9c7359eaaa4804a9be943ea46bc64e6d2e065" },
+  "nvim-lspconfig": { "branch": "master", "commit": "85e0dd26b710e834a105d679200d01e326a3d2b0" },
   "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
   "nvim-scrollbar": { "branch": "main", "commit": "6994eb9f73d5fdc36ee2c8717940e8c853e51a49" },
-  "nvim-surround": { "branch": "main", "commit": "6c54643ef42016b744888b06d2381abd23f9b7ea" },
-  "nvim-tree.lua": { "branch": "master", "commit": "c09ff35de503a41fa62465c6b4ae72d96e7a7ce4" },
-  "nvim-treesitter": { "branch": "master", "commit": "d76a8b6e1b67fd3bcffec4a5d45fd9dee4dbbee8" },
+  "nvim-surround": { "branch": "main", "commit": "caf6f633d4d77a29b6e265b560c5a035d171a913" },
+  "nvim-tree.lua": { "branch": "master", "commit": "44d9b58f11d5a426c297aafd0be1c9d45617a849" },
+  "nvim-treesitter": { "branch": "master", "commit": "a3315b8c7f0f1ddaa30b24bcc0af0d31024dfb6a" },
   "nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" },
-  "nvim-ts-rainbow": { "branch": "master", "commit": "ef95c15a935f97c65a80e48e12fe72d49aacf9b9" },
   "nvim-ufo": { "branch": "main", "commit": "a52c92c3bbaa10f0c9b547a50adaa8c7d8b29f94" },
   "nvim-web-devicons": { "branch": "master", "commit": "4c3a5848ee0b09ecdea73adcd2a689190aeb728c" },
   "nvim-yarp": { "branch": "master", "commit": "bb5f5e038bfe119d3b777845a76b0b919b35ebc8" },
-  "otter.nvim": { "branch": "main", "commit": "16fc46671b5c4e059e9f3a06d593d34d30e571c9" },
+  "otter.nvim": { "branch": "main", "commit": "622816aac66933352e20e4d5d01993cd270d6fb0" },
+  "outline.nvim": { "branch": "main", "commit": "ae473fb51b7b6086de0876328c81a63f9c3ecfef" },
   "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
   "popup-menu.nvim": { "branch": "master", "commit": "b618bd0c824a20417d845fa0022327228e6988a2" },
   "projections.nvim": { "branch": "pre_release", "commit": "889914169fa1f5c00fb8659653b5a8330fb223e6" },
   "promise-async": { "branch": "main", "commit": "119e8961014c9bfaf1487bf3c2a393d254f337e2" },
-  "quarto-nvim": { "branch": "main", "commit": "7fd12a6c57d4575cadbf4f97552b616d62ac7e03" },
+  "quarto-nvim": { "branch": "main", "commit": "3c25bf3e9afff07c4396d98f0b2c39bc994037ad" },
   "renamer.nvim": { "branch": "master", "commit": "1614d466df53899f11dd5395eaac3c09a275c384" },
   "spelunker.vim": { "branch": "master", "commit": "a0bc530f62798bbe053905555a4aa9ed713485eb" },
-  "symbols-outline.nvim": { "branch": "master", "commit": "564ee65dfc9024bdde73a6621820866987cbb256" },
   "tabular": { "branch": "master", "commit": "12437cd1b53488e24936ec4b091c9324cafee311" },
   "tccs.nvim": { "branch": "master", "commit": "e50c1504286b5ee2700961a600f26c9b338bd042" },
   "telescope.nvim": { "branch": "master", "commit": "776b509f80dd49d8205b9b0d94485568236d1192" },
diff --git a/.config/nvim/lua/keymap.lua b/.config/nvim/lua/keymap.lua
index 642c0ee..96c1c0c 100644
--- a/.config/nvim/lua/keymap.lua
+++ b/.config/nvim/lua/keymap.lua
@@ -52,7 +52,7 @@ wk.add({
   {mode = "n", "<leader>sa", ":%S//g<Left><Left>", desc = "Substitute: free form", noremap = true},
   {mode = "n", "<leader>ss", ":%S/\\<<C-r><C-w>\\>//g<Left><Left>", desc = "Substitute: word under cursor", noremap = true},
   -- simrat39/symbols-outline.nvim
-  {mode = "n", "<F3>", ":SymbolsOutline<CR>", desc = "CTags: toggle"},
+  {mode = "n", "<F3>", ":Outline<CR>", desc = "CTags: toggle"},
   -- nvim-tree/nvim-tree.lua
   {mode = "n", "<F2>", ":NvimTreeToggle toggle<CR>", desc = "File tree: toggle"},
   -- mbbill/undotree
@@ -70,9 +70,9 @@ wk.add({
   -- folke/trouble.nvim
   {mode = "n", "<leader>x", ":TroubleToggle<CR>", desc = "LSP: toggle error list"},
   -- hrsh7th/nvim-cmp
-  {mode = "n", "gd", vim.lsp.buf.definition(), desc = "LSP: goto definition", noremap = true},
-  {mode = "n", "gD", vim.lsp.buf.declaration(), desc = "LSP: goto declaration", noremap = true},
-  {mode = "n", "gi", vim.lsp.buf.implementation(), desc = "LSP: list implementation", noremap = true},
+  {mode = "n", "gd", function() vim.lsp.buf.definition() end, desc = "LSP: goto definition", noremap = true},
+  {mode = "n", "gD", function() vim.lsp.buf.declaration() end, desc = "LSP: goto declaration", noremap = true},
+  {mode = "n", "gi", function() vim.lsp.buf.implementation() end, desc = "LSP: list implementation", noremap = true},
   {mode = "n", "gr", function() vim.lsp.buf.references() end, desc = "LSP: list references", noremap = true},
   {mode = "n", "K", vim.lsp.buf.hover(), desc = "LSP: show documentation", noremap = true},
   {mode = "n", "<F8>", function() require("conform").format({ async = true, lsp_fallback = true }) end, desc = "LSP: format", noremap = true},
diff --git a/.config/nvim/lua/plugins/lualine.lua b/.config/nvim/lua/plugins/lualine.lua
index 79321aa..0d0f569 100644
--- a/.config/nvim/lua/plugins/lualine.lua
+++ b/.config/nvim/lua/plugins/lualine.lua
@@ -15,7 +15,7 @@ return {
       },
       { "tiyn/tccs.nvim" },
       {
-        "roobert/action-hints.nvim",
+        "tiyn/action-hints.nvim",
         config = function()
           require("action-hints").setup({
             template = {
diff --git a/.config/nvim/lua/plugins/nvim-docs-view.lua b/.config/nvim/lua/plugins/nvim-docs-view.lua
index 210ad1f..d992cfd 100644
--- a/.config/nvim/lua/plugins/nvim-docs-view.lua
+++ b/.config/nvim/lua/plugins/nvim-docs-view.lua
@@ -1,5 +1,5 @@
 return {
-  "amrbashir/nvim-docs-view",
+  "tiyn/nvim-docs-view",
   lazy = true,
   cmd = "DocsViewToggle",
   opts = {
diff --git a/.config/nvim/lua/plugins/nvim-treesitter.lua b/.config/nvim/lua/plugins/nvim-treesitter.lua
index 24f07d5..4dd2bac 100644
--- a/.config/nvim/lua/plugins/nvim-treesitter.lua
+++ b/.config/nvim/lua/plugins/nvim-treesitter.lua
@@ -7,7 +7,7 @@ return {
       -- automatically close html-tags
       'windwp/nvim-ts-autotag',
       -- color brackets
-      'p00f/nvim-ts-rainbow',
+      -- 'p00f/nvim-ts-rainbow',
     },
     config = function()
       require("nvim-treesitter.configs").setup({
@@ -23,13 +23,13 @@ return {
         },
         highlight = { enable = true },
         autotag = { enable = false },
-        rainbow = {
-          enable = true,
-          extended_mode = true,
-          max_file_lines = nil,
-          -- colors = {},
-          -- termcolors = {}
-        }
+        -- rainbow = {
+        --   enable = true,
+        --   extended_mode = true,
+        --   max_file_lines = nil,
+        --   -- colors = {},
+        --   -- termcolors = {}
+        -- }
       })
     end
   }
diff --git a/.config/nvim/lua/plugins/outline.lua b/.config/nvim/lua/plugins/outline.lua
new file mode 100644
index 0000000..985f98a
--- /dev/null
+++ b/.config/nvim/lua/plugins/outline.lua
@@ -0,0 +1,13 @@
+return {
+  {
+    "hedyhli/outline.nvim",
+    opts = {
+      outline_window = {
+        width = 25
+      },
+      symbols = {
+        icon_source = 'lspkind',
+      }
+    }
+  }
+}
diff --git a/.config/nvim/lua/plugins/symbols-outline.lua b/.config/nvim/lua/plugins/symbols-outline.lua
deleted file mode 100644
index 54e1fe7..0000000
--- a/.config/nvim/lua/plugins/symbols-outline.lua
+++ /dev/null
@@ -1,39 +0,0 @@
-return {
-  -- ctags like menu
-  {
-    "simrat39/symbols-outline.nvim",
-    opts = {
-      width = 25,
-      symbols = {
-        File = { icon = Lsp_signs.File, hl = "@text.uri" },
-        Module = { icon = Lsp_signs.Module, hl = "@namespace" },
-        Class = { icon = Lsp_signs.Class, hl = "@type" },
-        Method = { icon = Lsp_signs.Method, hl = "@method" },
-        Property = { icon = Lsp_signs.Property, hl = "@method" },
-        Field = { icon = Lsp_signs.Field, hl = "@field" },
-        Constructor = { icon = Lsp_signs.Constructor, hl = "@constructor" },
-        Enum = { icon = Lsp_signs.Enum, hl = "@type" },
-        Interface = { icon = Lsp_signs.Interface, hl = "@type" },
-        Function = { icon = Lsp_signs.Function, hl = "@function" },
-        Variable = { icon = Lsp_signs.Variable, hl = "@constant" },
-        Constant = { icon = Lsp_signs.Constant, hl = "@constant" },
-        Key = { icon = Lsp_signs.Keyword, hl = "@type" },
-        EnumMember = { icon = Lsp_signs.EnumMember, hl = "@field" },
-        Struct = { icon = Lsp_signs.Struct, hl = "@type" },
-        Event = { icon = Lsp_signs.Event, hl = "@type" },
-        Operator = { icon = Lsp_signs.Operator, hl = "@operator" },
-        TypeParameter = { icon = Lsp_signs.TypeParameter, hl = "@parameter" },
-        Boolean = { icon = Lsp_signs.Boolean, hl = "@boolean" },
-        Null = { icon = Lsp_signs.Null, hl = "@type" },
-        Component = { icon = Lsp_signs.Component, hl = "@function" },
-        Fragment = { icon = Lsp_signs.Fragment, hl = "@constant" },
-        Object = { icon = Lsp_signs.Object, hl = "@type" },
-        Array = { icon = Lsp_signs.Array, hl = "@constant" },
-        Number = { icon = Lsp_signs.Number, hl = "@number" },
-        String = { icon = Lsp_signs.String, hl = "@string" },
-        Namespace = { icon = Lsp_signs.Namespace, hl = "@namespace" },
-        Package = { icon = Lsp_signs.Package, hl = "@namespace" },
-      },
-    },
-  },
-}
diff --git a/.config/nvim/lua/style.lua b/.config/nvim/lua/style.lua
index 02142f6..e714846 100644
--- a/.config/nvim/lua/style.lua
+++ b/.config/nvim/lua/style.lua
@@ -21,6 +21,7 @@ Menu_signs = {
   path = "",
 }
 
+
 Lsp_signs = {
   Array = "",
   Boolean = "⊥",
@@ -106,22 +107,17 @@ Lualine_signs = {
   unnamed = "",
 }
 
-vim.fn.sign_define(
-  "DiagnosticSignError",
-  { texthl = "DiagnosticSignError", text = Error_sign, numhl = "DiagnosticSignError" }
-)
-vim.fn.sign_define(
-  "DiagnosticSignWarn",
-  { texthl = "DiagnosticSignWarn", text = Warn_sign, numhl = "DiagnosticSignWarn" }
-)
-vim.fn.sign_define(
-  "DiagnosticSignInfo",
-  { texthl = "DiagnosticSignInfo", text = Info_sign, numhl = "DiagnosticSignInfo" }
-)
-vim.fn.sign_define(
-  "DiagnosticSignHint",
-  { texthl = "DiagnosticSignHint", text = Hint_sign, numhl = "DiagnosticSignHint" }
-)
+vim.diagnostic.config({
+  severity_sort = true,
+  signs = {
+    text = {
+      [vim.diagnostic.severity.ERROR] = Error_sign,
+      [vim.diagnostic.severity.WARN] = Warn_sign,
+      [vim.diagnostic.severity.INFO] = Info_sign,
+      [vim.diagnostic.severity.HINT] = Hint_sign,
+    },
+  },
+})
 
 -- enable colorcolumn when textwidth is set
 vim.o.cursorline = true