diff --git a/application/models/rows/CourseCrosslisting.php b/application/models/rows/CourseCrosslisting.php
index 9fd43c5d5dce1caf061099882759ed5edce853b9..ba065ce35b0d4555d03d3e793c82991356a774f6 100644
--- a/application/models/rows/CourseCrosslisting.php
+++ b/application/models/rows/CourseCrosslisting.php
@@ -8,12 +8,17 @@ class CourseCrosslisting extends Nmc_Db_Table_Row
     protected $_integratedStudies;
     protected $_courseCodeRow;
 
-    protected function _init()
+    protected function _init($config = array())
     {
-        parent::_init();
+        parent::_init($config);
+
+        if ($config['eagerData']['courseCode'] instanceof CourseCode) {
+            $courseCode = $config['eagerData']['courseCode'];
+        } else {
+            $courseCode = CourseCodes::getInstance()->findOne($this->courseCode);
+        }
 
         $primaryKeyName = CourseCodes::getInstance()->getPrimaryKeyName();
-        $courseCode = CourseCodes::getInstance()->findOne($this->courseCode);
         if($courseCode->$primaryKeyName) {
             $this->_subject = $courseCode->subject;
             $this->_courseNumber = $courseCode->courseNumber;
diff --git a/application/models/tables/CourseCrosslistings.php b/application/models/tables/CourseCrosslistings.php
index 7a647cf8529c20d550ee7651edcf280360a3b55f..72ba072b811f4b067ce04567c38183034873918d 100644
--- a/application/models/tables/CourseCrosslistings.php
+++ b/application/models/tables/CourseCrosslistings.php
@@ -111,24 +111,42 @@ class CourseCrosslistings extends Local_Db_CourseTableMany
         if($order) {
             $rowset = parent::fetchAll($where, $order, $count, $offset);
         } else {
-            $courseCodeTableName = CourseCodes::getInstance()->getTableName();
-            $courseCodePrimary = CourseCodes::getInstance()->getPrimaryKeyName();
+            $courseCodes = CourseCodes::getInstance();
+            $courseCodeTableName = $courseCodes->getTableName();
+            $courseCodePrimary = $courseCodes->getPrimaryKeyName();
+
+            $courseCodesInfo = $courseCodes->info();
+            $courseCodesCols = $courseCodesInfo['cols'];
 
             $select = $this->_db->select();
             $select->from($this->_name, '*');
             $select->join($courseCodeTableName,
                             $this->_name . '.courseCode = '
-                          . $courseCodeTableName . '.' . $courseCodePrimary,
-                          array());
+                          . $courseCodeTableName . '.' . $courseCodePrimary);
 
             $select->where($where);
             $select->order(array('subject', 'courseNumber', 'courseLetter'));
             $select->limit($count, $offset);
             $resultData = $this->_db->fetchAll($select);
+
             $config = array();
             $config['db'] = $this->_db;
             $config['table'] = $this;
-            $config['data'] = $resultData;
+            $config['data'] = array();
+            $config['eagerData'] = array();
+
+            foreach ($resultData as $resultDatum) {
+                $config['data'][] = array_intersect_key($resultDatum, array_flip($this->_cols));
+
+                $eagerData = array();
+                $eagerData['db'] = $courseCodes->getAdapter();
+                $eagerData['table'] = $courseCodes;
+                $eagerData['data'] = array_intersect_key($resultDatum, array_flip($courseCodesCols));
+
+                $eagerRow = new CourseCode($eagerData);
+
+                $config['eagerData'][] = array('courseCode' => $eagerRow);
+            }
             $rowset = new Nmc_Db_Table_Rowset($config);
         }
         return $rowset;