diff --git a/init.lua b/init.lua
index 4e4aa235963263ab53c6ddc2069afe516850b564..908f3e52a32e85aa22da857a0d8aa0c0c35205de 100644
--- a/init.lua
+++ b/init.lua
@@ -1,15 +1,3 @@
-vim.cmd("set number")
-vim.cmd("set syntax")
-vim.cmd("set nowrap")
-vim.cmd("set noexpandtab")
-vim.cmd("set autoindent")
--- vim.cmd("set tapstop=2")
--- vim.cmd("set softtapstop=2")
-vim.cmd("set shiftwidth=2")
-
-vim.g.loaded_netrw = 1
-vim.g.loaded_netrwPlugin = 1
-vim.g.mapleader = " "
 
 local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.n"
 if not vim.loop.fs_stat(lazypath) then
@@ -24,43 +12,7 @@ if not vim.loop.fs_stat(lazypath) then
 end
 vim.opt.rtp:prepend(vim.env.LAZY or lazypath)
 
-local opts = {
-}
-
+local opts = { }
 
+require( "vim-config" )
 require("lazy").setup( "plugins", opts)
-
-local builtin = require("telescope.builtin")
-vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
-vim.keymap.set('n', '<leader>fg', builtin.live_grep, {})
-vim.keymap.set('n', '<leader>fb', builtin.buffers, {})
-vim.keymap.set('n', '<leader>fh', builtin.help_tags, {})
-
-require("mason").setup()
--- require("telescope").setup()
-require("fzf")--.setup()
-require( 'neo-tree' )
-vim.keymap.set( 'n', '<C-n>', ':Neotree filesystem reveal right<CR>', {})
-
--- require("vgit").setup()
-require("lualine").setup( {
-	options = { theme = "dracula" }
-} )
-require("usage-tracker").setup({
-    keep_eventlog_days = 14,
-    cleanup_freq_days = 7,
-    event_wait_period_in_sec = 5,
-    inactivity_threshold_in_min = 5,
-    inactivity_check_freq_in_sec = 5,
-    verbose = 0,
-    -- telemetry_endpoint = "http://localhost:8000" -- you'll need to start the restapi for this feature
-})
-
-local config = require("nvim-treesitter.configs")
-config.setup({
-  ensure_installed = { "lua", "javascript", "c", "cpp", "dockerfile", "gitignore", "go", "json", "latex", "markdown", "make", "proto", "python", "rust", "scss", "sql", "typescript", "yaml"},
-  sync_install = false,
-  highlight = { enabble = true  },
-  indent = { enabble = true  },
-})
-
diff --git a/lua/plugins.lua b/lua/plugins.lua
index 1b0a8a2ce0a7fe19899a70d3bcc93ed4c2f6195a..11682d4e949e04744e1af1afcc86273ae827bd9b 100644
--- a/lua/plugins.lua
+++ b/lua/plugins.lua
@@ -1,19 +1,12 @@
 return {
-  { "nvim-tree/nvim-web-devicons" },
   --	{ "tanvirtin/vgit.nvim", requires = { "nvim-lua/plenary.nvim", "nvim-tree/nvim-web-devicons" }, },
-  { "williamboman/mason.nvim" },
   { "ms-jpq/coq_nvim" },
-  { "vijaymarupudi/nvim-fzf" },
-  { "eandrju/cellular-automaton.nvim" },
-  { "nvim-lua/plenary.nvim" },
-  { "f-person/git-blame.nvim" },
-  { "airblade/vim-gitgutter" },
   {
-    "aaronhallaert/advanced-git-search.nvim",
-    dependencies = { "nvim-telescope/telescope.nvim" }
+    "vijaymarupudi/nvim-fzf",
+    config = function() require("fzf") end,
   },
-  { "gaborvecsei/usage-tracker.nvim" },
+  { "eandrju/cellular-automaton.nvim" },
+  { "nvim-lua/plenary.nvim" },
   { "windwp/nvim-autopairs", event = "InsertEnter", opts={} }, 
-  { "nvim-lualine/lualine.nvim", dependencies = { "nvim-tree/nvim-web-devicons" }, lazy=false },
   { "sudormrfbin/cheatsheet.nvim", dependencies = { "nvim-telescope/telescope.nvim", "nvim-lua/popup.nvim", "nvim-lua/plenary.nvim" } },
 }
