diff --git a/app/common/directives/firmware-list.html b/app/common/directives/firmware-list.html
index c53a417..0be4625 100644
--- a/app/common/directives/firmware-list.html
+++ b/app/common/directives/firmware-list.html
@@ -21,23 +21,21 @@
 			</div>
 		</div>
 		<div class="table__body">
-			<div class="table__row" ng-class="firmware.functional ? 'firmware__primary' : ''" ng-repeat="firmware in firmwares|filter:filterBy|orderBy:'+Priority'">
+			<div class="table__row" ng-class="firmware.activationStatus == 'Functional' ? 'firmware__primary' : ''" ng-repeat="firmware in firmwares|filter:filterBy|orderBy:'+Priority'">
 				<div class="table__cell">
 					<span class="table__cell-label">Boot priority:</span>
 					<div class="icon icon__up-arrow" aria-hidden="true" ng-class="{'icon-as-spacer':$first}"
 					     ng-click="!$first && changePriority(firmware.imageId, firmware.Priority, firmware.Priority - 1)"
-					     ng-show="firmware.activationFlags.functional || firmware.activationFlags.ready">
+					     ng-show="firmware.activationStatus == 'Functional' || firmware.activationStatus == 'Ready'">
 						<span class="accessible-text">firmware up in priority</span></div>
 					<div class="icon icon__down-arrow" aria-hidden="true" ng-class="{'icon-as-spacer':$last}"
 					    ng-click="!$last && changePriority(firmware.imageId, firmware.Priority, firmware.Priority + 1)"
-					    ng-hide="firmware.activationFlags.ready">
+					    ng-hide="firmware.activationStatus == 'Ready'">
 						<span class="accessible-text">firmware down in priority</span></div>
 				</div>
 				<div class="table__cell firmware__active">
 					<span class="table__cell-label">Image state:</span>
-					<span ng-if="firmware.activationFlags.functional">Functional</span>
-					<span ng-if="firmware.activationFlags.active">Active</span>
-					<span ng-if="firmware.activationFlags.ready">Ready</span>
+					<span>{{firmware.activationStatus}}</span>
 				</div>
 				<div class="table__cell firmware__version" ng-class="{'active':firmware.isExtended}">
 					<span class="table__cell-label">Version:</span>{{firmware.Version}}
@@ -59,10 +57,10 @@
 				</div>
 				<div class="table__cell">
 				    <span class="table__cell-label">Action:</span>
-				    <button class="firmware__action-link" ng-show="firmware.activationFlags.ready" ng-click="activate(firmware.imageId)">Activate</button>
-				    <button class="firmware__action-link" ng-show="!firmware.functional" ng-click="delete(firmware.imageId)">Delete</button>
+				    <button class="firmware__action-link" ng-show="firmware.activationStatus == 'Ready'" ng-click="activate(firmware.imageId)">Activate</button>
+				    <button class="firmware__action-link" ng-show="firmware.activationStatus != 'Functional'" ng-click="delete(firmware.imageId)">Delete</button>
 				</div>
 			</div>
 		</div>
 	</div>
-</div>
\ No newline at end of file
+</div>
diff --git a/app/common/services/api-utils.js b/app/common/services/api-utils.js
index 9b619bd..6268f8c 100644
--- a/app/common/services/api-utils.js
+++ b/app/common/services/api-utils.js
@@ -608,10 +608,7 @@
                       var json = JSON.stringify(response.data);
                       var content = JSON.parse(json);
                       var data = [];
-                      var active = false;
-                      var functional = false;
-                      var ready = false;
-                      var activationStatus = {active: false, ready: false, functional: false};
+                      var activationStatus = "";
                       var isExtended = false;
                       var bmcActiveVersion = "";
                       var hostActiveVersion = "";
@@ -646,11 +643,14 @@
 
                       for(var key in content.data){
                         if(content.data.hasOwnProperty(key) && content.data[key].hasOwnProperty('Version')){
-
-                          functional = (content.data[key].Priority == 0);
-                          active = !functional && (/\.Active$/).test(content.data[key].Activation);
-                          ready = (/\.Ready$/).test(content.data[key].Activation);
-                          activationStatus = {functional: functional, active: active, ready: ready};
+                          // If the image is "Functional" use that for the
+                          // activation status, else use the value of "Activation"
+                          // github.com/openbmc/phosphor-dbus-interfaces/blob/master/xyz/openbmc_project/Software/Activation.interface.yaml
+                          activationStatus = content.data[key].Activation.split(".").pop();
+                          if (content.data[key].Priority == 0)
+                          {
+                            activationStatus = "Functional";
+                          }
                           imageType = content.data[key].Purpose.split(".").pop();
                           isExtended = content.data[key].hasOwnProperty('ExtendedVersion') && content.data[key].ExtendedVersion != "";
                           if(isExtended){
@@ -658,8 +658,7 @@
                           }
                           data.push(Object.assign({
                             path: key,
-                            functional: functional,
-                            activationFlags: activationStatus,
+                            activationStatus: activationStatus,
                             imageId: key.split("/").pop(),
                             imageType: imageType,
                             isExtended: isExtended,
@@ -670,11 +669,11 @@
                             data: {key: key, value: content.data[key]}
                           }, content.data[key]));
 
-                          if(functional && imageType == 'BMC'){
+                          if(activationStatus == 'Functional' && imageType == 'BMC'){
                             bmcActiveVersion = content.data[key].Version;
                           }
 
-                          if(functional && imageType == 'Host'){
+                          if(activationStatus == 'Functional' && imageType == 'Host'){
                             hostActiveVersion = content.data[key].Version;
                           }
                         }
