Index: adblock-android/src/org/adblockplus/libadblockplus/android/AdblockEngine.java
diff --git a/adblock-android/src/org/adblockplus/libadblockplus/android/AdblockEngine.java b/adblock-android/src/org/adblockplus/libadblockplus/android/AdblockEngine.java
index 8cf6ab829fd3c032965aab4fe0e9792be8ece934..94198f33816dbc600051604113a41f9a69f50b41 100644
--- a/adblock-android/src/org/adblockplus/libadblockplus/android/AdblockEngine.java
+++ b/adblock-android/src/org/adblockplus/libadblockplus/android/AdblockEngine.java
@@ -39,6 +39,7 @@ import org.adblockplus.libadblockplus.ShowNotificationCallback;
 import org.adblockplus.libadblockplus.Subscription;
 import org.adblockplus.libadblockplus.UpdateAvailableCallback;
 import org.adblockplus.libadblockplus.UpdateCheckDoneCallback;
+import org.adblockplus.libadblockplus.Updater;
 import org.adblockplus.libadblockplus.WebRequest;
 
 import android.content.Context;
@@ -67,6 +68,7 @@ public final class AdblockEngine
    */
   private volatile Platform platform;
   private volatile FilterEngine filterEngine;
+  private volatile Updater updater;
   private volatile LogSystem logSystem;
   private volatile WebRequest webRequest;
   private volatile UpdateAvailableCallback updateAvailableCallback;
@@ -230,9 +232,9 @@ public final class AdblockEngine
 
     private void initCallbacks()
     {
-      if (engine.updateAvailableCallback != null)
+      if (engine.updater != null && engine.updateAvailableCallback != null)
       {
-        engine.filterEngine.setUpdateAvailableCallback(engine.updateAvailableCallback);
+        engine.updater.setUpdateAvailableCallback(engine.updateAvailableCallback);
       }
 
       if (engine.showNotificationCallback != null)
@@ -247,11 +249,21 @@ public final class AdblockEngine
     }
 
     public AdblockEngine build()
+    {
+      return build(false);
+    }
+
+    public AdblockEngine buildWithUpdateCheck()
+    {
+      return build(true);
+    }
+
+    private AdblockEngine build(boolean updateCheckEnabled)
     {
       initRequests();
 
       // webRequest should be ready to be used passed right after JsEngine is created
-      createEngines();
+      createEngines(updateCheckEnabled);
 
       initCallbacks();
 
@@ -263,7 +275,7 @@ public final class AdblockEngine
       return engine;
     }
 
-    private void createEngines()
+    private void createEngines(boolean updateCheckEnabled)
     {
       engine.logSystem = new AndroidLogSystem();
       engine.platform = new Platform(engine.logSystem, engine.webRequest, basePath);
@@ -277,6 +289,10 @@ public final class AdblockEngine
       }
       engine.platform.setUpFilterEngine(isAllowedConnectionCallback);
       engine.filterEngine = engine.platform.getFilterEngine();
+      if (updateCheckEnabled)
+      {
+        engine.updater = engine.platform.getUpdater();
+      }
     }
   }
 
@@ -289,14 +305,17 @@ public final class AdblockEngine
   {
     Log.w(TAG, "Dispose");
 
-    // engines first
-    if (this.filterEngine != null)
+    if (this.updater != null)
     {
       if (this.updateAvailableCallback != null)
       {
-        this.filterEngine.removeUpdateAvailableCallback();
+        this.updater.removeUpdateAvailableCallback();
       }
+    }
 
+    // engines first
+    if (this.filterEngine != null)
+    {
       if (this.filterChangeCallback != null)
       {
         this.filterEngine.removeFilterChangeCallback();
@@ -318,6 +337,12 @@ public final class AdblockEngine
       this.updateAvailableCallback = null;
     }
 
+    if (this.updateCheckDoneCallback != null)
+    {
+      this.updateCheckDoneCallback.dispose();
+      this.updateCheckDoneCallback = null;
+    }
+
     if (this.filterChangeCallback != null)
     {
       this.filterChangeCallback.dispose();
@@ -628,7 +653,8 @@ public final class AdblockEngine
 
   public void checkForUpdates()
   {
-    this.filterEngine.forceUpdateCheck(this.updateCheckDoneCallback);
+    if (updater == null) throw new IllegalStateException();
+    this.updater.forceUpdateCheck(this.updateCheckDoneCallback);
   }
 
   public FilterEngine getFilterEngine()
