diff --git a/src/com/fairphone/updater/fragments/ConfirmationPopupDialog.java b/src/com/fairphone/updater/fragments/ConfirmationPopupDialog.java
index 6fba623..f5eab9b 100644
--- a/src/com/fairphone/updater/fragments/ConfirmationPopupDialog.java
+++ b/src/com/fairphone/updater/fragments/ConfirmationPopupDialog.java
@@ -64,6 +64,7 @@
                 view = inflater.inflate(R.layout.fragment_download_android_confirmation_popup, container);
                 break;
             case UPDATE_FAIRPHONE:
+            case LATEST_FAIRPHONE:
             case FAIRPHONE:
             case APP_STORE:
             default:
diff --git a/src/com/fairphone/updater/fragments/InfoPopupDialog.java b/src/com/fairphone/updater/fragments/InfoPopupDialog.java
index e00161b..e431d2f 100644
--- a/src/com/fairphone/updater/fragments/InfoPopupDialog.java
+++ b/src/com/fairphone/updater/fragments/InfoPopupDialog.java
@@ -43,6 +43,7 @@
                 view = inflater.inflate(R.layout.fragment_info_android_popup, container);
                 break;
             case UPDATE_FAIRPHONE:
+            case LATEST_FAIRPHONE:
             case FAIRPHONE:
             case APP_STORE:
             default:
diff --git a/src/com/fairphone/updater/fragments/VersionDetailFragment.java b/src/com/fairphone/updater/fragments/VersionDetailFragment.java
index 17dc7f0..0520448 100644
--- a/src/com/fairphone/updater/fragments/VersionDetailFragment.java
+++ b/src/com/fairphone/updater/fragments/VersionDetailFragment.java
@@ -43,7 +43,7 @@
 
     public static enum DetailLayoutType
     {
-        UPDATE_FAIRPHONE, UPDATE_ANDROID, FAIRPHONE, ANDROID, APP_STORE
+        UPDATE_FAIRPHONE, UPDATE_ANDROID, LATEST_FAIRPHONE, FAIRPHONE, ANDROID, APP_STORE
     }
 
     private HeaderType mHeaderType;
@@ -92,6 +92,7 @@
                 view = inflater.inflate(R.layout.fragment_app_store_detail, container, false);
                 break;
             case UPDATE_FAIRPHONE:
+            case LATEST_FAIRPHONE:
             case FAIRPHONE:
             default:
                 view = inflater.inflate(R.layout.fragment_version_detail_fairphone, container, false);
@@ -134,6 +135,7 @@
                 mDownload_and_update_button.setText(R.string.install_update);
                 break;
             case APP_STORE:
+            case LATEST_FAIRPHONE:
             case FAIRPHONE:
             case ANDROID:
             default:
@@ -220,6 +222,13 @@
                 mIsOSChange = false;
                 mIsOlderVersion = false;
                 break;
+            case LATEST_FAIRPHONE:
+                mHeaderText = mSelectedVersion.getHumanReadableName();
+                mVersionDetailsTitle = resources.getString(R.string.latest_version);
+                mIsOSChange = deviceVersion.getImageType().equalsIgnoreCase(Version.IMAGE_TYPE_AOSP);
+                mIsOlderVersion =
+                        (deviceVersion.getImageType().equalsIgnoreCase(Version.IMAGE_TYPE_FAIRPHONE) && deviceVersion.isNewerVersionThan(mSelectedVersion));
+                break;
             case FAIRPHONE:
             default:
                 mHeaderText = mSelectedVersion.getHumanReadableName();
diff --git a/src/com/fairphone/updater/fragments/VersionListFragment.java b/src/com/fairphone/updater/fragments/VersionListFragment.java
index 09fd9f9..b58d274 100644
--- a/src/com/fairphone/updater/fragments/VersionListFragment.java
+++ b/src/com/fairphone/updater/fragments/VersionListFragment.java
@@ -207,7 +207,7 @@
                 {
                     VersionDetailFragment versionDetail = new VersionDetailFragment(true);
 
-                    versionDetail.setupFragment(latestFairphoneVersion, DetailLayoutType.FAIRPHONE);
+                    versionDetail.setupFragment(latestFairphoneVersion, DetailLayoutType.LATEST_FAIRPHONE);
 
                     mainActivity.changeFragment(versionDetail);
                 }
