diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index f568265..7d9bc1a 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -66,6 +66,17 @@
                 <data android:mimeType="application/x-mpegurl" />
              </intent-filter>
         </activity>
+
+        <!-- we add the activity-alias for shortcut backward compatibility -->
+        <activity-alias android:name="com.cooliris.media.Gallery"
+                android:targetActivity="com.android.gallery3d.app.Gallery"
+                android:configChanges="keyboardHidden|orientation|screenSize"
+                android:label="string/app_name">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+            </intent-filter>
+        </activity-alias>
+
         <activity android:name="com.android.gallery3d.app.Gallery" android:label="@string/app_name"
                 android:configChanges="keyboardHidden|orientation|screenSize">
             <intent-filter>
@@ -200,18 +211,18 @@
                 android:syncable="false"
                 android:grantUriPermissions="true"
                 android:authorities="com.android.gallery3d.provider" />
-        <activity android:name="com.android.gallery3d.widget.WidgetClickHandler" />
+        <activity android:name="com.android.gallery3d.gadget.WidgetClickHandler" />
         <activity android:name="com.android.gallery3d.app.DialogPicker"
                 android:configChanges="keyboardHidden|orientation|screenSize"
                 android:theme="@style/DialogPickerTheme"/>
         <activity android:name="com.android.gallery3d.app.AlbumPicker"
                 android:configChanges="keyboardHidden|orientation|screenSize"
                 android:theme="@style/DialogPickerTheme"/>
-        <activity android:name="com.android.gallery3d.widget.WidgetTypeChooser"
+        <activity android:name="com.android.gallery3d.gadget.WidgetTypeChooser"
                 android:configChanges="keyboardHidden|orientation|screenSize"
                 android:theme="@style/DialogPickerTheme"/>
 
-        <receiver android:name="com.android.gallery3d.widget.WidgetProvider"
+        <receiver android:name="com.android.gallery3d.gadget.PhotoAppWidgetProvider"
                 android:label="@string/appwidget_title">
             <intent-filter>
                 <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
@@ -226,9 +237,9 @@
                 <data android:scheme="package"/>
             </intent-filter>
         </receiver>
-        <service android:name="com.android.gallery3d.widget.WidgetService"
+        <service android:name="com.android.gallery3d.gadget.WidgetService"
                 android:permission="android.permission.BIND_REMOTEVIEWS"/>
-        <activity android:name="com.android.gallery3d.widget.WidgetConfigure"
+        <activity android:name="com.android.gallery3d.gadget.WidgetConfigure"
                 android:configChanges="keyboardHidden|orientation|screenSize"
                 android:theme="@style/android:Theme.Translucent.NoTitleBar">
             <intent-filter>
diff --git a/res/xml/widget_info.xml b/res/xml/widget_info.xml
index 5f71192..522f848 100644
--- a/res/xml/widget_info.xml
+++ b/res/xml/widget_info.xml
@@ -5,4 +5,4 @@
         android:updatePeriodMillis="86400000"
         android:previewImage="@drawable/preview"
         android:initialLayout="@layout/appwidget_main"
-        android:configure="com.android.gallery3d.widget.WidgetConfigure"/>
+        android:configure="com.android.gallery3d.gadget.WidgetConfigure"/>
diff --git a/src/com/android/gallery3d/app/GalleryAppImpl.java b/src/com/android/gallery3d/app/GalleryAppImpl.java
index a11d920..8d25ebf 100644
--- a/src/com/android/gallery3d/app/GalleryAppImpl.java
+++ b/src/com/android/gallery3d/app/GalleryAppImpl.java
@@ -19,10 +19,10 @@
 import com.android.gallery3d.data.DataManager;
 import com.android.gallery3d.data.DownloadCache;
 import com.android.gallery3d.data.ImageCacheService;
+import com.android.gallery3d.gadget.WidgetUtils;
 import com.android.gallery3d.picasasource.PicasaSource;
 import com.android.gallery3d.util.GalleryUtils;
 import com.android.gallery3d.util.ThreadPool;
-import com.android.gallery3d.widget.WidgetUtils;
 
 import android.app.Application;
 import android.content.Context;
diff --git a/src/com/android/gallery3d/widget/LocalPhotoSource.java b/src/com/android/gallery3d/gadget/LocalPhotoSource.java
similarity index 99%
rename from src/com/android/gallery3d/widget/LocalPhotoSource.java
rename to src/com/android/gallery3d/gadget/LocalPhotoSource.java
index de16a71..ad77de5 100644
--- a/src/com/android/gallery3d/widget/LocalPhotoSource.java
+++ b/src/com/android/gallery3d/gadget/LocalPhotoSource.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.gallery3d.widget;
+package com.android.gallery3d.gadget;
 
 import com.android.gallery3d.app.GalleryApp;
 import com.android.gallery3d.common.Utils;
