diff --git a/CHANGELOG.md b/CHANGELOG.md
index ade7eac..f54b037 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,12 @@
 
 [Unreleased]: https://github.com/chaostoolkit/chaostoolkit-lib/compare/0.19.0...HEAD
 
+## Changed
+
+- renamed `FailedActivity` to a more active style: `ActivityFailed` [#17][17]
+
+[17]: https://github.com/chaostoolkit/chaostoolkit-lib/issues/17
+
 ## Added
 
 - support for loading experiments from a remote endpoint using the HTTP protocol
diff --git a/chaoslib/activity.py b/chaoslib/activity.py
index c1e7e0b..ceab369 100644
--- a/chaoslib/activity.py
+++ b/chaoslib/activity.py
@@ -13,7 +13,7 @@ from typing import Any, Iterator, List
 from logzero import logger
 
 from chaoslib.caching import lookup_activity
-from chaoslib.exceptions import FailedActivity, InvalidActivity, \
+from chaoslib.exceptions import ActivityFailed, InvalidActivity, \
     InvalidExperiment
 from chaoslib.provider.http import run_http_activity, validate_http_activity
 from chaoslib.provider.python import run_python_activity, \
@@ -140,7 +140,7 @@ def execute_activity(activity: Activity, configuration: Configuration,
     if ref:
         activity = lookup_activity(ref)
         if not activity:
-            raise FailedActivity(
+            raise ActivityFailed(
                 "could not find referenced activity '{r}'".format(r=ref))
 
     pauses = activity.get("pauses", {})
@@ -175,7 +175,7 @@ def execute_activity(activity: Activity, configuration: Configuration,
             logger.debug("  => succeeded with '{r}'".format(r=result))
         else:
             logger.debug("  => succeeded without any result value")
-    except FailedActivity as x:
+    except ActivityFailed as x:
         error_msg = str(x)
         run["status"] = "failed"
         run["output"] = result
@@ -201,7 +201,7 @@ def run_activity(activity: Activity, configuration: Configuration,
                  secrets: Secrets) -> Any:
     """
     Run the given activity and return its result. If the activity defines a
-    `timeout` this function raises :exc:`FailedActivity`.
+    `timeout` this function raises :exc:`ActivityFailed`.
 
     This function assumes the activity is valid as per
     `ensure_layer_activity_is_valid`. Please be careful not to call this
diff --git a/chaoslib/exceptions.py b/chaoslib/exceptions.py
index ef3d92c..a50043d 100644
--- a/chaoslib/exceptions.py
+++ b/chaoslib/exceptions.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 __all__ = ["ChaosException", "InvalidExperiment", "InvalidActivity",
-           "FailedActivity", "DiscoveryFailed", "InvalidSource"]
+           "ActivityFailed", "DiscoveryFailed", "InvalidSource"]
 
 
 class ChaosException(Exception):
@@ -16,10 +16,14 @@ class InvalidExperiment(ChaosException):
     pass
 
 
-class FailedActivity(ChaosException):
+class ActivityFailed(ChaosException):
     pass
 
 
+# please use ActivityFailed rather than the old name for this exception
+FailedActivity = ActivityFailed
+
+
 class DiscoveryFailed(ChaosException):
     pass
 
diff --git a/chaoslib/experiment.py b/chaoslib/experiment.py
index c3a0382..04f69b2 100644
--- a/chaoslib/experiment.py
+++ b/chaoslib/experiment.py
@@ -14,7 +14,7 @@ from chaoslib import __version__
 from chaoslib.activity import ensure_activity_is_valid, run_activities
 from chaoslib.caching import with_cache, lookup_activity
 from chaoslib.deprecation import warn_about_deprecated_features
-from chaoslib.exceptions import FailedActivity, InvalidActivity, \
+from chaoslib.exceptions import ActivityFailed, InvalidActivity, \
     InvalidExperiment
 from chaoslib.configuration import load_configuration
 from chaoslib.hypothesis import ensure_hypothesis_is_valid, \
@@ -191,11 +191,11 @@ def run_experiment(experiment: Experiment,
             journal["steady_states"]["before"] = state
             if state is not None and not state["steady_state_met"]:
                 p = state["probes"][-1]
-                raise FailedActivity(
+                raise ActivityFailed(
                     "Steady state probe '{p}' is not in the given tolerance "
                     "so failing this experiment".format(
                         p=p["activity"]["name"]))
-        except FailedActivity as a:
+        except ActivityFailed as a:
             journal["steady_states"]["before"] = state
             journal["status"] = "failed"
             logger.fatal(str(a))
@@ -215,11 +215,11 @@ def run_experiment(experiment: Experiment,
                     journal["steady_states"]["after"] = state
                     if state is not None and not state["steady_state_met"]:
                         p = state["probes"][-1]
-                        raise FailedActivity(
+                        raise ActivityFailed(
                             "Steady state probe '{p}' is not in the given "
                             "tolerance so failing this experiment".format(
                                 p=p["activity"]["name"]))
-                except FailedActivity as a:
+                except ActivityFailed as a:
                     journal["status"] = "failed"
                     logger.fatal(str(a))
     except (KeyboardInterrupt, SystemExit):
diff --git a/chaoslib/hypothesis.py b/chaoslib/hypothesis.py
index be58b45..2f1727f 100644
--- a/chaoslib/hypothesis.py
+++ b/chaoslib/hypothesis.py
@@ -16,7 +16,7 @@ from logzero import logger
 
 from chaoslib.activity import ensure_activity_is_valid, execute_activity, \
     run_activity
-from chaoslib.exceptions import FailedActivity, InvalidActivity, \
+from chaoslib.exceptions import ActivityFailed, InvalidActivity, \
     InvalidExperiment
 from chaoslib.types import Configuration, Experiment, Run, Secrets, Tolerance
 
diff --git a/chaoslib/provider/http.py b/chaoslib/provider/http.py
index 9131de3..b235925 100644
--- a/chaoslib/provider/http.py
+++ b/chaoslib/provider/http.py
@@ -9,7 +9,7 @@ from logzero import logger
 import requests
 
 from chaoslib import substitute
-from chaoslib.exceptions import FailedActivity, InvalidActivity
+from chaoslib.exceptions import ActivityFailed, InvalidActivity
 from chaoslib.types import Activity, Configuration, Secrets
 
 
@@ -25,7 +25,7 @@ def run_http_activity(activity: Activity, configuration: Configuration,
     A HTTP activity is a call to a HTTP endpoint and its result is returned as
     the raw result of this activity.
 
-    Raises :exc:`FailedActivity` when a timeout occurs for the request or when
+    Raises :exc:`ActivityFailed` when a timeout occurs for the request or when
     the endpoint returns a status in the 400 or 500 ranges.
 
     This should be considered as a private function.
@@ -81,10 +81,10 @@ def run_http_activity(activity: Activity, configuration: Configuration,
             "body": body
         }
     except requests.exceptions.ConnectionError as cex:
-        raise FailedActivity("failed to connect to {u}: {x}".format(
+        raise ActivityFailed("failed to connect to {u}: {x}".format(
             u=url, x=str(cex)))
     except requests.exceptions.Timeout:
-        raise FailedActivity("activity took too long to complete")
+        raise ActivityFailed("activity took too long to complete")
 
 
 def validate_http_activity(activity: Activity):
diff --git a/chaoslib/provider/process.py b/chaoslib/provider/process.py
index c981c3d..83faa95 100644
--- a/chaoslib/provider/process.py
+++ b/chaoslib/provider/process.py
@@ -10,7 +10,7 @@ from typing import Any
 from logzero import logger
 
 from chaoslib import substitute
-from chaoslib.exceptions import FailedActivity, InvalidActivity
+from chaoslib.exceptions import ActivityFailed, InvalidActivity
 from chaoslib.types import Activity, Configuration, Secrets
 
 
@@ -25,7 +25,7 @@ def run_process_activity(activity: Activity, configuration: Configuration,
     A process activity is an executable the current user is allowed to apply.
     The raw result of that command is returned as bytes of this activity.
 
-    Raises :exc:`FailedActivity` when a the process takes longer than the
+    Raises :exc:`ActivityFailed` when a the process takes longer than the
     timeout defined in the activity. There is no timeout by default so be
     careful when you do not explicitely provide one.
 
@@ -56,7 +56,7 @@ def run_process_activity(activity: Activity, configuration: Configuration,
             arguments, timeout=timeout, stdout=subprocess.PIPE,
             stderr=subprocess.PIPE, env=os.environ, shell=shell)
     except subprocess.TimeoutExpired:
-        raise FailedActivity("process activity took too long to complete")
+        raise ActivityFailed("process activity took too long to complete")
 
     return {
         "status": proc.returncode,
diff --git a/chaoslib/provider/python.py b/chaoslib/provider/python.py
index 61752a1..53eda80 100644
--- a/chaoslib/provider/python.py
+++ b/chaoslib/provider/python.py
@@ -10,7 +10,7 @@ from typing import Any
 from logzero import logger
 
 from chaoslib import substitute
-from chaoslib.exceptions import FailedActivity, InvalidActivity
+from chaoslib.exceptions import ActivityFailed, InvalidActivity
 from chaoslib.types import Activity, Configuration, Secrets
 
 
@@ -49,7 +49,7 @@ def run_python_activity(activity: Activity, configuration: Configuration,
     try:
         return func(**arguments)
     except Exception as x:
-        raise FailedActivity(
+        raise ActivityFailed(
             traceback.format_exception_only(
                 type(x), x)[0].strip()).with_traceback(
                     sys.exc_info()[2])

Migrate FailedActivity exception to ActivityFailed
diff --git a/tests/test_experiment.py b/tests/test_experiment.py
index fa3e1c1..9eefb85 100644
--- a/tests/test_experiment.py
+++ b/tests/test_experiment.py
@@ -10,7 +10,7 @@ import pytest
 import requests_mock
 import yaml
 
-from chaoslib.exceptions import FailedActivity, InvalidActivity, \
+from chaoslib.exceptions import ActivityFailed, InvalidActivity, \
     InvalidExperiment
 from chaoslib.experiment import ensure_experiment_is_valid, load_experiment, \
     run_experiment, run_activities
diff --git a/tests/test_probe.py b/tests/test_probe.py
index 6266702..43ff4e4 100644
--- a/tests/test_probe.py
+++ b/tests/test_probe.py
@@ -6,7 +6,7 @@ import warnings
 import pytest
 import requests_mock
 
-from chaoslib.exceptions import FailedActivity, InvalidActivity
+from chaoslib.exceptions import ActivityFailed, InvalidActivity
 from chaoslib.activity import ensure_activity_is_valid, run_activity
 from chaoslib.provider import process as chaoslib_process
 from chaoslib.types import Probe
@@ -131,7 +131,7 @@ def test_run_process_probe_can_timeout():
     probe = probes.ProcProbe
     probe["provider"]["timeout"] = 0.0001
 
-    with pytest.raises(FailedActivity) as exc:
+    with pytest.raises(ActivityFailed) as exc:
         run_activity(
             probes.ProcProbe, config.EmptyConfig, 
             experiments.Secrets).decode("utf-8")
@@ -177,5 +177,5 @@ def test_run_http_probe_can_expect_failure():
 
         try:
             run_activity(probe, config.EmptyConfig, experiments.Secrets)
-        except FailedActivity:
+        except ActivityFailed:
             pytest.fail("activity should not have failed")

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest
apt-get update apt-get install -y gcc
3.6
requirements.txt requirements-dev.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==22.2.0
certifi==2021.5.30
-e git+https://github.com/chaostoolkit/chaostoolkit-lib.git@85c2926bef4dd22ebf1b310da3a173d4fcdb83a3#egg=chaostoolkit_lib
charset-normalizer==2.0.12
coverage==6.2
hvac==0.11.2
idna==3.10
importlib-metadata==4.8.3
iniconfig==1.1.1
jsonpath-ng==1.7.0
logzero==1.7.0
packaging==21.3
pluggy==1.0.0
ply==3.4
py==1.11.0
pycodestyle==2.10.0
pyhcl==0.2.3
pyparsing==3.1.4
pytest==7.0.1
pytest-cov==4.0.0
pytest-sugar==0.9.6
PyYAML==6.0.1
requests==2.27.1
requests-mock==1.12.1
six==1.17.0
termcolor==1.1.0
tomli==1.2.3
typing_extensions==4.1.1
urllib3==1.26.20
zipp==3.6.0

name: chaostoolkit-lib
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - attrs==22.2.0
      - charset-normalizer==2.0.12
      - coverage==6.2
      - hvac==0.11.2
      - idna==3.10
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - jsonpath-ng==1.7.0
      - logzero==1.7.0
      - packaging==21.3
      - pluggy==1.0.0
      - ply==3.4
      - py==1.11.0
      - pycodestyle==2.10.0
      - pyhcl==0.2.3
      - pyparsing==3.1.4
      - pytest==7.0.1
      - pytest-cov==4.0.0
      - pytest-sugar==0.9.6
      - pyyaml==6.0.1
      - requests==2.27.1
      - requests-mock==1.12.1
      - six==1.17.0
      - termcolor==1.1.0
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - urllib3==1.26.20
      - zipp==3.6.0
prefix: /opt/conda/envs/chaostoolkit-lib

tests/test_experiment.py::test_empty_experiment_is_invalid tests/test_experiment.py::test_load_json tests/test_experiment.py::test_unknown_extension tests/test_experiment.py::test_experiment_must_have_a_method tests/test_experiment.py::test_experiment_must_have_at_least_one_step tests/test_experiment.py::test_experiment_must_have_a_title tests/test_experiment.py::test_experiment_must_have_a_description tests/test_experiment.py::test_experiment_may_not_have_a_hypothesis tests/test_experiment.py::test_experiment_hypothesis_must_have_a_title tests/test_experiment.py::test_experiment_hypothesis_must_have_a_valid_probe tests/test_experiment.py::test_valid_experiment tests/test_experiment.py::test_valid_experiment_from_json tests/test_experiment.py::test_can_run_experiment_in_dry_mode tests/test_experiment.py::test_can_iterate_over_activities tests/test_experiment.py::test_no_rollback_even_on_SIGINT tests/test_experiment.py::test_no_rollback_even_on_SystemExit tests/test_experiment.py::test_probes_can_reference_each_other tests/test_experiment.py::test_probes_missing_ref_should_fail_the_experiment tests/test_experiment.py::test_experiment_with_steady_state tests/test_experiment.py::test_experiment_may_run_without_steady_state tests/test_experiment.py::test_should_bail_experiment_when_env_was_not_found tests/test_experiment.py::test_validate_all_tolerance_probes tests/test_probe.py::test_empty_probe_is_invalid tests/test_probe.py::test_probe_must_have_a_type tests/test_probe.py::test_probe_must_have_a_known_type tests/test_probe.py::test_probe_provider_must_have_a_known_type tests/test_probe.py::test_python_probe_must_have_a_module_path tests/test_probe.py::test_python_probe_must_have_a_function_name tests/test_probe.py::test_python_probe_must_be_importable tests/test_probe.py::test_python_probe_func_must_have_enough_args tests/test_probe.py::test_python_probe_func_cannot_have_too_many_args tests/test_probe.py::test_process_probe_have_a_path tests/test_probe.py::test_process_probe_path_must_exist tests/test_probe.py::test_http_probe_must_have_a_url tests/test_probe.py::test_run_python_probe_should_return_raw_value tests/test_probe.py::test_run_process_probe_should_pass_arguments_in_array tests/test_probe.py::test_run_process_probe_can_pass_arguments_as_string tests/test_probe.py::test_run_process_probe_can_timeout tests/test_probe.py::test_run_http_probe_should_return_parsed_json_value tests/test_probe.py::test_run_http_probe_must_be_serializable_to_json tests/test_probe.py::test_run_http_probe_should_return_raw_text_value tests/test_probe.py::test_run_http_probe_can_expect_failure
tests/test_experiment.py::test_load_yaml tests/test_experiment.py::test_load_yml tests/test_experiment.py::test_valid_experiment_from_yaml tests/test_probe.py::test_run_process_probe_should_return_raw_value
chaoslib/activity.py chaoslib/provider/process.py chaoslib/experiment.py chaoslib/exceptions.py CHANGELOG.md chaoslib/provider/python.py chaoslib/provider/http.py chaoslib/hypothesis.py
chaoslib/activity.py chaoslib/provider/process.py chaoslib/experiment.py chaoslib/exceptions.py CHANGELOG.md chaoslib/provider/python.py chaoslib/provider/http.py chaoslib/hypothesis.py