diff --git a/app/src/main/java/com/google/reviewit/AvatarTask.java b/app/src/main/java/com/google/reviewit/AvatarTask.java
index 9369582..f47d305 100644
--- a/app/src/main/java/com/google/reviewit/AvatarTask.java
+++ b/app/src/main/java/com/google/reviewit/AvatarTask.java
@@ -30,7 +30,7 @@
 import com.google.gerrit.extensions.restapi.BinaryResult;
 import com.google.gerrit.extensions.restapi.RestApiException;
 import com.google.reviewit.app.ReviewItApp;
-import com.google.reviewit.util.ObservableAsynTask;
+import com.google.reviewit.util.ObservableAsyncTask;
 import com.urswolfer.gerrit.client.rest.accounts.Accounts;
 import com.urswolfer.gerrit.client.rest.http.HttpStatusException;
 
@@ -42,7 +42,7 @@
  * If available the avatar image is taken from the avatar cache, if not it
  * is downloaded and stored in the avatar cache.
  */
-public class AvatarTask extends ObservableAsynTask<AccountInfo, Void, Bitmap> {
+public class AvatarTask extends ObservableAsyncTask<AccountInfo, Void, Bitmap> {
   private static final String TAG = AvatarTask.class.getName();
 
   private final ReviewItApp app;
diff --git a/app/src/main/java/com/google/reviewit/PostReviewFragment.java b/app/src/main/java/com/google/reviewit/PostReviewFragment.java
index dba09c7..a084069 100644
--- a/app/src/main/java/com/google/reviewit/PostReviewFragment.java
+++ b/app/src/main/java/com/google/reviewit/PostReviewFragment.java
@@ -24,7 +24,7 @@
 
 import com.google.gerrit.extensions.restapi.RestApiException;
 import com.google.reviewit.app.Change;
-import com.google.reviewit.util.ObservableAsynTask;
+import com.google.reviewit.util.ObservableAsyncTask;
 import com.google.reviewit.util.TaskObserver;
 import com.google.reviewit.widget.ApprovalsView;
 import com.google.reviewit.widget.ExpandableCommitMessageView;
@@ -89,7 +89,7 @@
         v.setEnabled(false);
         v.setBackgroundColor(widgetUtil.color(R.color.buttonDisabled));
         final String msg = textOf(R.id.changeMessageInput).trim();
-        new ObservableAsynTask<Change, Void, String>() {
+        new ObservableAsyncTask<Change, Void, String>() {
           @Override
           protected String doInBackground(Change... changes) {
             Change change = changes[0];
@@ -129,7 +129,7 @@
         v.setEnabled(false);
         v.setBackgroundColor(widgetUtil.color(R.color.buttonDisabled));
         final String msg = textOf(R.id.changeMessageInput).trim();
-        new ObservableAsynTask<Change, Void, String>() {
+        new ObservableAsyncTask<Change, Void, String>() {
           @Override
           protected String doInBackground(Change... changes) {
             Change change = changes[0];
diff --git a/app/src/main/java/com/google/reviewit/SortChangesFragment.java b/app/src/main/java/com/google/reviewit/SortChangesFragment.java
index 8dab019..0079bd7 100644
--- a/app/src/main/java/com/google/reviewit/SortChangesFragment.java
+++ b/app/src/main/java/com/google/reviewit/SortChangesFragment.java
@@ -45,7 +45,7 @@
 import com.google.reviewit.util.ChangeUtil;
 import com.google.reviewit.widget.ChangeBox;
 import com.google.reviewit.util.NoOpAnimatorListener;
-import com.google.reviewit.util.ObservableAsynTask;
+import com.google.reviewit.util.ObservableAsyncTask;
 import com.google.reviewit.util.TaskObserver;
 import com.google.reviewit.util.WidgetUtil;
 import com.urswolfer.gerrit.client.rest.http.HttpStatusException;
@@ -599,7 +599,7 @@
   }
 
   private void reloadChange() {
-    new ObservableAsynTask<Change, Void, String>() {
+    new ObservableAsyncTask<Change, Void, String>() {
       @Override
       protected String doInBackground(Change... changes) {
         Change change = changes[0];
diff --git a/app/src/main/java/com/google/reviewit/util/ObservableAsynTask.java b/app/src/main/java/com/google/reviewit/util/ObservableAsyncTask.java
similarity index 93%
rename from app/src/main/java/com/google/reviewit/util/ObservableAsynTask.java
rename to app/src/main/java/com/google/reviewit/util/ObservableAsyncTask.java
index f9939fb..e462d9c 100644
--- a/app/src/main/java/com/google/reviewit/util/ObservableAsynTask.java
+++ b/app/src/main/java/com/google/reviewit/util/ObservableAsyncTask.java
@@ -16,7 +16,7 @@
 
 import android.os.AsyncTask;
 
-public abstract class ObservableAsynTask<Params, Progress, Result>
+public abstract class ObservableAsyncTask<Params, Progress, Result>
     extends AsyncTask<Params, Progress, Result> {
 
   @Override
diff --git a/app/src/main/java/com/google/reviewit/widget/ChangeBox.java b/app/src/main/java/com/google/reviewit/widget/ChangeBox.java
index dd5288e..d355ac3 100644
--- a/app/src/main/java/com/google/reviewit/widget/ChangeBox.java
+++ b/app/src/main/java/com/google/reviewit/widget/ChangeBox.java
@@ -34,7 +34,7 @@
 import com.google.reviewit.app.Preferences;
 import com.google.reviewit.app.ReviewItApp;
 import com.google.reviewit.util.FormatUtil;
-import com.google.reviewit.util.ObservableAsynTask;
+import com.google.reviewit.util.ObservableAsyncTask;
 import com.google.reviewit.util.WidgetUtil;
 
 import java.util.ArrayList;
@@ -155,7 +155,7 @@
   }
 
   private void setInlineCommentCount(final ReviewItApp app, Change change) {
-    new ObservableAsynTask<Change, Void, Integer>() {
+    new ObservableAsyncTask<Change, Void, Integer>() {
       private TextView comments;
 
       @Override
