diff --git a/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/execute/concurrent/executors/EolExecutorService.java b/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/execute/concurrent/executors/EolExecutorService.java
index f0fa7c9..4438a47 100644
--- a/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/execute/concurrent/executors/EolExecutorService.java
+++ b/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/execute/concurrent/executors/EolExecutorService.java
@@ -272,37 +272,36 @@
 	}
 	
 	default void execute(CheckedRunnable<?> command) {
-		execute((Runnable) new EolExecutorRunnable(this, command));
+		execute((Runnable) () -> {
+			try {
+				command.runThrows();
+			}
+			catch (Exception ex) {
+				handleException(ex);
+			}
+		});
 	}
 	
 	default Future<?> submit(CheckedRunnable<?> task) {
-		return submit((Runnable) new EolExecutorRunnable(this, task));
+		return submit((Runnable) (Runnable) () -> {
+			try {
+				task.runThrows();
+			}
+			catch (Exception ex) {
+				handleException(ex);
+			}
+		});
 	}
 	
 	default <T> Future<T> submit(CheckedRunnable<?> task, T result) {
-		return submit((Runnable) new EolExecutorRunnable(this, task), result);
+		return submit((Runnable) () -> {
+			try {
+				task.runThrows();
+			}
+			catch (Exception ex) {
+				handleException(ex);
+			}
+		}, result);
 	}
 	
-	/**
-	 * Convenience class for handling checked exceptions from submitted jobs.
-	 */
-	class EolExecutorRunnable implements Runnable {
-		final CheckedRunnable<?> delegate;
-		final EolExecutorService executor;
-		public EolExecutorRunnable(EolExecutorService executor, CheckedRunnable<?> runnable) {
-			this.delegate = runnable;
-			this.executor = executor;
-		}
-		
-		@Override
-		public void run() {
-			try {
-				delegate.runThrows();
-			}
-			catch (Exception exception) {
-				executor.handleException(exception);
-			}
-		}
-	}
-
 }
diff --git a/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/execute/concurrent/executors/EolThreadPoolExecutor.java b/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/execute/concurrent/executors/EolThreadPoolExecutor.java
index 6511d9c..8dd63ee 100644
--- a/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/execute/concurrent/executors/EolThreadPoolExecutor.java
+++ b/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/execute/concurrent/executors/EolThreadPoolExecutor.java
@@ -11,7 +11,6 @@
 
 import java.util.concurrent.*;
 import org.eclipse.epsilon.common.concurrent.SingleConcurrentExecutionStatus;
-import org.eclipse.epsilon.common.function.CheckedRunnable;
 import org.eclipse.epsilon.eol.execute.concurrent.EolThreadFactory;
 import org.eclipse.epsilon.eol.execute.concurrent.executors.EolExecutorService;
 import org.eclipse.epsilon.eol.execute.concurrent.executors.EolThreadPoolExecutor;
@@ -86,30 +85,4 @@
 			execStatus.completeSuccessfully();
 		}
 	}
-	
-	protected Runnable wrapCheckedRunnable(final CheckedRunnable<?> command) {
-		return () -> {
-			try {
-				command.runThrows();
-			}
-			catch (Exception ex) {
-				handleException(ex);
-			}
-		};
-	}
-	
-	@Override
-	public void execute(CheckedRunnable<?> command) {
-		execute(wrapCheckedRunnable(command));
-	}
-	
-	@Override
-	public Future<?> submit(CheckedRunnable<?> task) {
-		return submit(wrapCheckedRunnable(task));
-	}
-	
-	@Override
-	public <T> Future<T> submit(CheckedRunnable<?> task, T result) {
-		return submit(wrapCheckedRunnable(task), result);
-	}
 }
