diff --git a/src/com/android/settings/deviceinfo/StorageWizardBase.java b/src/com/android/settings/deviceinfo/StorageWizardBase.java
index beb0f3d..df19783 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardBase.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardBase.java
@@ -164,13 +164,27 @@
         secondBody.setVisibility(View.VISIBLE);
     }
 
-    protected void setIllustrationInternal(boolean internal) {
-        if (internal) {
-            getSetupWizardLayout().setIllustration(R.drawable.bg_internal_storage_header,
-                    R.drawable.bg_header_horizontal_tile);
-        } else {
-            getSetupWizardLayout().setIllustration(R.drawable.bg_portable_storage_header,
-                    R.drawable.bg_header_horizontal_tile);
+    protected static final int ILLUSTRATION_SETUP = 0;
+    protected static final int ILLUSTRATION_INTERNAL = 1;
+    protected static final int ILLUSTRATION_PORTABLE = 2;
+
+    protected void setIllustrationType(int type) {
+        switch (type) {
+            case ILLUSTRATION_SETUP:
+                getSetupWizardLayout().setIllustration(
+                        R.drawable.bg_setup_header,
+                        R.drawable.bg_header_horizontal_tile);
+                break;
+            case ILLUSTRATION_INTERNAL:
+                getSetupWizardLayout().setIllustration(
+                        R.drawable.bg_internal_storage_header,
+                        R.drawable.bg_header_horizontal_tile);
+                break;
+            case ILLUSTRATION_PORTABLE:
+                getSetupWizardLayout().setIllustration(
+                        R.drawable.bg_portable_storage_header,
+                        R.drawable.bg_header_horizontal_tile);
+                break;
         }
     }
 
diff --git a/src/com/android/settings/deviceinfo/StorageWizardFormatConfirm.java b/src/com/android/settings/deviceinfo/StorageWizardFormatConfirm.java
index ed01c51..a9a4db2 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardFormatConfirm.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardFormatConfirm.java
@@ -38,7 +38,8 @@
         setContentView(R.layout.storage_wizard_generic);
 
         mFormatPrivate = getIntent().getBooleanExtra(EXTRA_FORMAT_PRIVATE, false);
-        setIllustrationInternal(mFormatPrivate);
+        setIllustrationType(
+                mFormatPrivate ? ILLUSTRATION_INTERNAL : ILLUSTRATION_PORTABLE);
 
         if (mFormatPrivate) {
             setHeaderText(R.string.storage_wizard_format_confirm_title);
diff --git a/src/com/android/settings/deviceinfo/StorageWizardFormatProgress.java b/src/com/android/settings/deviceinfo/StorageWizardFormatProgress.java
index e117c26..e5af4381 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardFormatProgress.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardFormatProgress.java
@@ -51,7 +51,8 @@
 
         mFormatPrivate = getIntent().getBooleanExtra(
                 StorageWizardFormatConfirm.EXTRA_FORMAT_PRIVATE, false);
-        setIllustrationInternal(mFormatPrivate);
+        setIllustrationType(
+                mFormatPrivate ? ILLUSTRATION_INTERNAL : ILLUSTRATION_PORTABLE);
 
         setHeaderText(R.string.storage_wizard_format_progress_title, mDisk.getDescription());
         setBodyText(R.string.storage_wizard_format_progress_body, mDisk.getDescription());
diff --git a/src/com/android/settings/deviceinfo/StorageWizardInit.java b/src/com/android/settings/deviceinfo/StorageWizardInit.java
index 284e67d..da54da6 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardInit.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardInit.java
@@ -44,7 +44,7 @@
 
         mIsPermittedToAdopt = UserManager.get(this).isAdminUser();
 
-        setIllustrationInternal(true);
+        setIllustrationType(ILLUSTRATION_SETUP);
         setHeaderText(R.string.storage_wizard_init_title, mDisk.getDescription());
 
         mRadioExternal = (RadioButton) findViewById(R.id.storage_wizard_init_external_title);
@@ -82,10 +82,10 @@
             if (isChecked) {
                 if (buttonView == mRadioExternal) {
                     mRadioInternal.setChecked(false);
-                    setIllustrationInternal(false);
+                    setIllustrationType(ILLUSTRATION_PORTABLE);
                 } else if (buttonView == mRadioInternal) {
                     mRadioExternal.setChecked(false);
-                    setIllustrationInternal(true);
+                    setIllustrationType(ILLUSTRATION_INTERNAL);
                 }
                 getNextButton().setEnabled(true);
             }
diff --git a/src/com/android/settings/deviceinfo/StorageWizardMigrate.java b/src/com/android/settings/deviceinfo/StorageWizardMigrate.java
index c12ae4a..148282f 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardMigrate.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardMigrate.java
@@ -40,7 +40,7 @@
         }
         setContentView(R.layout.storage_wizard_migrate);
 
-        setIllustrationInternal(true);
+        setIllustrationType(ILLUSTRATION_INTERNAL);
         setHeaderText(R.string.storage_wizard_migrate_title, mDisk.getDescription());
         setBodyText(R.string.memory_calculating_size);
 
diff --git a/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java b/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java
index 607cc6f..258c8ba 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java
@@ -45,7 +45,7 @@
         final String sourceDescrip = mStorage.getBestVolumeDescription(sourceVol);
         final String targetDescrip = mStorage.getBestVolumeDescription(mVolume);
 
-        setIllustrationInternal(true);
+        setIllustrationType(ILLUSTRATION_INTERNAL);
         setHeaderText(R.string.storage_wizard_migrate_confirm_title, targetDescrip);
         setBodyText(R.string.memory_calculating_size);
         setSecondaryBodyText(R.string.storage_wizard_migrate_details, targetDescrip);
diff --git a/src/com/android/settings/deviceinfo/StorageWizardMigrateProgress.java b/src/com/android/settings/deviceinfo/StorageWizardMigrateProgress.java
index 941f6b9..88a3042 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardMigrateProgress.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardMigrateProgress.java
@@ -49,7 +49,7 @@
         mMoveId = getIntent().getIntExtra(EXTRA_MOVE_ID, -1);
 
         final String descrip = mStorage.getBestVolumeDescription(mVolume);
-        setIllustrationInternal(true);
+        setIllustrationType(ILLUSTRATION_INTERNAL);
         setHeaderText(R.string.storage_wizard_migrate_progress_title, descrip);
         setBodyText(R.string.storage_wizard_migrate_details, descrip);
 
diff --git a/src/com/android/settings/deviceinfo/StorageWizardMoveConfirm.java b/src/com/android/settings/deviceinfo/StorageWizardMoveConfirm.java
index 607369f..b58b780 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardMoveConfirm.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardMoveConfirm.java
@@ -57,7 +57,7 @@
         final String appName = getPackageManager().getApplicationLabel(mApp).toString();
         final String volumeName = mStorage.getBestVolumeDescription(mVolume);
 
-        setIllustrationInternal(true);
+        setIllustrationType(ILLUSTRATION_INTERNAL);
         setHeaderText(R.string.storage_wizard_move_confirm_title, appName);
         setBodyText(R.string.storage_wizard_move_confirm_body, appName, volumeName);
 
diff --git a/src/com/android/settings/deviceinfo/StorageWizardMoveProgress.java b/src/com/android/settings/deviceinfo/StorageWizardMoveProgress.java
index 8b3c6da..3c18835 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardMoveProgress.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardMoveProgress.java
@@ -46,7 +46,7 @@
         final String appName = getIntent().getStringExtra(EXTRA_TITLE);
         final String volumeName = mStorage.getBestVolumeDescription(mVolume);
 
-        setIllustrationInternal(true);
+        setIllustrationType(ILLUSTRATION_INTERNAL);
         setHeaderText(R.string.storage_wizard_move_progress_title, appName);
         setBodyText(R.string.storage_wizard_move_progress_body, volumeName, appName);
 
diff --git a/src/com/android/settings/deviceinfo/StorageWizardReady.java b/src/com/android/settings/deviceinfo/StorageWizardReady.java
index 2b6387d..ac5cf44 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardReady.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardReady.java
@@ -38,11 +38,11 @@
         final VolumeInfo publicVol = findFirstVolume(VolumeInfo.TYPE_PUBLIC);
         final VolumeInfo privateVol = findFirstVolume(VolumeInfo.TYPE_PRIVATE);
         if (publicVol != null) {
-            setIllustrationInternal(false);
+            setIllustrationType(ILLUSTRATION_PORTABLE);
             setBodyText(R.string.storage_wizard_ready_external_body,
                     mDisk.getDescription());
         } else if (privateVol != null) {
-            setIllustrationInternal(true);
+            setIllustrationType(ILLUSTRATION_INTERNAL);
             setBodyText(R.string.storage_wizard_ready_internal_body,
                     mDisk.getDescription());
         }