diff --git a/src/com/android/gallery3d/widget/MediaSetSource.java b/src/com/android/gallery3d/gadget/MediaSetSource.java
similarity index 98%
rename from src/com/android/gallery3d/widget/MediaSetSource.java
rename to src/com/android/gallery3d/gadget/MediaSetSource.java
index 1677f69..c1687e0 100644
--- a/src/com/android/gallery3d/widget/MediaSetSource.java
+++ b/src/com/android/gallery3d/gadget/MediaSetSource.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.gallery3d.widget;
+package com.android.gallery3d.gadget;
 
 import com.android.gallery3d.common.Utils;
 import com.android.gallery3d.data.ContentListener;
diff --git a/src/com/android/gallery3d/widget/WidgetProvider.java b/src/com/android/gallery3d/gadget/PhotoAppWidgetProvider.java
similarity index 76%
rename from src/com/android/gallery3d/widget/WidgetProvider.java
rename to src/com/android/gallery3d/gadget/PhotoAppWidgetProvider.java
index 0a2fbfb..814ede2 100644
--- a/src/com/android/gallery3d/widget/WidgetProvider.java
+++ b/src/com/android/gallery3d/gadget/PhotoAppWidgetProvider.java
@@ -14,21 +14,23 @@
  * limitations under the License.
  */
 
-package com.android.gallery3d.widget;
+package com.android.gallery3d.gadget;
 
 import com.android.gallery3d.R;
-import com.android.gallery3d.widget.WidgetDatabaseHelper.Entry;
+import com.android.gallery3d.gadget.WidgetDatabaseHelper.Entry;
 
 import android.app.PendingIntent;
 import android.appwidget.AppWidgetManager;
 import android.appwidget.AppWidgetProvider;
 import android.content.Context;
 import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
 import android.net.Uri;
 import android.util.Log;
 import android.widget.RemoteViews;
 
