                     localized[key] = loc
         return localized
 
+    # used internally during execute, this allows us to group together the
+    # correct post to template
     ___.guarded 'resolvePostsAndTemplates', (posts, templates, group)->
         self = TelepathicChain
         return _(posts).map((postContent, key)->

            fn: ()->
                return _.map @instructions.models, (instruction)->
                    if instruction.fn?
                        # return _.wrap instruction.fn, (fn, container)->
                        #     outcome = fn()
                        #     if container? and _.isArray container
                        #         container.push outcome
                        #     return outcome
                        return instruction.single
                    return null
        }
    }
    wrap: (wrapper)->
        unless _.isFunction wrapper
            throw new TypeError "Expected wrapper to be function."
        return _.map @instructions.models, (instruction)->
            if instruction.fn?
                return _.wrap instruction.fn, wrapper
            return null
    initialize: (attrs, opts)->
        if attrs.name?
            attrs.name = _.uniqueId attrs.name

        }
    }
    session: {
        ###*
        * This is a singleton copy of the `fn` property, assigned
        * during initialize
        * @property single
        ###
        single: ['function', true]
    }
    ###*
    * This method takes a function and wraps it around its own function
    * @method wrap
    * @param {Function} wrapper
    * @return {Function} wrapped fn
    ###
    wrap: (wrapper)->
        if _.isFunction wrapper
            return _.wrap @fn, wrapper
    ###*
    * The default constructor for ampersand objects
    * Auto-generates a name if required, and also generates the single session property
    * @method initialize
    ###
    initialize: (attrs, opts)->
        if attrs.name?
            attrs.name = _.uniqueId attrs.name
