                 # Add the modeling properties.
                 for modeling in session.modelings
                   extendModeling(modeling, session)
-                # The session overlays property returns the label map
-                # objects which have a color table.
+                # The session overlays property.
                 Object.defineProperty session, 'overlays',
                   get: ->
-                    _.flatten(_.pluck(@modelings, 'overlays'))
+                    associate = (accum, modeling) ->
+                      accum[modeling.protocol] = modeling.overlays
+                    modelings = (mdl for mdl in @modelings when mdl.overlays.length?)
+                    if modelings.length?
+                      _.reduce(modelings, associate, {})
               
               # Extend each session.
               for session, i in subject.sessions

            # described in the extendModeling and extendSession
            # functions below.
            extendSessions = ->
              # Adds the following modeling parameter result
              # properties:
              # * key - the parameter result access property name
              # * modelingResult - the parent modeling result
              #   reference 

          # * scan - the registration source scan
          #
          # @param registration the registration to extend
          # @param number the one-based registration index within the scan
          # @param scan the source scan
          extendRegistration = (registration, number, scan) ->
            # Set the source scan reference.
            registration.scan = scan
            # Format the title.
            registration.title = "Scan #{ scan.number } Registration" +
                                 " #{ registration.number }"
            # Add the registration volume properties.
            extendImageContainer(registration)

          # * Extends the scan registrations as described in
          #   extendRegistration
          # * Converts the scan number to an integer
          # * Extends the scan object as described in extendImageContainer
          # * Adds the following properties:
          #   * session - the source scan parent session
          #
          # @param scan the scan to extend
          extendScan = (scan) ->
            # The number is read as a string, as with all JSON values.
            # Convert it to an integer.
            scan.number = parseInt(scan.number)
            # The scan title.
            scan.title = "Scan #{ scan.number }"
            # Set the session reference.
            scan.session = session
            # Add the scan volume properties.
            extendImageContainer(scan)
            # Add the scan registration properties.
            for reg, regNbr in scan.registrations
              extendRegistration(reg, regNbr + 1, scan)
          
          # The session object must have a detail reference.
          if not session.detail?
