return {
  'nvim-telescope/telescope.nvim',
  dependencies = {
    'debugloop/telescope-undo.nvim',
    'molecule-man/telescope-menufacture',
    'nvim-telescope/telescope-symbols.nvim',
    'mrloop/telescope-git-branch.nvim',
    {
      'isak102/telescope-git-file-history.nvim',
      dependencies = { 'tpope/vim-fugitive' }
    },
    'kiyoon/telescope-insert-path.nvim',
    'zongben/navimark.nvim',
    'johmsalas/text-case.nvim',
  },
  event = 'VeryLazy',
  --cmd = ":Telescope",
  config = function()
    require('navimark').setup({
      --set "" to disable keymapping
      keymap = {
        base = {
          mark_toggle = "<leader>mt",
          mark_add = "<leader>ma",
          mark_remove = "<leader>mr",
          goto_next_mark = "]m",
          goto_prev_mark = "[m",
          open_mark_picker = "<leader>fm",
        },
        telescope = {
          n = {
            delete_mark = "d",
            clear_marks = "c",
            new_stack = "n",
            next_stack = "<Tab>",
            prev_stack = "<S-Tab>",
            rename_stack = "r",
            delete_stack = "D",
            open_all_marked_files = "<C-o>", -- open all marked files in current stack
          },
        },
      },
      sign = {
        text = "",
        color = "#FF0000",
      },
      --set to true to persist marks
      persist = false,
    })
    -- require('telescope').load_extension('ultisnips')
    require('telescope').setup {
      extensions = {
        menufacture = {
          mappings = {
            main_menu = { [{ 'i', 'n' }] = '<C-o>' }
          }
        },
      }
    }
    require('textcase').setup({
      enabled_methods = {
        "to_lower_case",
        "to_snake_case",
        "to_dash_case",
        "to_constant_case",
        "to_camel_case",
        "to_title_case",
        "to_path_case",
        "to_pascal_case",
      }
    })
    require('telescope').load_extension('undo')
    require('telescope').load_extension('menufacture')
    require("telescope").load_extension("git_file_history")
    require("telescope").load_extension("git_branch")
    local def = { noremap = true, silent = true }
    local map = vim.keymap.set
    map('n', '<leader>fr', function() require("telescope.builtin").resume() end, def)
    map('n', '<leader>ff', function() require("telescope").extensions.menufacture.find_files() end, def)
    map('n', '<leader>fa', function() require("telescope").extensions.menufacture.grep_string() end, def)
    map('n', '<leader>fs', function() require("telescope").extensions.menufacture.live_grep() end, def)
    map('n', '<leader>fb', function() require("telescope.builtin").buffers() end, def)
    -- map('n', '<leader>fh', function() require('telescope.builtin').help_tags() end, def)
    map('n', '<leader>fc', function() require("telescope.builtin").commands() end, def)
    map('n', '<leader>f:', function() require("telescope.builtin").command_history() end, def)
    map('n', '<leader>f/', function() require("telescope.builtin").search_history() end, def)
    map('n', '<leader>fr', function() require("telescope.builtin").registers() end, def)
    -- Neovim lsp pickers
    map('n', 'grr', function() require("telescope.builtin").lsp_references() end, def)
    map('n', 'gd', function() require("telescope.builtin").lsp_definitions() end, def)
    map('n', 'grt', "<cmd>TextCaseOpenTelescope<CR>", def)
    map('x', 'grt', "<cmd>TextCaseOpenTelescope<CR>", def)
    -- git pickers
    -- map('n', '<leader>gc', function() require("telescope.builtin").git_commits() end, def)
    -- map('n', '<leader>gC', function() require("telescope.builtin").git_bcommits() end, def)
    -- map('n', '<leader>gb', function() require("telescope.builtin").git_branches() end, def)
    -- map('n', '<leader>gb', function() require("telescope.builtin").git_branches() end, def)
    -- other
    -- map('n', '<leader>s', function() require('telescope').extensions.ultisnips.ultisnips() end, def)
    map('n', '<leader>fu', function() require("telescope").extensions.undo.undo() end, def)
    map('n', '<leader>fg', function() require('git_branch').files() end, def)
    map('n', '<C-.>', function() require('telescope_insert_path').insert_relpath_insert() end, def)
    map('n', '<C-/>', function() require('telescope_insert_path').insert_abspath_insert() end, def)
  end
}
