diff --git a/app/common/directives/log-event.html b/app/common/directives/log-event.html
index 70d7dee..6b8f972 100644
--- a/app/common/directives/log-event.html
+++ b/app/common/directives/log-event.html
@@ -21,7 +21,7 @@
          <div class="column small-9 large-9 event-log__event-info"
               ng-click="event.meta = ! event.meta">
              <p class="inline event__priority event-resolved" ng-hide="event.Resolved == 0">Resolved</p>
-             <p class="inline event__priority med-priority" ng-class="{'low-priority': event.priority == 'Low', 'medium-priority': event.priority == 'Medium', 'high-priority': event.priority == 'High'}" ng-hide="event.Resolved == 1">{{event.priority}}</p>
+             <p class="inline event__priority" ng-class="{'low-priority': event.priority == 'Low', 'medium-priority': event.priority == 'Medium', 'high-priority': event.priority == 'High'}" ng-hide="event.Resolved == 1">{{event.priority}}</p>
              <p class="inline event__severity">{{event.severity_code}}</p>
              <p class="inline event__description">{{event.Severity}}</p>
              <div>
diff --git a/app/common/services/api-utils.js b/app/common/services/api-utils.js
index 540fb42..ed10768 100644
--- a/app/common/services/api-utils.js
+++ b/app/common/services/api-utils.js
@@ -67,7 +67,11 @@
                 }).success(function(response){
                       var json = JSON.stringify(response);
                       var content = JSON.parse(json);
-                      callback(content.data.Asserted);
+                      if(callback){
+                        callback(content.data.Asserted);
+                      }else{
+                        return content.data.Asserted;
+                      }
                 }).error(function(error){
                   console.log(error);
                 });
@@ -355,7 +359,11 @@
                           }, content.data[key]));
                         }
                       }
-                      callback(data, dataClone);
+                      if(callback){
+                        callback(data, dataClone);
+                      }else{
+                        return data;
+                      }
                 }).error(function(error){
                   console.log(error);
                 });
@@ -553,7 +561,11 @@
                           }
                         }
                       }
-                      callback(data, bmcActiveVersion, hostActiveVersion);
+                      if(callback){
+                        callback(data, bmcActiveVersion, hostActiveVersion);
+                      }else{
+                        return(data, bmcActiveVersion, hostActiveVersion);
+                      }
                 }).error(function(error){
                   console.log(error);
                 });
@@ -584,6 +596,48 @@
                   }
                 });
               },
+              getBMCEthernetInfo: function(callback){
+                $http({
+                  method: 'GET',
+                  url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/inventory/system/chassis/motherboard/boxelder/bmc/ethernet",
+                  headers: {
+                      'Accept': 'application/json',
+                      'Content-Type': 'application/json'
+                  },
+                  withCredentials: true
+                }).success(function(response){
+                      var json = JSON.stringify(response);
+                      var content = JSON.parse(json);
+                      if(callback){
+                        callback(content.data);
+                      }else{
+                        return content.data;
+                      }
+                }).error(function(error){
+                  console.log(error);
+                });
+              },
+              getBMCInfo: function(callback){
+                $http({
+                  method: 'GET',
+                  url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/inventory/system/chassis/motherboard/boxelder/bmc",
+                  headers: {
+                      'Accept': 'application/json',
+                      'Content-Type': 'application/json'
+                  },
+                  withCredentials: true
+                }).success(function(response){
+                      var json = JSON.stringify(response);
+                      var content = JSON.parse(json);
+                      if(callback){
+                        callback(content.data);
+                      }else{
+                        return content.data;
+                      }
+                }).error(function(error){
+                  console.log(error);
+                });
+              },
           };
           return SERVICE;
         }]);
diff --git a/app/overview/controllers/system-overview-controller.html b/app/overview/controllers/system-overview-controller.html
index 0c314e6..be4601a 100644
--- a/app/overview/controllers/system-overview-controller.html
+++ b/app/overview/controllers/system-overview-controller.html
@@ -17,19 +17,19 @@
 					<ul class="overview__metadata-wrapper">
 						<li class="overview__metadata-block">
 							<p class="content-label">Model</p>
-							<p class="courier-bold">5150-A0A</p>
+							<p class="courier-bold">{{bmc_info.Model}}</p>
 						</li>
 						<li class="overview__metadata-block">
 							<p class="content-label">Manufacturer</p>
-							<p class="courier-bold">IBM</p>
+							<p class="courier-bold">{{bmc_info.Manufacturer}}</p>
 						</li>
 						<li class="overview__metadata-block">
 							<p class="content-label">Firmware version</p>
