diff --git a/.gitignore b/.gitignore
index 8cb205e..8389435 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
 plugin
+custom
diff --git a/examples/example_chadrc.lua b/examples/example_chadrc.lua
new file mode 100644
index 0000000..e810f1c
--- /dev/null
+++ b/examples/example_chadrc.lua
@@ -0,0 +1,13 @@
+-- This is an example chadrc file , its supposed to be placed in /lua/custom dir
+-- lua/custom/chadrc.lua
+
+local M = {}
+
+-- make sure you maintain the structure of `core/default_config.lua` here,
+-- example of changing theme:
+
+M.ui = {
+   theme = "gruvchad",
+}
+
+return M
diff --git a/examples/example_init.lua b/examples/example_init.lua
new file mode 100644
index 0000000..5d08fd5
--- /dev/null
+++ b/examples/example_init.lua
@@ -0,0 +1,39 @@
+-- This is an example init file , its supposed to be placed in /lua/custom dir
+-- lua/custom/init.lua
+
+-- This is where your custom modules and plugins go.
+-- Please check NvChad docs if you're totally new to nvchad + dont know lua!!
+
+local hooks = require "core.hooks"
+
+-- MAPPINGS
+-- To add new plugins, use the "setup_mappings" hook,
+
+hooks.add("setup_mappings", function(map)
+   map("n", "<leader>cc", ":Telescope <CR>", opt)
+   map("n", "<leader>q", ":q <CR>", opt)
+end)
+
+-- NOTE : opt is a variable  there (most likely a table if you want multiple options),
+-- you can remove it if you dont have any custom options
+
+-- Install plugins
+-- To add new plugins, use the "install_plugin" hook,
+
+-- examples below:
+
+hooks.add("install_plugins", function(use)
+   use {
+      "max397574/better-escape.nvim",
+      event = "InsertEnter",
+   }
+
+   use {
+      "user or orgname/reponame",
+      --further packer options
+   }
+end)
+
+-- NOTE: we heavily suggest using Packer's lazy loading (with the 'event' field)
+-- see: https://github.com/wbthomason/packer.nvim
+-- https://nvchad.github.io/config/walkthrough
diff --git a/init.lua b/init.lua
index 6ea9843..23322bd 100644
--- a/init.lua
+++ b/init.lua
@@ -1,5 +1,21 @@
-local ok, err = pcall(require, "core")
+local userconf = pcall(require, "custom")
 
-if not ok then
-   error("Error loading core" .. "\n\n" .. err)
+if userconf then
+   require "custom"
 end
+
+local core_modules = {
+   "core.options",
+   "core.autocmds",
+   "core.mappings",
+}
+
+for _, module in ipairs(core_modules) do
+   local ok, err = pcall(require, module)
+   if not ok then
+      error("Error loading " .. module .. "\n\n" .. err)
+   end
+end
+
+-- non plugin mappings
+require("core.mappings").misc()
diff --git a/lua/colors/highlights.lua b/lua/colors/highlights.lua
index c16675d..4ac4ff2 100644
--- a/lua/colors/highlights.lua
+++ b/lua/colors/highlights.lua
@@ -1,8 +1,8 @@
-local override = require("core.utils").load_config().ui.hl_override
-
 local cmd = vim.cmd
 
+local override = require("core.utils").load_config().ui.hl_override
 local colors = require("colors").get()
+local ui = require("core.utils").load_config().ui
 
 local black = colors.black
 local black2 = colors.black2
@@ -21,10 +21,10 @@ local purple = colors.purple
 local red = colors.red
 local white = colors.white
 local yellow = colors.yellow
+local orange = colors.orange
 local one_bg3 = colors.one_bg3
 
-local ui = require("core.utils").load_config().ui
-
+-- functions for setting highlights
 local fg = require("core.utils").fg
 local fg_bg = require("core.utils").fg_bg
 local bg = require("core.utils").bg
@@ -46,7 +46,7 @@ fg("EndOfBuffer", black)
 
 -- For floating windows
 fg("FloatBorder", blue)
-bg("NormalFloat", one_bg)
+bg("NormalFloat", darker_black)
 
 -- Pmenu
 bg("Pmenu", one_bg)
@@ -83,32 +83,21 @@ fg("DashboardHeader", grey_fg)
 fg("DashboardShortcut", grey_fg)
 
 -- Git signs
-fg_bg("DiffAdd", nord_blue, "none")
-fg_bg("DiffChange", grey_fg, "none")
-fg_bg("DiffModified", nord_blue, "none")
+fg_bg("DiffAdd", blue, "NONE")
+fg_bg("DiffChange", grey_fg, "NONE")
+fg_bg("DiffChangeDelete", red, "NONE")
+fg_bg("DiffModified", red, "NONE")
+fg_bg("DiffDelete", red, "NONE")
 
 -- Indent blankline plugin
 fg("IndentBlanklineChar", line)
 
--- ]]
+-- Lsp diagnostics
 
--- [[ LspDiagnostics
-
--- Errors
-fg("LspDiagnosticsSignError", red)
-fg("LspDiagnosticsSignWarning", yellow)
-fg("LspDiagnosticsVirtualTextError", red)
-fg("LspDiagnosticsVirtualTextWarning", yellow)
-
--- Info
-fg("LspDiagnosticsSignInformation", green)
-fg("LspDiagnosticsVirtualTextInformation", green)
-
--- Hints
-fg("LspDiagnosticsSignHint", purple)
-fg("LspDiagnosticsVirtualTextHint", purple)
-
--- ]]
+fg("DiagnosticHint", purple)
+fg("DiagnosticError", red)
+fg("DiagnosticWarn", yellow)
+fg("DiagnosticInformation", green)
 
 -- NvimTree
 fg("NvimTreeEmptyFolderName", blue)
@@ -126,19 +115,59 @@ fg("NvimTreeVertSplit", darker_black)
 bg("NvimTreeVertSplit", darker_black)
 fg_bg("NvimTreeWindowPicker", red, black2)
 
+-- Telescope
+fg_bg("TelescopeBorder", darker_black, darker_black)
+fg_bg("TelescopePromptBorder", black2, black2)
+
+fg_bg("TelescopePromptNormal", white, black2)
+fg_bg("TelescopePromptPrefix", red, black2)
+
+bg("TelescopeNormal", darker_black)
+
+fg_bg("TelescopePreviewTitle", black, green)
+fg_bg("TelescopePromptTitle", black, red)
+fg_bg("TelescopeResultsTitle", darker_black, darker_black)
+
+bg("TelescopeSelection", black2)
+
+-- keybinds cheatsheet
+
+fg_bg("CheatsheetBorder", black, black)
+bg("CheatsheetSectionContent", black)
+fg("CheatsheetHeading", white)
+
+local section_title_colors = {
+   white,
+   blue,
+   red,
+   green,
+   yellow,
+   purple,
+   orange,
+}
+for i, color in ipairs(section_title_colors) do
+   vim.cmd("highlight CheatsheetTitle" .. i .. " guibg = " .. color .. " guifg=" .. black)
+end
+
 -- Disable some highlight in nvim tree if transparency enabled
 if ui.transparency then
