diff --git a/src/main/java/com/xtremelabs/robolectric/Robolectric.java b/src/main/java/com/xtremelabs/robolectric/Robolectric.java
index 58aedb8..fd54cf1 100644
--- a/src/main/java/com/xtremelabs/robolectric/Robolectric.java
+++ b/src/main/java/com/xtremelabs/robolectric/Robolectric.java
@@ -439,6 +439,11 @@
     public static ShadowAssetManager shadowOf(AssetManager instance) {
         return (ShadowAssetManager) Robolectric.shadowOf_(instance);
     }
+    
+    @SuppressWarnings("rawtypes")
+	public static ShadowAsyncTask shadowOf(AsyncTask instance){
+    	return (ShadowAsyncTask) Robolectric.shadowOf_( instance );
+    }
 
     public static ShadowAudioManager shadowOf(AudioManager instance) {
         return (ShadowAudioManager) shadowOf_(instance);
diff --git a/src/main/java/com/xtremelabs/robolectric/shadows/ShadowAsyncTask.java b/src/main/java/com/xtremelabs/robolectric/shadows/ShadowAsyncTask.java
index 9dd8d46..2069da7 100644
--- a/src/main/java/com/xtremelabs/robolectric/shadows/ShadowAsyncTask.java
+++ b/src/main/java/com/xtremelabs/robolectric/shadows/ShadowAsyncTask.java
@@ -1,28 +1,26 @@
 package com.xtremelabs.robolectric.shadows;
 
+import java.util.concurrent.*;
+
 import android.os.AsyncTask;
 import android.os.ShadowAsyncTaskBridge;
+
 import com.xtremelabs.robolectric.Robolectric;
 import com.xtremelabs.robolectric.internal.Implementation;
 import com.xtremelabs.robolectric.internal.Implements;
 import com.xtremelabs.robolectric.internal.RealObject;
 
-import java.util.concurrent.Callable;
-import java.util.concurrent.CancellationException;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.FutureTask;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
 @Implements(AsyncTask.class)
 public class ShadowAsyncTask<Params, Progress, Result> {
 
     @RealObject private AsyncTask<Params, Progress, Result> realAsyncTask;
-
+    
+    public static final int EXECUTE_USING_EXECUTOR = 1;
     private final FutureTask<Result> future;
     private final BackgroundWorker worker;
     private AsyncTask.Status status = AsyncTask.Status.PENDING;
-
+    private int executor = 0;
+    
 	public ShadowAsyncTask() {
 		worker = new BackgroundWorker();
 		future = new FutureTask<Result>(worker) {
@@ -88,6 +86,11 @@
         return realAsyncTask;
     }
 
+    @Implementation
+    public AsyncTask<Params, Progress, Result> executeOnExecutor(Executor exec, final Params... params) {
+    	executor = EXECUTE_USING_EXECUTOR;
+    	return this.execute( params );
+    }
 
     @Implementation
     public AsyncTask.Status getStatus() {
@@ -121,4 +124,8 @@
 			return getBridge().doInBackground(params);
 		}
 	}
+    
+    public final int getExecuteType(){
+    	return executor;
+    }
 }
