diff --git a/src/main/java/org/apache/archiva/redback/components/taskqueue/DefaultTaskQueue.java b/src/main/java/org/apache/archiva/redback/components/taskqueue/DefaultTaskQueue.java
index d85ae73..46f7067 100644
--- a/src/main/java/org/apache/archiva/redback/components/taskqueue/DefaultTaskQueue.java
+++ b/src/main/java/org/apache/archiva/redback/components/taskqueue/DefaultTaskQueue.java
@@ -152,12 +152,13 @@
         return queue.remove( task );
     }
 
-    public boolean removeAll( List<Task> tasks )
+    public boolean removeAll( List tasks )
         throws ClassCastException, NullPointerException
     {
         return queue.removeAll( tasks );
     }
 
+
     // ----------------------------------------------------------------------
     // Queue Inspection
     // ----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/archiva/redback/components/taskqueue/TaskEntryEvaluator.java b/src/main/java/org/apache/archiva/redback/components/taskqueue/TaskEntryEvaluator.java
index 9ea2043..9f96a2f 100644
--- a/src/main/java/org/apache/archiva/redback/components/taskqueue/TaskEntryEvaluator.java
+++ b/src/main/java/org/apache/archiva/redback/components/taskqueue/TaskEntryEvaluator.java
@@ -24,8 +24,8 @@
  * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
  *
  */
-public interface TaskEntryEvaluator
+public interface TaskEntryEvaluator<T extends Task>
 {
-    boolean evaluate( Task task )
+    boolean evaluate( T task )
         throws TaskQueueException;
 }
diff --git a/src/main/java/org/apache/archiva/redback/components/taskqueue/TaskExitEvaluator.java b/src/main/java/org/apache/archiva/redback/components/taskqueue/TaskExitEvaluator.java
index b92f5f7..e7cbc0b 100644
--- a/src/main/java/org/apache/archiva/redback/components/taskqueue/TaskExitEvaluator.java
+++ b/src/main/java/org/apache/archiva/redback/components/taskqueue/TaskExitEvaluator.java
@@ -24,8 +24,8 @@
  * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
  *
  */
-public interface TaskExitEvaluator
+public interface TaskExitEvaluator<T extends Task>
 {
-    boolean evaluate( Task task )
+    boolean evaluate( T task )
         throws TaskQueueException;
 }
diff --git a/src/main/java/org/apache/archiva/redback/components/taskqueue/TaskQueue.java b/src/main/java/org/apache/archiva/redback/components/taskqueue/TaskQueue.java
index 8b5794f..ff3f07c 100644
--- a/src/main/java/org/apache/archiva/redback/components/taskqueue/TaskQueue.java
+++ b/src/main/java/org/apache/archiva/redback/components/taskqueue/TaskQueue.java
@@ -29,7 +29,7 @@
  * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
  *
  */
-public interface TaskQueue
+public interface TaskQueue<T extends Task>
 {
 
     // ----------------------------------------------------------------------
@@ -40,23 +40,23 @@
      * @param task The task to add to the queue.
      * @return Returns true if the task was accepted into the queue.
      */
-    boolean put( Task task )
+    boolean put( T task )
         throws TaskQueueException;
 
-    Task take()
+    T take()
         throws TaskQueueException;
 
-    boolean remove( Task task )
+    boolean remove( T task )
         throws ClassCastException, NullPointerException;
 
-    boolean removeAll( List<Task> tasks )
+    boolean removeAll( List<T> tasks )
         throws ClassCastException, NullPointerException;
 
     // ----------------------------------------------------------------------
     // Queue Inspection
     // ----------------------------------------------------------------------
 
-    List<Task> getQueueSnapshot()
+    List<T> getQueueSnapshot()
         throws TaskQueueException;
 
     /**
@@ -67,6 +67,6 @@
      * @return the head of the queue, or null if the timeout elapsed
      * @throws InterruptedException when this thread is interrupted while waiting
      */
-    Task poll( int timeout, TimeUnit timeUnit )
+    T poll( int timeout, TimeUnit timeUnit )
         throws InterruptedException;
 }
diff --git a/src/main/java/org/apache/archiva/redback/components/taskqueue/TaskViabilityEvaluator.java b/src/main/java/org/apache/archiva/redback/components/taskqueue/TaskViabilityEvaluator.java
index edf2236..910abc9 100644
--- a/src/main/java/org/apache/archiva/redback/components/taskqueue/TaskViabilityEvaluator.java
+++ b/src/main/java/org/apache/archiva/redback/components/taskqueue/TaskViabilityEvaluator.java
@@ -26,7 +26,7 @@
  * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
  *
  */
-public interface TaskViabilityEvaluator
+public interface TaskViabilityEvaluator<T extends Task>
 {
 
     /**
@@ -34,6 +34,6 @@
      * @return Returns a list of tasks to remove from the queue.
      * @throws TaskQueueException
      */
-    Collection<Task> evaluate( Collection<Task> tasks )
+    Collection<Task> evaluate( Collection<T> tasks )
         throws TaskQueueException;
 }
diff --git a/src/main/java/org/apache/archiva/redback/components/taskqueue/execution/TaskExecutor.java b/src/main/java/org/apache/archiva/redback/components/taskqueue/execution/TaskExecutor.java
index dd8820e..5ca4c5d 100644
--- a/src/main/java/org/apache/archiva/redback/components/taskqueue/execution/TaskExecutor.java
+++ b/src/main/java/org/apache/archiva/redback/components/taskqueue/execution/TaskExecutor.java
@@ -25,8 +25,8 @@
  * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
  *
  */
-public interface TaskExecutor
+public interface TaskExecutor<T extends Task>
 {
-    void executeTask( Task task )
+    void executeTask( T task )
         throws TaskExecutionException;
 }
diff --git a/src/main/java/org/apache/archiva/redback/components/taskqueue/execution/TaskQueueExecutor.java b/src/main/java/org/apache/archiva/redback/components/taskqueue/execution/TaskQueueExecutor.java
index 28d1c39..474452b 100644
--- a/src/main/java/org/apache/archiva/redback/components/taskqueue/execution/TaskQueueExecutor.java
+++ b/src/main/java/org/apache/archiva/redback/components/taskqueue/execution/TaskQueueExecutor.java
@@ -26,7 +26,7 @@
  * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
  *
  */
-public interface TaskQueueExecutor
+public interface TaskQueueExecutor<T extends Task>
 {
 
     /**
@@ -34,7 +34,7 @@
      *
      * @return the currently executing task.
      */
-    Task getCurrentTask();
+    T getCurrentTask();
 
     /**
      * Cancels execution of this task, if it's currently running.
@@ -43,5 +43,5 @@
      * @param task The task to cancel
      * @return true if the task was cancelled, false if the task was not executing.
      */
-    boolean cancelTask( Task task );
+    boolean cancelTask( T task );
 }