diff --git a/lua/plugins/alpha-nvim.lua b/lua/plugins/alpha-nvim.lua
index 66bd250b147a438fa19b12efb7a7059177cd3d25..bd7997f5768148a5f4414d27263296f093591cf8 100644
--- a/lua/plugins/alpha-nvim.lua
+++ b/lua/plugins/alpha-nvim.lua
@@ -1,3 +1,4 @@
+-- Splash screen
 return {
 	"goolord/alpha-nvim",
 	config = function ()
diff --git a/lua/plugins/barbar.lua b/lua/plugins/barbar.lua
deleted file mode 100644
index 89c0de96d6c2dd659f10b40e2249cd432857025c..0000000000000000000000000000000000000000
--- a/lua/plugins/barbar.lua
+++ /dev/null
@@ -1,10 +0,0 @@
-return {
-	"romgrk/barbar.nvim",
-	dependencies = {
-      "lewis6991/gitsigns.nvim", -- OPTIONAL: for git status
-      "nvim-tree/nvim-web-devicons", -- OPTIONAL: for file icons
-  },
-  init = function() vim.g.barbar_auto_setup = false end,
-  opts = { },
-    version = "^1.0.0", -- optional: only update when a new 1.x version is released
-}
diff --git a/lua/plugins/catppuccin.lua b/lua/plugins/catppuccin.lua
index 82f30b41c66e6081d0814bcdfe60c4aae53e85b4..741fc4c66026aab1ce7e13a0a054f030bafaa05f 100644
--- a/lua/plugins/catppuccin.lua
+++ b/lua/plugins/catppuccin.lua
@@ -1,3 +1,4 @@
+-- Colour Scheme
 return {
   "catppuccin/nvim",
   name = "catppuccin",
diff --git a/lua/plugins/git.lua b/lua/plugins/git.lua
new file mode 100644
index 0000000000000000000000000000000000000000..37d405a7e474257984c86f57fe8c73efb5c296d0
--- /dev/null
+++ b/lua/plugins/git.lua
@@ -0,0 +1,9 @@
+
+return {
+  { "f-person/git-blame.nvim" },
+  { "airblade/vim-gitgutter" },
+  {
+    "aaronhallaert/advanced-git-search.nvim",
+    dependencies = { "nvim-telescope/telescope.nvim" }
+  },
+}
diff --git a/lua/plugins/layout-config.lua b/lua/plugins/layout-config.lua
new file mode 100644
index 0000000000000000000000000000000000000000..b02e6f07e3e33d06082589bb37bcbcca710ca383
--- /dev/null
+++ b/lua/plugins/layout-config.lua
@@ -0,0 +1,26 @@
+return {
+  -- Icons
+  { "nvim-tree/nvim-web-devicons" },
+
+  -- The info bar along the bottom
+  {
+    "nvim-lualine/lualine.nvim",
+    dependencies = { "nvim-tree/nvim-web-devicons" },
+    lazy=false,
+    config = function() 
+      require("lualine").setup( { options = { theme = "dracula" } } )
+    end,
+  },
+
+  -- the bar along the top
+  {
+    "romgrk/barbar.nvim",
+    dependencies = {
+      "lewis6991/gitsigns.nvim", -- OPTIONAL: for git status
+      "nvim-tree/nvim-web-devicons", -- OPTIONAL: for file icons
+    },
+    init = function() vim.g.barbar_auto_setup = false end,
+    opts = { },
+    version = "^1.0.0", -- optional: only update when a new 1.x version is released
+  },
+}
diff --git a/lua/plugins/lsp_config.lua b/lua/plugins/lsp_config.lua
new file mode 100644
index 0000000000000000000000000000000000000000..932f7e51a42f5170cb8a2e10bf51ea67eda18022
--- /dev/null
+++ b/lua/plugins/lsp_config.lua
@@ -0,0 +1,6 @@
+return {
+  {
+    "williamboman/mason.nvim",
+    config = function() require("mason").setup() end,
+  },
+}
diff --git a/lua/plugins/neotree.lua b/lua/plugins/neotree.lua
index b1fbfd5a071dcd1d0e6ace8a648bde97653f7499..6c5f7b87f95bee9b3f5c695460cacb6b7603da2d 100644
--- a/lua/plugins/neotree.lua
+++ b/lua/plugins/neotree.lua
@@ -7,5 +7,9 @@ return {
     "nvim-tree/nvim-web-devicons", -- not strictly required, but recommended
     "MunifTanjim/nui.nvim",
     -- "3rd/image.nvim", -- Optional image support in preview window: See `# Preview Mode` for more information
-  }
+  },
+  config = function ()
+    require( 'neo-tree' )
+    vim.keymap.set( 'n', '<C-n>', ':Neotree filesystem reveal right<CR>', {})
+  end,
 }
