diff --git a/src/bob/pad/base/script/cross.py b/src/bob/pad/base/script/cross.py
index 62b8f26fe0ab140b832427bc43ab4ee618de0d6c..a3ab03e2c50b5a0271b2a4a33262d129bf6d216d 100644
--- a/src/bob/pad/base/script/cross.py
+++ b/src/bob/pad/base/script/cross.py
@@ -10,14 +10,10 @@ import click
 import jinja2
 import yaml
 
+from exposed.click import log_parameters, verbosity_option
 from tabulate import tabulate
 
 from bob.bio.base.score.load import get_negatives_positives, load_score
-from bob.extension.scripts.click_helper import (
-    bool_option,
-    log_parameters,
-    verbosity_option,
-)
 from bob.measure import farfrr
 from bob.measure.script import common_options
 from bob.measure.utils import get_fta
@@ -28,6 +24,47 @@ from .pad_commands import CRITERIA
 logger = logging.getLogger(__name__)
 
 
+def bool_option(name, short_name, desc, dflt=False, **kwargs):
+    """Generic provider for boolean options
+
+    Parameters
+    ----------
+    name : str
+        name of the option
+    short_name : str
+        short name for the option
+    desc : str
+        short description for the option
+    dflt : bool or None
+        Default value
+    **kwargs
+        All kwargs are passed to click.option.
+
+    Returns
+    -------
+    ``callable``
+        A decorator to be used for adding this option.
+    """
+
+    def custom_bool_option(func):
+        def callback(ctx, param, value):
+            ctx.meta[name.replace("-", "_")] = value
+            return value
+
+        return click.option(
+            "-%s/-n%s" % (short_name, short_name),
+            "--%s/--no-%s" % (name, name),
+            default=dflt,
+            help=desc,
+            show_default=True,
+            callback=callback,
+            is_eager=True,
+            **kwargs,
+        )(func)
+
+    return custom_bool_option
+
+
 def _ordered_load(stream, Loader=yaml.Loader, object_pairs_hook=dict):
     """Loads the contents of the YAML stream into :py:class:`collections.OrderedDict`'s
 
@@ -234,7 +271,7 @@ Examples:
 @common_options.table_option()
 @common_options.output_log_metric_option()
 @common_options.decimal_option(dflt=2, short="-dec")
-@verbosity_option()
+@verbosity_option(logger)
 @click.pass_context
 def cross(
     ctx,
diff --git a/src/bob/pad/base/script/finalize_scores.py b/src/bob/pad/base/script/finalize_scores.py
index 6164d901a886782907a19b831719432f264da69a..7d81e0b9a54ca12cbdf2a903b1af7a514d1fe0c6 100644
--- a/src/bob/pad/base/script/finalize_scores.py
+++ b/src/bob/pad/base/script/finalize_scores.py
@@ -1,8 +1,12 @@
 """Finalizes the scores that are produced by bob pad run-pipeline.
 """
+import logging
+
 import click
 
-from bob.extension.scripts.click_helper import log_parameters, verbosity_option
+from exposed.click import log_parameters, verbosity_option
+
+logger = logging.getLogger(__name__)
 
 
 @click.command(
@@ -27,7 +31,7 @@ Examples:
 @click.option(
     "--backup/--no-backup", default=True, help="Whether to backup scores."
 )
-@verbosity_option()
+@verbosity_option(logger)
 def finalize_scores(scores, method, backup, verbose):
     """Finalizes the scores given by bob pad run-pipeline
     When using bob.pad.base, Algorithms can produce several score values for
@@ -37,13 +41,11 @@ def finalize_scores(scores, method, backup, verbose):
     The conversion is done in-place (original files will be backed up).
     The order of scores will change.
     """
-    import logging
     import shutil
 
     import numpy
     import pandas as pd
 
-    logger = logging.getLogger(__name__)
     log_parameters(logger)
 
     mean = {
diff --git a/src/bob/pad/base/script/pad.py b/src/bob/pad/base/script/pad.py
index e798bb200f6b9c5fd348bc7395a125576ea42bdc..518ebb2a50ea9e1bfa7b8f8c9ce93003f243eb44 100644
--- a/src/bob/pad/base/script/pad.py
+++ b/src/bob/pad/base/script/pad.py
@@ -4,8 +4,7 @@ import click
 import pkg_resources
 
 from click_plugins import with_plugins
-
-from bob.extension.scripts.click_helper import AliasedGroup
+from exposed.click import AliasedGroup
 
 
 @with_plugins(pkg_resources.iter_entry_points("bob.pad.cli"))
diff --git a/src/bob/pad/base/script/pad_commands.py b/src/bob/pad/base/script/pad_commands.py
index 4fdabe9cb94173ed7c1b7cc9253a3a7f94bd0daa..b8227131279b3699e1ac867de4a2bf1d6b09ba6a 100644
--- a/src/bob/pad/base/script/pad_commands.py
+++ b/src/bob/pad/base/script/pad_commands.py
@@ -1,5 +1,6 @@
 """The main entry for bob pad commands.
 """
+import logging
 import os
 
 from csv import DictWriter
@@ -8,14 +9,17 @@ from functools import partial
 import click
 import numpy
 
+from exposed.click import verbosity_option
+
 import bob.measure.script.figure as measure_figure
 
-from bob.extension.scripts.click_helper import verbosity_option
 from bob.measure.script import common_options
 
 from ..error_utils import split_csv_pad, split_csv_pad_per_pai
 from . import pad_figure as figure
 
+logger = logging.getLogger(__name__)
+
 SCORE_FORMAT = "Files must be in CSV format."
 CRITERIA = (
     "eer",
@@ -190,7 +194,7 @@ def gen_pad_csv_scores(
 )
 @click.option("-s", "--n-samples", default=2, type=click.INT, show_default=True)
 @click.option("-a", "--n-attacks", default=2, type=click.INT, show_default=True)
-@verbosity_option()
+@verbosity_option(logger)
 @click.pass_context
 def gen(
     ctx,
diff --git a/src/bob/pad/base/script/run_pipeline.py b/src/bob/pad/base/script/run_pipeline.py
index 1686efeab0855b9372803f43104999e270a1e87c..f8f7e77fe635fa6c049b22a23f09e97167f57857 100644
--- a/src/bob/pad/base/script/run_pipeline.py
+++ b/src/bob/pad/base/script/run_pipeline.py
@@ -5,11 +5,13 @@ import logging
 
 import click
 
-from bob.extension.scripts.click_helper import (
+from exposed.click import (
     ConfigCommand,
     ResourceOption,
+    log_parameters,
     verbosity_option,
 )
+
 from bob.pipelines.distributed import (
     VALID_DASK_CLIENT_STRINGS,
     dask_get_partition_size,
@@ -113,7 +115,7 @@ logger = logging.getLogger(__name__)
     help="If set, it will not use Dask for the execution of the pipeline.",
     cls=ResourceOption,
 )
-@verbosity_option(cls=ResourceOption)
+@verbosity_option(cls=ResourceOption, logger=logger)
 def run_pipeline(
     pipeline,
     decision_function,
@@ -129,8 +131,6 @@ def run_pipeline(
 ):
     """Runs the simplest PAD pipeline."""
 
-    from bob.extension.scripts.click_helper import log_parameters
-
     log_parameters(logger)
 
     execute_pipeline(