public function carousel(array $images, array $options = array())
    {
        $html = '';
        $id = $this->page->id('carousel');
        $options = array_merge(array(
            'interval' => 5000, // ie. 5 seconds in between frame changes
            'indicators' => true, // set to false if you don't want them
            'controls' => true, // set to false if you don't want them
        ), $options);
        if ($options['indicators']) {
            $indicators = array_keys(array_values($images));
            $html .= '<ol class="carousel-indicators">';
            $html .= '<li data-target="#'.$id.'" data-slide-to="'.array_shift($indicators).'" class="active"></li>';
            foreach ($indicators as $num) {
                $html .= '<li data-target="#'.$id.'" data-slide-to="'.$num.'"></li>';
            }
            $html .= '</ol>';
        }
        $html .= '<div class="carousel-inner" role="listbox">';
        foreach ($images as $key => $value) {
            $class = (isset($class)) ? 'item' : 'item active'; // ie. the first one is active
            $img = (!is_numeric($key)) ? $key : $value;
            $caption = (!is_numeric($key)) ? '<div class="carousel-caption">'.$value.'</div>' : '';
            $html .= '<div class="'.$class.'">'.$img.$caption.'</div>';
        }
        $html .= '</div>';
        if ($options['controls']) {
            if (is_array($options['controls'])) {
                list($left, $right) = $options['controls'];
                if (strpos($left, '<') === false) {
                    $left = $this->icon($left, 'glyphicon', 'span aria-hidden="true"');
                }
                if (strpos($right, '<') === false) {
                    $right = $this->icon($right, 'glyphicon', 'span aria-hidden="true"');
                }
            } else {
                $left = $this->icon('chevron-left', 'glyphicon', 'span aria-hidden="true"');
                $right = $this->icon('chevron-right', 'glyphicon', 'span aria-hidden="true"');
            }
            $html .= $this->page->tag('a', array(
                'class' => 'left carousel-control',
                'href' => '#'.$id,
                'role' => 'button',
                'data-slide' => 'prev',
            ), $left, '<span class="sr-only">Previous</span>');
            $html .= $this->page->tag('a', array(
                'class' => 'right carousel-control',
                'href' => '#'.$id,
                'role' => 'button',
                'data-slide' => 'next',
            ), $right, '<span class="sr-only">Next</span>');
        }

        return $this->page->tag('div', array(
            'id' => $id,
            'class' => 'carousel slide',
            'data-ride' => 'carousel',
            'data-interval' => $options['interval'],
        ), $html);
    }