-							<p class="courier-bold">2.3.104497</p>
+							<p class="courier-bold">{{server_firmware}}</p>
 						</li>
 						<li class="overview__metadata-block">
 							<p class="content-label">Serial number</p>
-							<p class="courier-bold">123456abcd</p>
+							<p class="courier-bold">{{bmc_info.SerialNumber}}</p>
 						</li>
 					</ul>
 				</div>
@@ -43,7 +43,7 @@
 					<ul class="overview__metadata-wrapper">
 						<li class="overview__metadata-block">
 							<p class="content-label">BMC IP address</p>
-							<p class="courier-bold">9.3.111.222</p>
+							<p class="courier-bold">{{dataService.server_id}}</p>
 						</li>
 						<li class="overview__metadata-block">
 							<p class="content-label">Hostname</p>
@@ -51,11 +51,11 @@
 						</li>
 						<li class="overview__metadata-block">
 							<p class="content-label">Mac address</p>
-							<p class="courier-bold"></p>
+							<p class="courier-bold">{{mac_address}}</p>
 						</li>
 						<li class="overview__metadata-block">
 							<p class="content-label">Firmware</p>
-							<p class="courier-bold">4.3.104497</p>
+							<p class="courier-bold">{{bmc_firmware}}</p>
 						</li>
 
 					</ul>
@@ -81,7 +81,7 @@
 			</div>
 
 			<!-- Power metadata -->
-			<div class="row column overview__event-log event-log__events" >
+			<div class="row column overview__event-log event-log__events" ng-show="logs.length">
 				<h3 class="bold h4">High priority events</h3>
 
 				<!-- TODO: I built event log section so that you could easily just pull in our existing event log template. All display tweaks (such as hiding checkbox) are done via SCSS -->
@@ -90,7 +90,7 @@
 				<!-- <p class="disabled">No high priority events</p> -->
 
 				<!-- single event -->
-				<a href="#/server-health/event-log"> <!-- this should go to specific event in event log page -->
+				<a href="#/server-health/event-log" ng-repeat="event in logs|orderBy:'+Id'"> <!-- this should go to specific event in event log page -->
 					<div class="row column event-log__single-event">
 						<div class="row">
 							<div class="column small-1 large-1 event-log__col-check">
@@ -101,12 +101,12 @@
 								</label>
 							</div>
 							<div class="column small-9 large-10 event-log__event-info" ng-click=""><!-- click will go to specific event in event log page-->
-								<p class="inline event__id">#00995</p>
+								<p class="inline event__id">#{{event.Id}}</p>
 								<p class="inline event__priority high-priority">High</p>
-								<p class="inline event__severity">emergency</p>
-								<p class="inline event__timestamp">03/09/2017 21:00:26 EDT</p>
+								<p class="inline event__severity">{{event.severity_code}}</p>
+								<p class="inline event__timestamp">{{event.Timestamp| date:'MM/dd/yyyy  HH:mm:ss '+tmz: tmz}}</p>
 								<div>
-									<p class="inline event__description">Vestibulum ac diam sit amet quam vehicula aliquet quam id dui</p>
+									<p class="inline event__description">{{event.Severity}}</p>
 								</div>
 							</div>
 							<div class="column small-1 large-1">
@@ -115,38 +115,12 @@
 						</div>
 					</div>
 				</a>
-				<!-- single event -->
-				<a href="#/server-health/event-log"><!-- this should go to specific event in event log page -->
-				<div class="row column event-log__single-event">
-					<div class="row">
-						<div class="column small-1 large-1 event-log__col-check">
-							<label class="control-check">
-								<input type="checkbox" name="events__check" ng-click="event.selected= ! event.selected"
-										ng-checked="event.selected"/>
-								<span class="control__indicator"></span>
-							</label>
-						</div>
-						<div class="column small-9 large-10 event-log__event-info" ng-click=""><!-- click will go to specific event in event log page-->
-							<p class="inline event__id">#00991</p>
-							<p class="inline event__priority high-priority">High</p>
-							<p class="inline event__severity">emergency</p>
-							<p class="inline event__timestamp">02/09/2017 21:00:26 EDT</p>
-							<div>
-								<p class="inline event__description">Vestibulum ac diam sit amet quam vehicula aliquet quam id dui Praesent sapien massa, convallis a pellentesque nec, egestas non nisi.</p>
-							</div>
-						</div>
-						<div class="column small-1 large-1">
-							<button class="accord-trigger"></button>
-						</div>
-					</div>
-				</div>
-				</a>
 			</div>
 		</div>
 		<div class="column large-4">
 			<div class="quick-links" >
