def run_impl(self, change, entry, out):
        """
        sets up the report directory for an HTML report. Obtains the
        top-level Cheetah template that is appropriate for the change
        instance, and runs it.

        The cheetah templates are supplied the following values:
         * change - the Change instance to report on
         * entry - the string name of the entry for this report
         * options - the cli options object
         * breadcrumbs - list of backlinks
         * javascripts - list of .js links
         * stylesheets - list of .css links

        The cheetah templates are also given a render_change method
        which can be called on another Change instance to cause its
        template to be resolved and run in-line.
        """

        options = self.options

        # translate relative paths if necessary
        javascripts = self._relative_uris(options.html_javascripts)
        stylesheets = self._relative_uris(options.html_stylesheets)

        # map the class of the change to a template class
        template_class = resolve_cheetah_template(type(change))

        # instantiate and setup the template
        template = template_class()

        # create a transaction wrapping the output stream
        template.transaction = DummyTransaction()
        template.transaction.response(resp=out)

        # inject our values
        template.change = change
        template.entry = entry
        template.options = options
        template.breadcrumbs = self.breadcrumbs
        template.javascripts = javascripts
        template.stylesheets = stylesheets

        # this lets us call render_change from within the template on
        # a change instance to chain to another template (eg, for
        # sub-changes)
        template.render_change = lambda c: self.run_impl(c, entry, out)

        # execute the template, which will write its contents to the
        # transaction (and the underlying stream)
        template.respond()

        # clean up the template
        template.shutdown()
sets up the report directory for an HTML report. Obtains the
        top-level Cheetah template that is appropriate for the change
        instance, and runs it.

        The cheetah templates are supplied the following values:
         * change - the Change instance to report on
         * entry - the string name of the entry for this report
         * options - the cli options object
         * breadcrumbs - list of backlinks
         * javascripts - list of .js links
         * stylesheets - list of .css links

        The cheetah templates are also given a render_change method
        which can be called on another Change instance to cause its
        template to be resolved and run in-line.