diff --git a/lua/plugins/telescope.lua b/lua/plugins/telescope.lua
index 83b135b0360ee105c2ffd47a5a2e83248c906cd9..985eec64650ed74bbd556b127352bc136f2ba8cf 100644
--- a/lua/plugins/telescope.lua
+++ b/lua/plugins/telescope.lua
@@ -1,4 +1,11 @@
 return {
-	'nvim-telescope/telescope.nvim', tag = '0.1.5',
-	dependencies = { 'nvim-lua/plenary.nvim' }
+  'nvim-telescope/telescope.nvim', tag = '0.1.5',
+  dependencies = { 'nvim-lua/plenary.nvim' },
+  config = function ()
+    local builtin = require("telescope.builtin")
+    vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
+    vim.keymap.set('n', '<leader>fg', builtin.live_grep, {})
+    vim.keymap.set('n', '<leader>fb', builtin.buffers, {})
+    vim.keymap.set('n', '<leader>fh', builtin.help_tags, {})
+  end,
 }
diff --git a/lua/plugins/treesitter.lua b/lua/plugins/treesitter.lua
index c4e24cdeb39650550c6136c08f0ed8b20cdf917a..c952e6920fbcf58f15d0925055715546fdda3162 100644
--- a/lua/plugins/treesitter.lua
+++ b/lua/plugins/treesitter.lua
@@ -1 +1,32 @@
-return { "nvim-treesitter/nvim-treesitter", build = ":TSUpdate", }
+return {
+  "nvim-treesitter/nvim-treesitter",
+  build = ":TSUpdate",
+  config = function ()
+    local config = require("nvim-treesitter.configs")
+    config.setup({
+      ensure_installed = {
+	"lua",
+	"javascript",
+	"c",
+	"cpp",
+	"dockerfile",
+	"gitignore",
+	"go",
+	"json",
+	"latex",
+	"markdown",
+	"make",
+	"proto",
+	"python",
+	"rust",
+	"scss",
+	"sql",
+	"typescript",
+	"yaml"
+      },
+      sync_install = false,
+      highlight = { enabble = true  },
+      indent = { enabble = true  },
+    })
+  end,
+}
diff --git a/lua/vim-config.lua b/lua/vim-config.lua
new file mode 100644
index 0000000000000000000000000000000000000000..19c89c42a0833dd676c3bf0aa6377d10701bc6fd
--- /dev/null
+++ b/lua/vim-config.lua
@@ -0,0 +1,12 @@
+vim.cmd("set number")
+vim.cmd("set syntax")
+vim.cmd("set nowrap")
+vim.cmd("set noexpandtab")
+vim.cmd("set autoindent")
+-- vim.cmd("set tapstop=2")
+-- vim.cmd("set softtapstop=2")
+vim.cmd("set shiftwidth=2")
+
+vim.g.loaded_netrw = 1
+vim.g.loaded_netrwPlugin = 1
+vim.g.mapleader = " "