-				<a href="" class="quick-links__item quick-links__events event-log__events" >
-					<span class="event__priority high-priority">High</span><p class="inline quick-links__event-copy">3 High priority events</p><!-- link to event log filtered to the high priority events -->
+				<a href="#/server-health/event-log" class="quick-links__item quick-links__events event-log__events" ng-show="logs.length">
+					<span class="event__priority high-priority">High</span><p class="inline quick-links__event-copy">{{logs.length}} High priority events</p><!-- link to event log filtered to the high priority events -->
 				</a>
 				<div class="quick-links__item no-icon">
 					<p class="inline quick-links__label">BMC time</p>
@@ -165,11 +139,11 @@
 						<label for="toggle__switch-round" tabindex="0">Server indicator is <span class="uid-switch__status">{{dataService.LED_state}}</span></label>
 					</div>
 				</div>
-				<a href="" class="no-icon quick-links__item">
+				<a href="#/server-control/remote-console" class="no-icon quick-links__item">
 					<p class="inline quick-links__label">Launch Serial Over Lan</p>
 					<span class="btn-pop-out inline float-right"></span>
 				</a>
-				<a href="" class="quick-links__item">
+				<a href="#/configuration/network" class="quick-links__item">
 					<p class="inline quick-links__label">Edit network settings</p>
 				</a>
 			</div>
diff --git a/app/overview/controllers/system-overview-controller.js b/app/overview/controllers/system-overview-controller.js
index 4992b1e..5468d6f 100644
--- a/app/overview/controllers/system-overview-controller.js
+++ b/app/overview/controllers/system-overview-controller.js
@@ -17,10 +17,69 @@
             '$window', 
             'APIUtils', 
             'dataService',
-            function($scope, $window, APIUtils, dataService, userModel){
+            function($scope, $window, APIUtils, dataService){
                 $scope.dataService = dataService;
-
                 $scope.dropdown_selected = false;
+                $scope.tmz = 'EDT';
+                $scope.logs = [];
+                $scope.mac_address = "";
+                $scope.bmc_info = {};
+                $scope.bmc_firmware = "";
+                $scope.server_firmware = "";
+
+                loadOverviewData();
+                function loadOverviewData(){
+                    APIUtils.getLogs(function(data){
+                       $scope.displayLogs(data);
+                    });
+                    APIUtils.getFirmwares(function(data, bmcActiveVersion, hostActiveVersion){
+                       $scope.displayServerInfo(data, bmcActiveVersion, hostActiveVersion);
+                    });
+                    APIUtils.getLEDState(function(state){
+                       $scope.displayLEDState(state);
+                    });
+                    APIUtils.getBMCEthernetInfo(function(data){
+                       $scope.displayBMCEthernetInfo(data);
+                    });
+                    APIUtils.getBMCInfo(function(data){
+                       $scope.displayBMCInfo(data);
+                    });
+                }
+                $scope.displayBMCEthernetInfo = function(data){
+                    $scope.mac_address = data.MACAddress;
+                }
+
+                $scope.displayBMCInfo = function(data){
+                    $scope.bmc_info = data;
+                }
+
+                $scope.displayLogs = function(data){
+                    $scope.logs = data.filter(function(log){
+                        return log.severity_flags.high == true;
+                    });
+                }
+
+                $scope.displayServerInfo = function(data, bmcActiveVersion, hostActiveVersion){
+                    $scope.bmc_firmware = bmcActiveVersion;
+                    $scope.server_firmware = hostActiveVersion;
+                }
+
+                $scope.displayLEDState = function(state){
+                    if(state == APIUtils.LED_STATE.on){
+                        dataService.LED_state = APIUtils.LED_STATE_TEXT.on;
+                    }else{
+                        dataService.LED_state = APIUtils.LED_STATE_TEXT.off;
+                    }
+                }
+
+                $scope.toggleLED = function(){
+                    var toggleState = (dataService.LED_state == APIUtils.LED_STATE_TEXT.on) ?
+                        APIUtils.LED_STATE.off : APIUtils.LED_STATE.on;
+                        dataService.LED_state = (dataService.LED_state == APIUtils.LED_STATE_TEXT.on) ?
+                        APIUtils.LED_STATE_TEXT.off : APIUtils.LED_STATE_TEXT.on;
+                    APIUtils.setLEDState(toggleState, function(status){
+                    });
+                }
             }
         ]
     );
