diff --git a/bower.json b/bower.json
index e8f6b09..fdfb5b8 100644
--- a/bower.json
+++ b/bower.json
@@ -10,6 +10,7 @@
     "angular-route": "latest",
     "bootstrap": "3.1.1",
     "angular-bootstrap": "0.11.0",
-    "angular-ui-router": "#master"
+    "angular-ui-router": "#master",
+    "ng-grid": "latest"
   }
 }
diff --git a/config/assets.json b/config/assets.json
index bf535e5..27f5084 100644
--- a/config/assets.json
+++ b/config/assets.json
@@ -1,7 +1,9 @@
 {
   "core": {
     "css": {
-      "bower_components/build/css/dist.min.css": []
+      "bower_components/build/css/dist.min.css": [
+        "bower_components/ng-grid/ng-grid.css"
+      ]
     },
     "js": {
       "bower_components/build/js/dist.min.js": [
@@ -12,7 +14,8 @@
         "bower_components/angular-resource/angular-resource.js",
         "bower_components/angular-ui-router/release/angular-ui-router.js",
         "bower_components/angular-bootstrap/ui-bootstrap.js",
-        "bower_components/angular-bootstrap/ui-bootstrap-tpls.js"
+        "bower_components/angular-bootstrap/ui-bootstrap-tpls.js",
+        "bower_components/ng-grid/ng-grid-2.0.12.debug.js"
       ]
     }
   }
diff --git a/packages/challenges/app.js b/packages/challenges/app.js
index 0aa064a..4728044 100644
--- a/packages/challenges/app.js
+++ b/packages/challenges/app.js
@@ -60,7 +60,7 @@ Challenges.register(function (app, auth, database) {
         //you now have the settings object
     });
    */
-
+  Challenges.aggregateAsset('css', 'challenges.css');
 
   return Challenges;
-});
\ No newline at end of file
+});
diff --git a/packages/challenges/public/assets/css/challenges.css b/packages/challenges/public/assets/css/challenges.css
index f6d7f39..d452816 100644
--- a/packages/challenges/public/assets/css/challenges.css
+++ b/packages/challenges/public/assets/css/challenges.css
@@ -1,3 +1,8 @@
 .challenges-example h1{
 	background-color: purple
 }
+
+.gridStyle {
+    border: 1px solid rgb(212,212,212);
+    height: 480px;
+}
diff --git a/packages/challenges/public/challenges.js b/packages/challenges/public/challenges.js
index c6e6290..5d22c00 100644
--- a/packages/challenges/public/challenges.js
+++ b/packages/challenges/public/challenges.js
@@ -3,4 +3,4 @@
  */
 'use strict';
 
-angular.module('mean.challenges', []);
\ No newline at end of file
+angular.module('mean.challenges', ['ngGrid']);
diff --git a/packages/challenges/public/controllers/challenges.js b/packages/challenges/public/controllers/challenges.js
index 20b8d39..26f05ce 100644
--- a/packages/challenges/public/controllers/challenges.js
+++ b/packages/challenges/public/controllers/challenges.js
@@ -3,7 +3,7 @@
  */
 'use strict';
 
-angular.module('mean.challenges').controller('ChallengesController', ['$scope', '$stateParams', '$location', '$sce', 'Global', 'Challenges',
+angular.module('mean.challenges', ['ngGrid']).controller('ChallengesController', ['$scope', '$stateParams', '$location', '$sce', 'Global', 'Challenges',
   function($scope, $stateParams, $location, $sce, Global, Challenges) {
     $scope.global = Global;
 
@@ -145,5 +145,16 @@ angular.module('mean.challenges').controller('ChallengesController', ['$scope',
         }
       });
     };
+
+    $scope.gridOptions = {
+      data: 'challenges',
+      columnDefs: [
+          {field:'id', displayName:'', cellTemplate: '' },
+          {field:'title', displayName: 'Title', cellTemplate: '{{row.getProperty(col.field)}}' },
+          {field:'creator', displayName: 'Creator'},
+          {field:'createdAt', displayName:'Created', cellFilter: 'date:\'yyyy-MM-dd HH:mm a Z\'' }
+      ]
+    };
+
   }
 ]);
diff --git a/packages/challenges/public/views/list.html b/packages/challenges/public/views/list.html
index c5c4177..5172882 100644
--- a/packages/challenges/public/views/list.html
+++ b/packages/challenges/public/views/list.html
@@ -1,4 +1,5 @@