+   bg("NormalFloat", "NONE")
    bg("NvimTreeNormal", "NONE")
+   bg("NvimTreeNormalNC", "NONE")
    bg("NvimTreeStatusLineNC", "NONE")
    bg("NvimTreeVertSplit", "NONE")
    fg("NvimTreeVertSplit", grey)
-end
 
--- Telescope
-fg("TelescopeBorder", one_bg)
-fg_bg("TelescopePreviewTitle", green, one_bg)
-fg_bg("TelescopePromptTitle", blue, one_bg)
-fg_bg("TelescopeResultsTitle", red, one_bg)
+   -- telescope
+   bg("TelescopeBorder", "NONE")
+   bg("TelescopePrompt", "NONE")
+   bg("TelescopeResults", "NONE")
+   bg("TelescopePromptBorder", "NONE")
+   bg("TelescopePromptNormal", "NONE")
+   bg("TelescopeNormal", "NONE")
+   bg("TelescopePromptPrefix", "NONE")
+   fg("TelescopeBorder", one_bg)
+end
 
 if #override ~= 0 then
    require(override)
diff --git a/lua/colors/init.lua b/lua/colors/init.lua
index 3b23c86..1de4a62 100644
--- a/lua/colors/init.lua
+++ b/lua/colors/init.lua
@@ -19,9 +19,7 @@ M.init = function(theme)
       package.loaded["colors.highlights" or false] = nil
       -- then load the highlights
       require "colors.highlights"
-   else
-      return false
-   end
+    end
 end
 
 -- returns a table of colors for givem or current theme
diff --git a/lua/core/custom.lua b/lua/core/custom.lua
deleted file mode 100644
index c058061..0000000
--- a/lua/core/custom.lua
+++ /dev/null
@@ -1,22 +0,0 @@
-local function isModuleAvailable(name)
-   if package.loaded[name] then
-      return true
-   else
-      for _, searcher in ipairs(package.searchers or package.loaders) do
-         local loader = searcher(name)
-         if type(loader) == "function" then
-            package.preload[name] = loader
-            return true
-         end
-      end
-      return false
-   end
-end
-
-local loadIfExists = function(module)
-   if isModuleAvailable(module) then
-      require(module)
-   end
-end
-
-loadIfExists "custom"
diff --git a/lua/core/default_config.lua b/lua/core/default_config.lua
index 9b087cf..1791f7e 100644
--- a/lua/core/default_config.lua
+++ b/lua/core/default_config.lua
@@ -2,11 +2,11 @@
 -- use custom/chadrc.lua instead
 
 local M = {}
-M.options, M.ui, M.mappings, M.plugins = {}, {}, {}, {}
 
