diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 7ac0164..064e6ad 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -8,6 +8,7 @@
 Adrian Nistor
 Adrien Grand
 Aleksandr Ishutin
+Alex
 Alex Rosen
 Alexander Grund
 Alexei Yudichev
diff --git a/WHATSNEW b/WHATSNEW
index 7ec8144..d270d90 100644
--- a/WHATSNEW
+++ b/WHATSNEW
@@ -1,6 +1,17 @@
 Changes from Ant 1.10.10 TO Ant 1.10.11
 ======================================
 
+Fixed bugs:
+-----------
+
+
+Other changes:
+--------------
+
+ * org.apache.tools.ant.taskdefs.optional.junitlauncher.confined.JUnitLauncherTask now
+   has a new protected createExecuteWatchdog() method for allowing it to be overriden.
+   Github Pull Request #147
+
 
 Changes from Ant 1.10.9 TO Ant 1.10.10
 ======================================
diff --git a/contributors.xml b/contributors.xml
index 3904272..cff2bf7 100644
--- a/contributors.xml
+++ b/contributors.xml
@@ -64,6 +64,10 @@
   </name>
   <name>
     <first>Alex</first>
+    <last></last>
+  </name>
+  <name>
+    <first>Alex</first>
     <last>Rosen</last>
   </name>
   <name>
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/confined/JUnitLauncherTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/confined/JUnitLauncherTask.java
index fa28844..dbe8a1f 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/confined/JUnitLauncherTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/confined/JUnitLauncherTask.java
@@ -344,7 +344,8 @@
     private int executeForkedTest(final ForkDefinition forkDefinition, final CommandlineJava commandlineJava) {
         final LogOutputStream outStream = new LogOutputStream(this, Project.MSG_INFO);
         final LogOutputStream errStream = new LogOutputStream(this, Project.MSG_WARN);
-        final ExecuteWatchdog watchdog = forkDefinition.getTimeout() > 0 ? new ExecuteWatchdog(forkDefinition.getTimeout()) : null;
+        final ExecuteWatchdog watchdog = forkDefinition.getTimeout() > 0
+                ? createExecuteWatchdog(forkDefinition.getTimeout()) : null;
         final Execute execute = new Execute(new PumpStreamHandler(outStream, errStream), watchdog);
         execute.setCommandline(commandlineJava.getCommandline());
         execute.setAntRun(getProject());
@@ -365,6 +366,10 @@
         return (watchdog != null && watchdog.killedProcess()) ? Constants.FORK_EXIT_CODE_TIMED_OUT : exitCode;
     }
 
+    protected ExecuteWatchdog createExecuteWatchdog(long timeout) {
+        return new ExecuteWatchdog(timeout);
+    }
+
     private java.nio.file.Path newLaunchDefinitionXml() {
         return FileUtils.getFileUtils()
             .createTempFile(getProject(), null, ".xml", null, true, true)