-public class WidgetProvider extends AppWidgetProvider {
+public class PhotoAppWidgetProvider extends AppWidgetProvider {
 
     private static final String TAG = "WidgetProvider";
 
@@ -88,12 +90,26 @@
     static RemoteViews buildFrameWidget(Context context, int appWidgetId, Entry entry) {
         RemoteViews views = new RemoteViews(
                 context.getPackageName(), R.layout.photo_frame);
-        views.setImageViewBitmap(R.id.photo, entry.image);
-        Intent clickIntent = new Intent(context,
-                WidgetClickHandler.class).setData(entry.imageUri);
-        PendingIntent pendingClickIntent = PendingIntent.getActivity(context, 0,
-                clickIntent, PendingIntent.FLAG_CANCEL_CURRENT);
-        views.setOnClickPendingIntent(R.id.photo, pendingClickIntent);
+        try {
+            byte[] data = entry.imageData;
+            Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
+            views.setImageViewBitmap(R.id.photo, bitmap);
+        } catch (Throwable t) {
+            Log.w(TAG, "cannot load widget image: " + appWidgetId, t);
+        }
+
+        if (entry.imageUri != null) {
+            try {
+                Uri uri = Uri.parse(entry.imageUri);
+                Intent clickIntent = new Intent(context, WidgetClickHandler.class)
+                        .setData(uri);
+                PendingIntent pendingClickIntent = PendingIntent.getActivity(context, 0,
+                        clickIntent, PendingIntent.FLAG_CANCEL_CURRENT);
+                views.setOnClickPendingIntent(R.id.photo, pendingClickIntent);
+            } catch (Throwable t) {
+                Log.w(TAG, "cannot load widget uri: " + appWidgetId, t);
+            }
+        }
         return views;
     }
 
diff --git a/src/com/android/gallery3d/widget/WidgetClickHandler.java b/src/com/android/gallery3d/gadget/WidgetClickHandler.java
similarity index 97%
rename from src/com/android/gallery3d/widget/WidgetClickHandler.java
rename to src/com/android/gallery3d/gadget/WidgetClickHandler.java
index 362e4d2..075644d 100644
--- a/src/com/android/gallery3d/widget/WidgetClickHandler.java
+++ b/src/com/android/gallery3d/gadget/WidgetClickHandler.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.gallery3d.widget;
+package com.android.gallery3d.gadget;
 
 import com.android.gallery3d.R;
 import com.android.gallery3d.app.Gallery;
diff --git a/src/com/android/gallery3d/widget/WidgetConfigure.java b/src/com/android/gallery3d/gadget/WidgetConfigure.java
similarity index 97%
rename from src/com/android/gallery3d/widget/WidgetConfigure.java
rename to src/com/android/gallery3d/gadget/WidgetConfigure.java
index 3bcd9c4..747cc3a 100644
--- a/src/com/android/gallery3d/widget/WidgetConfigure.java
+++ b/src/com/android/gallery3d/gadget/WidgetConfigure.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.gallery3d.widget;
+package com.android.gallery3d.gadget;
 
 import com.android.gallery3d.R;
 import com.android.gallery3d.app.AlbumPicker;
@@ -72,7 +72,7 @@
 
     private void updateWidgetAndFinish(WidgetDatabaseHelper.Entry entry) {
         AppWidgetManager manager = AppWidgetManager.getInstance(this);
-        RemoteViews views = WidgetProvider.buildWidget(this, mAppWidgetId, entry);
+        RemoteViews views = PhotoAppWidgetProvider.buildWidget(this, mAppWidgetId, entry);
         manager.updateAppWidget(mAppWidgetId, views);
         setResult(RESULT_OK, new Intent().putExtra(
                 AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId));
diff --git a/src/com/android/gallery3d/widget/WidgetDatabaseHelper.java b/src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java
similarity index 70%
rename from src/com/android/gallery3d/widget/WidgetDatabaseHelper.java
rename to src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java
index d5bf22e..1d07548 100644
--- a/src/com/android/gallery3d/widget/WidgetDatabaseHelper.java
+++ b/src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.gallery3d.widget;
+package com.android.gallery3d.gadget;
 
 import com.android.gallery3d.common.Utils;
 
@@ -25,11 +25,11 @@
 import android.database.sqlite.SQLiteException;
 import android.database.sqlite.SQLiteOpenHelper;
 import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
 import android.net.Uri;
 import android.util.Log;
 
 import java.io.ByteArrayOutputStream;
+import java.util.ArrayList;
 
 public class WidgetDatabaseHelper extends SQLiteOpenHelper {
     private static final String TAG = "PhotoDatabaseHelper";
@@ -60,17 +60,18 @@
     public static class Entry {
         public int widgetId;
         public int type;
-        public Uri imageUri;
-        public Bitmap image;
+        public String imageUri;
+        public byte imageData[];
         public String albumPath;
 
+        private Entry() {}
+
         private Entry(int id, Cursor cursor) {
             widgetId = id;
             type = cursor.getInt(INDEX_WIDGET_TYPE);
-
             if (type == TYPE_SINGLE_PHOTO) {
-                imageUri = Uri.parse(cursor.getString(INDEX_IMAGE_URI));
-                image = loadBitmap(cursor, INDEX_PHOTO_BLOB);
+                imageUri = cursor.getString(INDEX_IMAGE_URI);
+                imageData = cursor.getBlob(INDEX_PHOTO_BLOB);
             } else if (type == TYPE_ALBUM) {
                 albumPath = cursor.getString(INDEX_ALBUM_PATH);
             }
@@ -91,16 +92,79 @@
                 + FIELD_PHOTO_BLOB + " BLOB)");
     }
 
+    private void saveData(SQLiteDatabase db, int oldVersion, ArrayList<Entry> data) {
+        if (oldVersion <= 2) {
+            Cursor cursor = db.query("photos",
+                    new String[] {FIELD_APPWIDGET_ID, FIELD_PHOTO_BLOB},
+                    null, null, null, null, null);
+            if (cursor == null) return;
+            try {
+                while (cursor.moveToNext()) {
+                    Entry entry = new Entry();
+                    entry.type = TYPE_SINGLE_PHOTO;
+                    entry.widgetId = cursor.getInt(0);
+                    entry.imageData = cursor.getBlob(1);
+                    data.add(entry);
+                }
+            } finally {
+                cursor.close();
+            }
+        } else if (oldVersion == 3) {
+            Utils.debug("saveData of version: %s", oldVersion);
+            Cursor cursor = db.query("photos",
+                    new String[] {FIELD_APPWIDGET_ID, FIELD_PHOTO_BLOB, FIELD_IMAGE_URI},
+                    null, null, null, null, null);
+            if (cursor == null) return;
+            try {
+                while (cursor.moveToNext()) {
+                    Entry entry = new Entry();
+                    entry.type = TYPE_SINGLE_PHOTO;
+                    entry.widgetId = cursor.getInt(0);
+                    entry.imageData = cursor.getBlob(1);
+                    entry.imageUri = cursor.getString(2);
+
+                    Utils.debug("store widget[%s] - %s", entry.widgetId, entry.imageUri);
+                    data.add(entry);
+                }
+            } finally {
+                cursor.close();
+            }
+        }
+    }
+
+    private void restoreData(SQLiteDatabase db, ArrayList<Entry> data) {
+        db.beginTransaction();
+        try {
+            for (Entry entry : data) {
+                ContentValues values = new ContentValues();
+                values.put(FIELD_APPWIDGET_ID, entry.widgetId);
+                values.put(FIELD_WIDGET_TYPE, entry.type);
+                values.put(FIELD_IMAGE_URI, entry.imageUri);
+                values.put(FIELD_PHOTO_BLOB, entry.imageData);
+                values.put(FIELD_ALBUM_PATH, entry.albumPath);
+                db.insert(TABLE_WIDGETS, null, values);
+            }
+            db.setTransactionSuccessful();
+        } finally {
+            db.endTransaction();
+        }
+    }
+
     @Override
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
         int version = oldVersion;
 
         if (version != DATABASE_VERSION) {
+            ArrayList<Entry> data = new ArrayList<Entry>();
+            saveData(db, oldVersion, data);
+
             Log.w(TAG, "destroying all old data.");
             // Table "photos" is renamed to "widget" in version 4
             db.execSQL("DROP TABLE IF EXISTS photos");
             db.execSQL("DROP TABLE IF EXISTS " + TABLE_WIDGETS);
             onCreate(db);
+
+            restoreData(db, data);
         }
     }
 
@@ -146,12 +210,6 @@
         }
     }
 
-    private static Bitmap loadBitmap(Cursor cursor, int columnIndex) {
-        byte[] data = cursor.getBlob(columnIndex);
-        if (data == null) return null;
-        return BitmapFactory.decodeByteArray(data, 0, data.length);
-    }
-
     public Entry getEntry(int appWidgetId) {
         Cursor cursor = null;
         try {
diff --git a/src/com/android/gallery3d/widget/WidgetService.java b/src/com/android/gallery3d/gadget/WidgetService.java
similarity index 99%
rename from src/com/android/gallery3d/widget/WidgetService.java
rename to src/com/android/gallery3d/gadget/WidgetService.java
index aa167c7..a61831c 100644
--- a/src/com/android/gallery3d/widget/WidgetService.java
+++ b/src/com/android/gallery3d/gadget/WidgetService.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.gallery3d.widget;
+package com.android.gallery3d.gadget;
 
 import com.android.gallery3d.R;
 import com.android.gallery3d.app.GalleryApp;
diff --git a/src/com/android/gallery3d/widget/WidgetSource.java b/src/com/android/gallery3d/gadget/WidgetSource.java
similarity index 96%
rename from src/com/android/gallery3d/widget/WidgetSource.java
rename to src/com/android/gallery3d/gadget/WidgetSource.java
index 3c73e88..8b8eb79 100644
--- a/src/com/android/gallery3d/widget/WidgetSource.java
+++ b/src/com/android/gallery3d/gadget/WidgetSource.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.gallery3d.widget;
+package com.android.gallery3d.gadget;
 
 import com.android.gallery3d.data.ContentListener;
 
diff --git a/src/com/android/gallery3d/widget/WidgetTypeChooser.java b/src/com/android/gallery3d/gadget/WidgetTypeChooser.java
similarity index 97%
rename from src/com/android/gallery3d/widget/WidgetTypeChooser.java
rename to src/com/android/gallery3d/gadget/WidgetTypeChooser.java
index 9718e0c..c4bca60 100644
--- a/src/com/android/gallery3d/widget/WidgetTypeChooser.java
+++ b/src/com/android/gallery3d/gadget/WidgetTypeChooser.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.gallery3d.widget;
+package com.android.gallery3d.gadget;
 
 import com.android.gallery3d.R;
 
diff --git a/src/com/android/gallery3d/widget/WidgetUtils.java b/src/com/android/gallery3d/gadget/WidgetUtils.java
similarity index 98%
rename from src/com/android/gallery3d/widget/WidgetUtils.java
rename to src/com/android/gallery3d/gadget/WidgetUtils.java
index 481bbdd..b194c7d 100644
--- a/src/com/android/gallery3d/widget/WidgetUtils.java
+++ b/src/com/android/gallery3d/gadget/WidgetUtils.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.gallery3d.widget;
+package com.android.gallery3d.gadget;
 
 import com.android.gallery3d.R;
 import com.android.gallery3d.data.MediaItem;