--- non plugin normal, available without any plugins
 M.options = {
-   -- NeoVim/Vim options
+   -- custom = {}
+   -- general nvim/vim options , check :h optionname to know more about an option
+
    clipboard = "unnamedplus",
    cmdheight = 1,
    ruler = false,
@@ -16,17 +16,16 @@ M.options = {
    mapleader = " ",
    mouse = "a",
    number = true,
-   -- relative numbers in normal mode tool at the bottom of options.lua
    numberwidth = 2,
    relativenumber = false,
    expandtab = true,
    shiftwidth = 2,
    smartindent = true,
-   tabstop = 8, -- Number of spaces that a <Tab> in the file counts for
+   tabstop = 8,
    timeoutlen = 400,
-   -- interval for writing swap file to disk, also used by gitsigns
    updatetime = 250,
-   undofile = true, -- keep a permanent undo (across restarts)
+   undofile = true,
+
    -- NvChad options
    nvChad = {
       copy_cut = true, -- copy cut text ( x key ), visual and normal mode
@@ -34,43 +33,46 @@ M.options = {
       insert_nav = true, -- navigation in insertmode
       window_nav = true,
       theme_toggler = false,
-      -- used for updater
+
+      -- updater
       update_url = "https://github.com/NvChad/NvChad",
       update_branch = "main",
    },
 }
 
--- ui configs
+---- UI -----
+
 M.ui = {
-   hl_override = "", -- path of your file which contains highlight stuffs
+   hl_override = "", -- path of your file that contains highlights
    italic_comments = false,
-   -- theme to be used, check available themes with `<leader> + t + h`
-   theme = "onedark",
+   theme = "onedark", -- default theme
    -- toggle between two themes, see theme_toggler mappings
    theme_toggler = {
       "onedark",
       "gruvchad",
    },
-   -- Enable this only if your terminal has the colorscheme set which nvchad uses
+
+   -- Change terminal bg to nvim theme's bg color so it'll match well
    -- For Ex : if you have onedark set in nvchad, set onedark's bg color on your terminal
    transparency = false,
 }
 
--- these are plugin related options
+---- PLUGIN OPTIONS ----
+
 M.plugins = {
-   -- enable and disable plugins (false for disable)
+   -- enable/disable plugins (false for disable)
    status = {
-      blankline = true, -- show code scope with symbols
-      bufferline = true, -- list open buffers up the top, easy switching too
+      blankline = true, -- indentline stuff
+      bufferline = true, -- manage and preview opened buffers
       colorizer = false, -- color RGB, HEX, CSS, NAME color codes
       comment = true, -- easily (un)comment code, language aware
-      dashboard = false, -- NeoVim 'home screen' on open
+      dashboard = false,
       esc_insertmode = true, -- map to <ESC> with no lag
       feline = true, -- statusline
-      gitsigns = true, -- gitsigns in statusline
+      gitsigns = true,
       lspsignature = true, -- lsp enhancements
-      telescope_media = false, -- media previews within telescope finders
-      vim_matchup = true, -- % operator enhancements
+      telescope_media = false,
+      vim_matchup = true, -- improved matchit
       cmp = true,
       nvimtree = true,
       autopairs = true,
@@ -86,39 +88,47 @@ M.plugins = {
       luasnip = {
          snippet_path = {},
       },
-      statusline = { -- statusline related options
-         -- these are filetypes, not pattern matched
-         -- shown filetypes will overrule hidden filetypes
+      statusline = {
+         -- hide, show on specific filetypes
          hidden = {
             "help",
             "dashboard",
             "NvimTree",
             "terminal",
          },
-         -- show short statusline on small screens
-         shortline = true,
          shown = {},
-         -- default, round , slant , block , arrow
-         style = "default",
+
+         -- truncate statusline on small screens
+         shortline = true,
+         style = "default", -- default, round , slant , block , arrow
       },
       esc_insertmode_timeout = 300,
    },
    default_plugin_config_replace = {},
 }
 
--- mappings -- don't use a single keymap twice --
--- non plugin mappings
+-- Don't use a single keymap twice
+
+--- MAPPINGS ----
+
+-- non plugin
 M.mappings = {
-   -- custom = {}, -- all custom user mappings
-   -- close current focused buffer
-   close_buffer = "<leader>x",
-   copy_whole_file = "<C-a>", -- copy all contents of the current buffer
-   line_number_toggle = "<leader>n", -- show or hide line number
-   new_buffer = "<S-t>", -- open a new buffer
-   new_tab = "<C-t>b", -- open a new vim tab
-   save_file = "<C-s>", -- save file using :w
-   theme_toggler = "<leader>tt", -- for theme toggler, see in ui.theme_toggler
+   -- custom = {}, -- custom user mappings
+
+   misc = {
+      cheatsheet = "<leader>ch",
+      close_buffer = "<leader>x",
+      copy_whole_file = "<C-a>", -- copy all contents of current buffer
+      line_number_toggle = "<leader>n", -- toggle line number
+      update_nvchad = "<leader>uu",
+      new_buffer = "<S-t>",
+      new_tab = "<C-t>b",
+      save_file = "<C-s>", -- save file using :w
+      theme_toggler = "<leader>tt", -- see in ui.theme_toggler
+   },
+
    -- navigation in insert mode, only if enabled in options
+
    insert_nav = {
       backward = "<C-h>",
       end_of_line = "<C-e>",
@@ -127,60 +137,63 @@ M.mappings = {
       prev_line = "<C-j>",
       beginning_of_line = "<C-a>",
    },
-   --better window movement
+
+   -- better window movement
    window_nav = {
       moveLeft = "<C-h>",
       moveRight = "<C-l>",
       moveUp = "<C-k>",
       moveDown = "<C-j>",
    },
+
    -- terminal related mappings
    terminal = {
-      -- multiple mappings can be given for esc_termmode and esc_hide_termmode
+      -- multiple mappings can be given for esc_termmode, esc_hide_termmode
+
       -- get out of terminal mode
-      esc_termmode = { "jk" }, -- multiple mappings allowed
+      esc_termmode = { "jk" },
+
       -- get out of terminal mode and hide it
-      esc_hide_termmode = { "JK" }, -- multiple mappings allowed
+      esc_hide_termmode = { "JK" },
       -- show & recover hidden terminal buffers in a telescope picker
       pick_term = "<leader>W",
-      -- below three are for spawning terminals
+
+      -- spawn terminals
       new_horizontal = "<leader>h",
       new_vertical = "<leader>v",
       new_window = "<leader>w",
    },
-   -- update nvchad from nvchad, chadness 101
-   update_nvchad = "<leader>uu",
 }
 
--- all plugins related mappings
+-- plugins related mappings
+
 M.mappings.plugins = {
-   -- list open buffers up the top, easy switching too
    bufferline = {
-      next_buffer = "<TAB>", -- next buffer
-      prev_buffer = "<S-Tab>", -- previous buffer
+      next_buffer = "<TAB>",
+      prev_buffer = "<S-Tab>",
    },
-   -- easily (un)comment code, language aware
    comment = {
-      toggle = "<leader>/", -- toggle comment (works on multiple lines)
+      toggle = "<leader>/",
    },
-   -- NeoVim 'home screen' on open
+
    dashboard = {
       bookmarks = "<leader>bm",
       new_file = "<leader>fn", -- basically create a new buffer
       open = "<leader>db", -- open dashboard
-      session_load = "<leader>l", -- load a saved session
-      session_save = "<leader>s", -- save a session
+      session_load = "<leader>l",
+      session_save = "<leader>s",
    },
+
    -- map to <ESC> with no lag
    better_escape = { -- <ESC> will still work
       esc_insertmode = { "jk" }, -- multiple mappings allowed
    },
-   -- file explorer/tree
+
    nvimtree = {
       toggle = "<C-n>",
       focus = "<leader>e",
    },
-   -- multitool for finding & picking things
+
    telescope = {
       buffers = "<leader>fb",
       find_files = "<leader>ff",
@@ -191,7 +204,7 @@ M.mappings.plugins = {
       live_grep = "<leader>fw",
       oldfiles = "<leader>fo",
       themes = "<leader>th", -- NvChad theme picker
-      -- media previews within telescope finders
+
       telescope_media = {
          media_files = "<leader>fp",
       },
diff --git a/lua/core/hooks.lua b/lua/core/hooks.lua
index 2602ff7..02394a1 100644
--- a/lua/core/hooks.lua
+++ b/lua/core/hooks.lua
@@ -1,4 +1,5 @@
-local hooks, overrides, M = {}, {}, {}
+local hooks, M = {}, {}
+
 local allowed_hooks = {
    "install_plugins",
    "setup_mappings",
@@ -11,13 +12,11 @@ local function has_value(tab, val)
          return true
       end
    end
-
-   return false
 end
 
 M.add = function(name, fn)
    if not (has_value(allowed_hooks, name)) then
-      error("Custom lua uses unallowed hook " .. name)
+      print("Custom lua uses unallowed hook " .. name)
    end
    if hooks[name] == nil then
       hooks[name] = {}
@@ -26,43 +25,11 @@ M.add = function(name, fn)
 end
 
 M.run = function(name, args)
-   if hooks[name] == nil then
-      return
-   end
-
-   for _, hook in pairs(hooks[name]) do
-      hook(args)
-   end
-end
-
-M.createOverrides = function(module)
-   local O = {}
-
-   O.get = function(name, default)
-      local current = default
-      if overrides[module] and overrides[module][name] then
-         if type(overrides[module][name]) == "function" then
-            current = overrides[module][name]
-         elseif type(overrides[module][name]) == "table" then
-            for _, override in pairs(overrides[module][name]) do
-               current = override(current)
-            end
-         end
+   if hooks[name] ~= nil then
+      for _, hook in pairs(hooks[name]) do
+         hook(args)
       end
-      return current
    end
-
-   return O
-end
-
-M.override = function(module, name, overwrite)
-   if overrides[module] == nil then
-      overrides[module] = {}
-   end
-   if overrides[module][name] == nil then
-      overrides[module][name] = {}
-   end
-   table.insert(overrides[module][name], overwrite)
 end
 
 return M
diff --git a/lua/core/init.lua b/lua/core/init.lua
deleted file mode 100644
index dc1198c..0000000
--- a/lua/core/init.lua
+++ /dev/null
@@ -1,20 +0,0 @@
-local core_modules = {
-   "core.custom",
-   "core.options",
-   "core.autocmds",
-   "core.mappings",
-}
-
-local hooks = require "core.hooks"
-
-for _, module in ipairs(core_modules) do
-   local ok, err = pcall(require, module)
-   if not ok then
-      error("Error loading " .. module .. "\n\n" .. err)
-   end
-end
-
--- set all the non plugin mappings
-require("core.mappings").misc()
-
-hooks.run "ready"
diff --git a/lua/core/mappings.lua b/lua/core/mappings.lua
index cf9d2a0..9e5f84a 100644
--- a/lua/core/mappings.lua
+++ b/lua/core/mappings.lua
@@ -29,6 +29,11 @@ M.misc = function()
 
       -- use ESC to turn off search highlighting
       map("n", "<Esc>", ":noh <CR>")
+
+      -- center cursor when moving (goto_definition)
+
+      -- yank from current cursor to end of line
+      map("n", "Y", "yg$")
    end
 
    local function optional_mappings()
@@ -68,19 +73,20 @@ M.misc = function()
       if nvChad_options.theme_toggler then
          map(
             "n",
-            maps.theme_toggler,
+            maps.misc.theme_toggler,
             ":lua require('nvchad').toggle_theme(require('core.utils').load_config().ui.theme_toggler) <CR>"
          )
       end
    end
 
    local function required_mappings()
-      map("n", maps.close_buffer, ":lua require('core.utils').close_buffer() <CR>") -- close  buffer
-      map("n", maps.copy_whole_file, ":%y+ <CR>") -- copy whole file content
-      map("n", maps.new_buffer, ":enew <CR>") -- new buffer
-      map("n", maps.new_tab, ":tabnew <CR>") -- new tabs
-      map("n", maps.line_number_toggle, ":set nu! <CR>") -- toggle numbers
-      map("n", maps.save_file, ":w <CR>") -- ctrl + s to save file
+      map("n", maps.misc.cheatsheet, ":lua require('nvchad.cheatsheet').show() <CR>") -- show keybinds
+      map("n", maps.misc.close_buffer, ":lua require('core.utils').close_buffer() <CR>") -- close  buffer
+      map("n", maps.misc.copy_whole_file, ":%y+ <CR>") -- copy whole file content
+      map("n", maps.misc.new_buffer, ":enew <CR>") -- new buffer
+      map("n", maps.misc.new_tab, ":tabnew <CR>") -- new tabs
+      map("n", maps.misc.line_number_toggle, ":set nu! <CR>") -- toggle numbers
+      map("n", maps.misc.save_file, ":w <CR>") -- ctrl + s to save file
 
       -- terminal mappings --
       local term_maps = maps.terminal
@@ -107,10 +113,7 @@ M.misc = function()
 
       -- add NvChadUpdate command and mapping
       cmd "silent! command! NvChadUpdate lua require('nvchad').update_nvchad()"
-      map("n", maps.update_nvchad, ":NvChadUpdate <CR>")
-
-      -- add ChadReload command and maping
-      -- cmd "silent! command! NvChadReload lua require('nvchad').reload_config()"
+      map("n", maps.misc.update_nvchad, ":NvChadUpdate <CR>")
    end
 
    non_config_mappings()
@@ -153,7 +156,7 @@ M.telescope = function()
    local m = plugin_maps.telescope
 
    map("n", m.buffers, ":Telescope buffers <CR>")
-   map("n", m.find_files, ":Telescope find_files <CR>")
+   map("n", m.find_files, ":Telescope find_files no_ignore=true <CR>")
    map("n", m.find_hiddenfiles, ":Telescope find_files hidden=true <CR>")
    map("n", m.git_commits, ":Telescope git_commits <CR>")
    map("n", m.git_status, ":Telescope git_status <CR>")
diff --git a/lua/core/options.lua b/lua/core/options.lua
index 2438b16..5be456d 100644
--- a/lua/core/options.lua
+++ b/lua/core/options.lua
@@ -1,9 +1,6 @@
 local opt = vim.opt
 local g = vim.g
 
--- export user config as a global varibale
-g.nvchad_user_config = "chadrc"
-
 local options = require("core.utils").load_config().options
 
 opt.title = true
diff --git a/lua/core/utils.lua b/lua/core/utils.lua
index e9fbd1f..41c70e1 100644
--- a/lua/core/utils.lua
+++ b/lua/core/utils.lua
@@ -132,63 +132,26 @@ M.hide_statusline = function()
    if vim.tbl_contains(hidden, buftype) then
       api.nvim_set_option("laststatus", 0)
       return
-   else
-      api.nvim_set_option("laststatus", 2)
    end
+
+   api.nvim_set_option("laststatus", 2)
 end
 
--- load config
--- 1st arg = boolean - whether to force reload
--- Modifies _G._NVCHAD_CONFIG global variable
-M.load_config = function(reload)
-   -- only do the stuff below one time, otherwise just return the set config
-   if _G._NVCHAD_CONFIG_CONTENTS ~= nil and not (reload or false) then
-      return _G._NVCHAD_CONFIG_CONTENTS
+M.load_config = function()
+   local conf = require "core.default_config"
+
+   local chadrcExists, _ = pcall(require, "custom.chadrc")
+
+   -- if chadrc exists , then merge its table into the default config's
+
+   if chadrcExists then
+      local change = require "custom.chadrc"
+      conf = vim.tbl_deep_extend("force", conf, change)
+      return conf
    end
 
-   -- these are the table value which will be always prioritiezed to take user config value
-   local to_replace = {
-      "['mappings']['plugins']['esc_insertmode']",
-      "['mappings']['terminal']['esc_termmode']",
-      "['mappings']['terminal']['esc_hide_termmode']",
-   }
-
-   local default_config = "core.default_config"
-   local config_name = vim.g.nvchad_user_config or "chadrc"
-   local config_file = vim.fn.stdpath "config" .. "/lua/custom/" .. config_name .. ".lua"
-
-   -- unload the modules if force reload
-   if reload then
-      package.loaded[default_config or false] = nil
-      package.loaded[config_name or false] = nil
-   end
-
-   -- don't enclose in pcall, it better break when default config is faulty
-   _G._NVCHAD_CONFIG_CONTENTS = require(default_config)
-
-   -- user config is not required to run nvchad but a optional
-   -- Make sure the config doesn't break the whole system if user config is not present or in bad state or not a table
-   -- print warning texts if user config file is  present
-   -- check if the user config is present
-   if vim.fn.filereadable(vim.fn.glob(config_file)) == 1 then
-      local present, config = pcall(require, "custom/" .. config_name)
-      if present then
-         -- make sure the returned value is table
-         if type(config) == "table" then
-            -- data = require(config_name)
-            _G._NVCHAD_CONFIG_CONTENTS = require("core.utils").merge_table(
-               _G._NVCHAD_CONFIG_CONTENTS,
-               config,
-               to_replace
-            )
-         else
-            print("Warning: " .. config_name .. " sourced successfully but did not return a lua table.")
-         end
-      else
-         print("Warning: " .. config_file .. " is present but sourcing failed.")
-      end
-   end
-   return _G._NVCHAD_CONFIG_CONTENTS
+   -- or load default config
+   return conf
 end
 
 M.map = function(mode, keys, cmd, opt)
@@ -239,88 +202,6 @@ M.map = function(mode, keys, cmd, opt)
    map_wrapper(mode, keys, cmd, options)
 end
 
--- Base code: https://gist.github.com/revolucas/184aec7998a6be5d2f61b984fac1d7f7
--- Changes over it: preserving table 1 contents and also update with table b, without duplicating
--- 1st arg - base table
--- 2nd arg - table to merge
--- 3rg arg - list of nodes as a table, if the node is found replace the from table2 to result, rather than adding the value
--- e.g: merge_table(t1, t2, { ['mappings']['plugins']['bufferline'] })
-M.merge_table = function(into, from, nodes_to_replace)
-   -- make sure both are table
-   if type(into) ~= "table" or type(from) ~= "table" then
-      return into
-   end
-
-   local stack, seen = {}, {}
-   local table1, table2 = into, from
-
-   if type(nodes_to_replace) == "table" then
-      -- function that will be executed with loadstring
-      local replace_fn = function(node)
-         local base_fn = [[
-return function(table1, table2)
-   local t1, t2 = table1_node or false , table2_node or false
-   if t1 and t2 then
-      table1_node = table2_node
-   end
-   return table1
-end]]
-
-         -- replace the _node in base_fn to actual given node value
-         local fn = base_fn:gsub("_node", node)
-         -- return the function created from the string base_fn
-         return loadstring(fn)()(table1, table2)
-      end
-
-      for _, node in ipairs(nodes_to_replace) do
-         -- pcall() is a poor workaround for if "['mappings']['plugins']['esc_insertmode']" 'plugins' sub-table does not exist
-         local ok, result = pcall(replace_fn, node)
-         if ok then
-            -- if the node is found then replace
-            table1 = result
-         end
-      end
-   end
-
-   while true do
-      for k, v in pairs(table2) do
-         if type(v) == "table" and type(table1[k]) == "table" then
-            table.insert(stack, { table1[k], table2[k] })
-         else
-            local present = seen[v] or false
-            if not present then
-               if type(k) == "number" then
-                  -- add the value to seen table until value is found
-                  -- only do when key is number we just want to append to subtables
-                  -- todo: maybe improve this
-
-                  for _, value in pairs(table1) do
-                     if value == v then
-                        present = true
-                        break
-                     end
-                  end
-                  seen[v] = true
-                  if not present then
-                     table1[#table1 + 1] = v
-                  end
-               else
-                  table1[k] = v
-               end
-            end
-         end
-      end
-      if #stack > 0 then
-         local t = stack[#stack]
-         table1, table2 = t[1], t[2]
-         stack[#stack] = nil
-      else
-         break
-      end
-   end
-   return into
-end
-
 -- load plugin after entering vim ui
 M.packer_lazy_load = function(plugin, timer)
    if plugin then
@@ -356,4 +237,27 @@ M.fg_bg = function(group, fgcol, bgcol)
    cmd("hi " .. group .. " guifg=" .. fgcol .. " guibg=" .. bgcol)
 end
 
+-- Override default config of a plugin based on the path provided in the chadrc
+
+-- FUNCTION: override_req, use `chadrc` plugin config override if present
+-- name = name inside `default_config` / `chadrc`
+-- default_req = run this if 'name' does not exist in `default_config` / `chadrc`
+-- if override or default_req start with `(`, then strip that and assume override calls a function, not a whole file
+M.override_req = function(name, default_req)
+   local override = require("core.utils").load_config().plugins.default_plugin_config_replace[name]
+   local result = default_req
+
+   if override ~= nil then
+      result = override
+   end
+
+   if string.match(result, "^%(") then
+      result = result:sub(2)
+      result = result:gsub("%)%.", "').", 1)
+      return "require('" .. result
+   end
+
+   return "require('" .. result .. "')"
+end
+
 return M
diff --git a/lua/custom/example_chadrc.lua b/lua/custom/example_chadrc.lua
deleted file mode 100644
index 02d5566..0000000
--- a/lua/custom/example_chadrc.lua
+++ /dev/null
@@ -1,39 +0,0 @@
--- IMPORTANT NOTE : This is the user config, can be edited. Will be preserved if updated with internal updater
--- This file is for NvChad options & tools, custom settings are split between here and 'lua/custom/init.lua'
-
-local M = {}
-M.options, M.ui, M.mappings, M.plugins = {}, {}, {}, {}
-
--- NOTE: To use this, make a copy with `cp example_chadrc.lua chadrc.lua`
-
---------------------------------------------------------------------
-
--- To use this file, copy the structure of `core/default_config.lua`,
--- examples of setting relative number & changing theme:
-
--- M.options = {
---    relativenumber = true,
--- }
-
--- M.ui = {
---   theme = "nord"
--- }
-
--- NvChad included plugin options & overrides
-M.plugins = {
-   options = {
-      --   lspconfig = {
-      --    path of file containing setups of different lsps (ex : "custom.plugins.lspconfig"), read the docs for more info
-      --    setup_lspconf = "",
-      --   },
-   },
-   -- To change the Packer `config` of a plugin that comes with NvChad,
-   -- add a table entry below matching the plugin github name
-   --              '-' -> '_', remove any '.lua', '.nvim' extensions
-   -- this string will be called in a `require`
-   --              use "(custom.configs).my_func()" to call a function
-   --              use "custom.blankline" to call a file
-   default_plugin_config_replace = {},
-}
-
-return M
diff --git a/lua/custom/example_init.lua b/lua/custom/example_init.lua
deleted file mode 100644
index 51e3dcb..0000000
--- a/lua/custom/example_init.lua
+++ /dev/null
@@ -1,44 +0,0 @@
--- This is where your custom modules and plugins go.
--- See the wiki for a guide on how to extend NvChad
-
-local hooks = require "core.hooks"
-
--- NOTE: To use this, make a copy with `cp example_init.lua init.lua`
-
---------------------------------------------------------------------
-
--- To modify packaged plugin configs, use the overrides functionality
--- if the override does not exist in the plugin config, make or request a PR,
--- or you can override the whole plugin config with 'chadrc' -> M.plugins.default_plugin_config_replace{}
--- this will run your config instead of the NvChad config for the given plugin
-
--- hooks.override("lsp", "publish_diagnostics", function(current)
---   current.virtual_text = false;
---   return current;
--- end)
-
--- To add new mappings, use the "setup_mappings" hook,
--- you can set one or many mappings
--- example below:
-
--- hooks.add("setup_mappings", function(map)
---    map("n", "<leader>cc", "gg0vG$d", opt) -- example to delete the buffer
---    .... many more mappings ....
--- end)
-
--- To add new plugins, use the "install_plugin" hook,
--- NOTE: we heavily suggest using Packer's lazy loading (with the 'event' field)
--- see: https://github.com/wbthomason/packer.nvim
--- examples below:
-
--- hooks.add("install_plugins", function(use)
---    use {
---       "max397574/better-escape.nvim",
---       event = "InsertEnter",
---    }
--- end)
-
--- alternatively, put this in a sub-folder like "lua/custom/plugins/mkdir"
--- then source it with
-
--- require "custom.plugins.mkdir"
diff --git a/lua/plugins/configs/bufferline.lua b/lua/plugins/configs/bufferline.lua
index cda1a7a..a396ed4 100644
--- a/lua/plugins/configs/bufferline.lua
+++ b/lua/plugins/configs/bufferline.lua
@@ -10,7 +10,6 @@ bufferline.setup {
       offsets = { { filetype = "NvimTree", text = "", padding = 1 } },
       buffer_close_icon = "",
       modified_icon = "",
-      -- close_icon = "%@NvChad_bufferline_quitvim@%X",
       close_icon = "",
       show_close_icon = true,
       left_trunc_marker = "",
@@ -24,7 +23,7 @@ bufferline.setup {
       show_buffer_close_icons = true,
       separator_style = "thin",
       always_show_bufferline = true,
-      diagnostics = false, -- "or nvim_lsp"
+      diagnostics = false,
       custom_filter = function(buf_number)
          -- Func to filter out our managed/persistent split terms
          local present_type, type = pcall(function()
@@ -36,12 +35,11 @@ bufferline.setup {
                return false
             elseif type == "hori" then
                return false
-            else
-               return true
             end
-         else
             return true
          end
+
+         return true
       end,
    },
 
@@ -121,6 +119,7 @@ bufferline.setup {
          guifg = colors.black2,
          guibg = colors.black2,
       },
+
       -- tabs
       tab = {
          guifg = colors.light_grey,
diff --git a/lua/plugins/configs/cmp.lua b/lua/plugins/configs/cmp.lua
index eab3bd2..80e2df4 100644
--- a/lua/plugins/configs/cmp.lua
+++ b/lua/plugins/configs/cmp.lua
@@ -6,7 +6,6 @@ end
 
 vim.opt.completeopt = "menuone,noselect"
 
--- nvim-cmp setup
 cmp.setup {
    snippet = {
       expand = function(args)
@@ -15,12 +14,8 @@ cmp.setup {
    },
    formatting = {
       format = function(entry, vim_item)
-         -- load lspkind icons
-         vim_item.kind = string.format(
-            "%s %s",
-            require("plugins.configs.lspkind_icons").icons[vim_item.kind],
-            vim_item.kind
-         )
+         local icons = require "plugins.configs.lspkind_icons"
+         vim_item.kind = string.format("%s %s", icons[vim_item.kind], vim_item.kind)
 
          vim_item.menu = ({
             nvim_lsp = "[LSP]",
diff --git a/lua/plugins/configs/gitsigns.lua b/lua/plugins/configs/gitsigns.lua
deleted file mode 100644
index f2b58f6..0000000
--- a/lua/plugins/configs/gitsigns.lua
+++ /dev/null
@@ -1,34 +0,0 @@
-local present, gitsigns = pcall(require, "gitsigns")
-if not present then
-   return
-end
-
-gitsigns.setup {
-   keymaps = {
-      -- Default keymap options
-      buffer = true,
-      noremap = true,
-      ["n ]c"] = { expr = true, "&diff ? ']c' : '<cmd>lua require\"gitsigns\".next_hunk()<CR>'" },
-      ["n [c"] = { expr = true, "&diff ? '[c' : '<cmd>lua require\"gitsigns\".prev_hunk()<CR>'" },
-      ["n <leader>hs"] = '<cmd>lua require"gitsigns".stage_hunk()<CR>',
-      ["n <leader>hu"] = '<cmd>lua require"gitsigns".undo_stage_hunk()<CR>',
-      ["n <leader>hr"] = '<cmd>lua require"gitsigns".reset_hunk()<CR>',
-      ["n <leader>hp"] = '<cmd>lua require"gitsigns".preview_hunk()<CR>',
-      ["n <leader>hb"] = '<cmd>lua require"gitsigns".blame_line()<CR>',
-   },
-   numhl = false,
-
-   sign_priority = 5,
-   signs = {
-      add = { hl = "DiffAdd", text = "│", numhl = "GitSignsAddNr" },
-      change = { hl = "DiffChange", text = "│", numhl = "GitSignsChangeNr" },
-      changedelete = { hl = "DiffChange", text = "~", numhl = "GitSignsChangeNr" },
-      delete = { hl = "DiffDelete", text = "_", numhl = "GitSignsDeleteNr" },
-      topdelete = { hl = "DiffDelete", text = "‾", numhl = "GitSignsDeleteNr" },
-   },
-
-   status_formatter = nil, -- Use default
-   watch_gitdir = {
-      interval = 100,
-   },
-}
diff --git a/lua/plugins/configs/lspconfig.lua b/lua/plugins/configs/lspconfig.lua
index be12585..391a9fb 100644
--- a/lua/plugins/configs/lspconfig.lua
+++ b/lua/plugins/configs/lspconfig.lua
@@ -1,5 +1,3 @@
-local overrides = require("core.hooks").createOverrides "lsp"
-
 local function on_attach(_, bufnr)
    local function buf_set_keymap(...)
       vim.api.nvim_buf_set_keymap(bufnr, ...)
@@ -52,52 +50,11 @@ capabilities.textDocument.completion.completionItem.resolveSupport = {
    },
 }
 
--- replace the default lsp diagnostic symbols
-local function lspSymbol(name, icon)
-   vim.fn.sign_define("LspDiagnosticsSign" .. name, { text = icon, numhl = "LspDiagnosticsDefault" .. name })
-end
-
-lspSymbol("Error", "")
-lspSymbol("Information", "")
-lspSymbol("Hint", "")
-lspSymbol("Warning", "")
-
-local lsp_publish_diagnostics_options = overrides.get("publish_diagnostics", {
-   virtual_text = {
-      prefix = "",
-      spacing = 0,
-   },
-   signs = true,
-   underline = true,
-   update_in_insert = false, -- update diagnostics insert mode
-})
-vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(
-   vim.lsp.diagnostic.on_publish_diagnostics,
-   lsp_publish_diagnostics_options
-)
-vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, {
-   border = "single",
-})
-vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, {
-   border = "single",
-})
-
--- suppress error messages from lang servers
-vim.notify = function(msg, log_level, _opts)
-   if msg:match "exit code" then
-      return
-   end
-   if log_level == vim.log.levels.ERROR then
-      vim.api.nvim_err_writeln(msg)
-   else
-      vim.api.nvim_echo({ { msg } }, true, {})
-   end
-end
-
 -- requires a file containing user's lspconfigs
-
 local addlsp_confs = require("core.utils").load_config().plugins.options.lspconfig.setup_lspconf
 
 if #addlsp_confs ~= 0 then
    require(addlsp_confs).setup_lsp(on_attach, capabilities)
 end
+
+require("plugins.configs.others").lsp_handlers()
diff --git a/lua/plugins/configs/lspkind_icons.lua b/lua/plugins/configs/lspkind_icons.lua
index dd775b7..ea584ae 100644
--- a/lua/plugins/configs/lspkind_icons.lua
+++ b/lua/plugins/configs/lspkind_icons.lua
@@ -1,6 +1,4 @@
-local M = {}
-
-M.icons = {
+local icons = {
    Text = "",
    Method = "",
    Function = "",
@@ -28,4 +26,4 @@ M.icons = {
    TypeParameter = "",
 }
 
-return M
+return icons
diff --git a/lua/plugins/configs/nvimtree.lua b/lua/plugins/configs/nvimtree.lua
index 4b142db..282641e 100644
--- a/lua/plugins/configs/nvimtree.lua
+++ b/lua/plugins/configs/nvimtree.lua
@@ -7,25 +7,20 @@ end
 
 local g = vim.g
 
-vim.o.termguicolors = true
-
 g.nvim_tree_add_trailing = 0 -- append a trailing slash to folder names
 g.nvim_tree_git_hl = git_status
-g.nvim_tree_gitignore = 0
 g.nvim_tree_highlight_opened_files = 0
 g.nvim_tree_indent_markers = 1
-g.nvim_tree_ignore = { ".git", "node_modules", ".cache" }
 g.nvim_tree_quit_on_open = 0 -- closes tree when file's opened
 g.nvim_tree_root_folder_modifier = table.concat { ":t:gs?$?/..", string.rep(" ", 1000), "?:gs?^??" }
+ 
 g.nvim_tree_window_picker_exclude = {
-   filetype = { 'notify', 'packer', 'qf' },
-   buftype = {'terminal' },
+   filetype = { "notify", "packer", "qf" },
+   buftype = { "terminal" },
 }
 
---
 g.nvim_tree_show_icons = {
    folders = 1,
-   -- folder_arrows= 1
    files = 1,
    git = git_status,
 }
@@ -43,11 +38,8 @@ g.nvim_tree_icons = {
       untracked = "★",
    },
    folder = {
-      -- disable indent_markers option to get arrows working or if you want both arrows and indent then just add the arrow icons in front            ofthe default and opened folders below!
-      -- arrow_open = "",
-      -- arrow_closed = "",
       default = "",
-      empty = "", -- 
+      empty = "",
       empty_open = "",
       open = "",
       symlink = "",
@@ -56,15 +48,6 @@ g.nvim_tree_icons = {
 }
 
 nvimtree.setup {
-   diagnostics = {
-      enable = false,
-      icons = {
-         hint = "",
-         info = "",
-         warning = "",
-         error = "",
-      },
-   },
    filters = {
       dotfiles = false,
    },
@@ -84,4 +67,8 @@ nvimtree.setup {
       side = "left",
       width = 25,
    },
+
+   git = {
+      ignore = false,
+   },
 }
diff --git a/lua/plugins/configs/others.lua b/lua/plugins/configs/others.lua
index af24c60..5a851cc 100644
--- a/lua/plugins/configs/others.lua
+++ b/lua/plugins/configs/others.lua
@@ -1,19 +1,17 @@
 local M = {}
 
 local chadrc_config = require("core.utils").load_config()
+
 M.autopairs = function()
    local present1, autopairs = pcall(require, "nvim-autopairs")
    local present2, cmp_autopairs = pcall(require, "nvim-autopairs.completion.cmp")
 
-   if not (present1 or present2) then
-      return
+   if present1 and present2 then
+      autopairs.setup()
+
+      local cmp = require "cmp"
+      cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
    end
-
-   autopairs.setup()
-
-   -- not needed if you disable cmp, the above var related to cmp tooo! override default config for autopairs
-   local cmp = require "cmp"
-   cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
 end
 
 M.better_escape = function()
@@ -35,6 +33,7 @@ M.blankline = function()
          "lspinfo",
          "TelescopePrompt",
          "TelescopeResults",
+         "nvchad_cheatsheet",
       },
       buftype_exclude = { "terminal" },
       show_trailing_blankline_indent = false,
@@ -71,17 +70,15 @@ end
 
 M.luasnip = function()
    local present, luasnip = pcall(require, "luasnip")
-   if not present then
-      return
+   if present then
+      luasnip.config.set_config {
+         history = true,
+         updateevents = "TextChanged,TextChangedI",
+      }
+
+      require("luasnip/loaders/from_vscode").load { paths = chadrc_config.plugins.options.luasnip.snippet_path }
+      require("luasnip/loaders/from_vscode").load()
    end
-
-   luasnip.config.set_config {
-      history = true,
-      updateevents = "TextChanged,TextChangedI",
-   }
-
-   require("luasnip/loaders/from_vscode").load { paths = chadrc_config.plugins.options.luasnip.snippet_path }
-   require("luasnip/loaders/from_vscode").load()
 end
 
 M.signature = function()
@@ -107,4 +104,59 @@ M.signature = function()
    end
 end
 
+M.lsp_handlers = function()
+   local function lspSymbol(name, icon)
+      local hl = "DiagnosticSign" .. name
+      vim.fn.sign_define(hl, { text = icon, numhl = hl, texthl = hl })
+   end
+
+   lspSymbol("Error", "")
+   lspSymbol("Info", "")
+   lspSymbol("Hint", "")
+   lspSymbol("Warn", "")
+
+   vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
+      virtual_text = {
+         prefix = "",
+         spacing = 0,
+      },
+      signs = true,
+      underline = true,
+      update_in_insert = false, -- update diagnostics insert mode
+   })
+   vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, {
+      border = "single",
+   })
+   vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, {
+      border = "single",
+   })
+
+   -- suppress error messages from lang servers
+   vim.notify = function(msg, log_level, _opts)
+      if msg:match "exit code" then
+         return
+      end
+      if log_level == vim.log.levels.ERROR then
+         vim.api.nvim_err_writeln(msg)
+      else
+         vim.api.nvim_echo({ { msg } }, true, {})
+      end
+   end
+end
+
+M.gitsigns = function()
+   local present, gitsigns = pcall(require, "gitsigns")
+   if present then
+      gitsigns.setup {
+         signs = {
+            add = { hl = "DiffAdd", text = "│", numhl = "GitSignsAddNr" },
+            change = { hl = "DiffChange", text = "│", numhl = "GitSignsChangeNr" },
+            delete = { hl = "DiffDelete", text = "", numhl = "GitSignsDeleteNr" },
+            topdelete = { hl = "DiffDelete", text = "‾", numhl = "GitSignsDeleteNr" },
+            changedelete = { hl = "DiffChangeDelete", text = "~", numhl = "GitSignsChangeNr" },
+         },
+      }
+   end
+end
+
 return M
diff --git a/lua/plugins/configs/statusline.lua b/lua/plugins/configs/statusline.lua
index 0a8f4aa..b7bf633 100644
--- a/lua/plugins/configs/statusline.lua
+++ b/lua/plugins/configs/statusline.lua
@@ -43,10 +43,12 @@ local icon_styles = {
 }
 
 local config = require("core.utils").load_config().plugins.options.statusline
+
 -- statusline style
 local user_statusline_style = config.style
 local statusline_style = icon_styles[user_statusline_style]
--- if show short statusline on small screens
+
+-- show short statusline on small screens
 local shortline = config.shortline == false and true
 
 -- Initialize the components table
@@ -55,7 +57,6 @@ local components = {
    inactive = {},
 }
 
--- Initialize left, mid and right
 table.insert(components.active, {})
 table.insert(components.active, {})
 table.insert(components.active, {})
@@ -186,6 +187,7 @@ components.active[1][10] = {
 components.active[2][1] = {
    provider = function()
       local Lsp = vim.lsp.util.get_progress_messages()[1]
+
       if Lsp then
          local msg = Lsp.message or ""
          local percentage = Lsp.percentage or 0
@@ -207,10 +209,11 @@ components.active[2][1] = {
 
          if percentage >= 70 then
             return string.format(" %%<%s %s %s (%s%%%%) ", success_icon[frame + 1], title, msg, percentage)
-         else
-            return string.format(" %%<%s %s %s (%s%%%%) ", spinners[frame + 1], title, msg, percentage)
          end
+
+         return string.format(" %%<%s %s %s (%s%%%%) ", spinners[frame + 1], title, msg, percentage)
       end
+
       return ""
    end,
    enabled = shortline or function(winid)
diff --git a/lua/plugins/configs/telescope.lua b/lua/plugins/configs/telescope.lua
index 6db93db..5567de6 100644
--- a/lua/plugins/configs/telescope.lua
+++ b/lua/plugins/configs/telescope.lua
@@ -1,4 +1,5 @@
 local present, telescope = pcall(require, "telescope")
+
 if not present then
    return
 end
@@ -37,7 +38,7 @@ telescope.setup {
       file_sorter = require("telescope.sorters").get_fuzzy_file,
       file_ignore_patterns = { "node_modules" },
       generic_sorter = require("telescope.sorters").get_generic_fuzzy_sorter,
-      path_display = { "absolute" },
+      path_display = { "truncate" },
       winblend = 0,
       border = {},
       borderchars = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" },
diff --git a/lua/plugins/configs/treesitter.lua b/lua/plugins/configs/treesitter.lua
index 42ab87e..6e65340 100644
--- a/lua/plugins/configs/treesitter.lua
+++ b/lua/plugins/configs/treesitter.lua
@@ -1,4 +1,5 @@
 local present, ts_config = pcall(require, "nvim-treesitter.configs")
+
 if not present then
    return
 end
@@ -6,6 +7,7 @@ end
 ts_config.setup {
    ensure_installed = {
       "lua",
+      "vim",
    },
    highlight = {
       enable = true,
diff --git a/lua/plugins/init.lua b/lua/plugins/init.lua
index 283d05c..bc1004a 100644
--- a/lua/plugins/init.lua
+++ b/lua/plugins/init.lua
@@ -8,40 +8,13 @@ local use = packer.use
 
 return packer.startup(function()
    local plugin_settings = require("core.utils").load_config().plugins
-
-   -- FUNCTION: override_req, use `chadrc` plugin config override if present
-   -- name = name inside `default_config` / `chadrc`
-   -- default_req = run this if 'name' does not exist in `default_config` / `chadrc`
-   -- if override or default_req start with `(`, then strip that and assume override calls a function, not a whole file
-   local override_req = function(name, default_req)
-      local override = require("core.utils").load_config().plugins.default_plugin_config_replace[name]
-      local result
-
-      if override == nil then
-         result = default_req
-      else
-         result = override
-      end
-
-      if string.match(result, "^%(") then
-         result = result:sub(2)
-         result = result:gsub("%)%.", "').", 1)
-         return "require('" .. result
-      else
-         return "require('" .. result .. "')"
-      end
-   end
+   local override_req = require("core.utils").override_req
 
    -- this is arranged on the basis of when a plugin starts
 
    -- this is the nvchad core repo containing utilities for some features like theme swticher, no need to lazy load
-   use {
-      "Nvchad/extensions",
-   }
-
-   use {
-      "nvim-lua/plenary.nvim",
-   }
+   use "Nvchad/extensions"
+   use "nvim-lua/plenary.nvim"
 
    use {
       "wbthomason/packer.nvim",
@@ -95,7 +68,6 @@ return packer.startup(function()
 
    use {
       "nvim-treesitter/nvim-treesitter",
-      branch = "0.5-compat",
       event = "BufRead",
       config = override_req("nvim_treesitter", "plugins.configs.treesitter"),
    }
@@ -105,7 +77,7 @@ return packer.startup(function()
       "lewis6991/gitsigns.nvim",
       disable = not plugin_settings.status.gitsigns,
       opt = true,
-      config = override_req("gitsigns", "plugins.configs.gitsigns"),
+      config = override_req("gitsigns", "(plugins.configs.others).gitsigns()"),
       setup = function()
          require("core.utils").packer_lazy_load "gitsigns.nvim"
       end,
@@ -261,6 +233,6 @@ return packer.startup(function()
          require("core.mappings").telescope()
       end,
    }
-
+   -- load user defined plugins
    require("core.hooks").run("install_plugins", use)
 end)
diff --git a/lua/plugins/packerInit.lua b/lua/plugins/packerInit.lua
index 964ff59..cafdd4f 100644
--- a/lua/plugins/packerInit.lua
+++ b/lua/plugins/packerInit.lua
@@ -1,6 +1,4 @@
-local cmd = vim.cmd
-
-cmd "packadd packer.nvim"
+vim.cmd "packadd packer.nvim"
 
 local present, packer = pcall(require, "packer")
 
@@ -19,7 +17,7 @@ if not present then
       packer_path,
    }
 
-   cmd "packadd packer.nvim"
+   vim.cmd "packadd packer.nvim"
    present, packer = pcall(require, "packer")
 
    if present then
@@ -37,11 +35,10 @@ packer.init {
       prompt_border = "single",
    },
    git = {
-      clone_timeout = 600, -- Timeout, in seconds, for git clones
+      clone_timeout = 6000, -- seconds
    },
    auto_clean = true,
    compile_on_sync = true,
-   --    auto_reload_compiled = true
 }
 
 return packer