diff --git a/bootstrap.css b/bootstrap.css
index d0c78d03706be6e83506379cf1085ea41325cef3..adae67ec911c9f526261aba6da265515a5d6a111 100644
--- a/bootstrap.css
+++ b/bootstrap.css
@@ -6,7 +6,7 @@
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Designed and built with all the love in the world @twitter by @mdo and @fat.
- * Date: Fri Dec  9 11:23:25 PST 2011
+ * Date: Fri Dec  9 11:32:45 PST 2011
  */
 html, body {
   margin: 0;
diff --git a/docs/javascript.html b/docs/javascript.html
index 09cdc714cbb9ab2005dccdff446e2f79a5254e28..c541d57fbd40556726c22d9d28273b52774b60b3 100644
--- a/docs/javascript.html
+++ b/docs/javascript.html
@@ -757,7 +757,7 @@ $('a[data-toggle="tab"]').bind('shown', function (e) {
     </section>
 
 
-     <!-- Button
+    <!-- Button
     ================================================== -->
 
     <section id="button">
diff --git a/js/bootstrap-alert.js b/js/bootstrap-alert.js
index 210512a8b31e10b2dc09aa2cfc038abb58a299b4..06913008085bc1e0e811cb62676680d22ad54865 100644
--- a/js/bootstrap-alert.js
+++ b/js/bootstrap-alert.js
@@ -32,7 +32,9 @@
 
   Alert.prototype = {
 
-    close: function ( e ) {
+    constructor: Alert
+
+  , close: function ( e ) {
       var $element = $(this)
 
       $element = $element.hasClass('alert-message') ? $element : $element.parent()
diff --git a/js/bootstrap-button.js b/js/bootstrap-button.js
index 1cafe4d6889fcbf022ff223712f770cb87730f44..4ed24d98b9d5de0af62a9dc374e471be56bdced8 100644
--- a/js/bootstrap-button.js
+++ b/js/bootstrap-button.js
@@ -31,7 +31,9 @@
 
   Button.prototype = {
 
-      setState: function (state) {
+      constructor: Button
+
+    , setState: function (state) {
         var d = 'disabled'
           , $el = this.$element
           , data = $el.data()
diff --git a/js/bootstrap-carousel.js b/js/bootstrap-carousel.js
new file mode 100644
index 0000000000000000000000000000000000000000..9513b4cd21d247e87f1c56f61100eb7515dc10b3
--- /dev/null
+++ b/js/bootstrap-carousel.js
@@ -0,0 +1,59 @@
+/* ==========================================================
+ * bootstrap-carousel.js v2.0.0
+ * http://twitter.github.com/bootstrap/javascript.html#alerts
+ * ==========================================================
+ * Copyright 2011 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function( $ ){
+
+  "use strict"
+
+ /* CAROUSEL CLASS DEFINITION
+  * ========================= */
+
+  var Carousel = function ( el ) {
+    $(el).delegate(dismiss, 'click', this.close)
+  }
+
+  Carousel.prototype = {
+
+  }
+
+
+ /* CAROUSEL PLUGIN DEFINITION
+  * ========================== */
+
+  $.fn.carousel = function ( option ) {
+    return this.each(function () {
+      var $this = $(this)
+        , data = $this.data('alert')
+      if (!data) $this.data('alert', (data = new Alert(this)))
+      if (typeof option == 'string') data[option].call($this)
+    })
+  }
+
+  $.fn.carousel.Carousel = Carousel
+
+
+ /* CAROUSEL DATA-API
+  * ================= */
+
+  // $(function () {
+  //   $('body').delegate(dismiss, 'click.alert.data-api', Alert.prototype.close)
+  // })
+
+}( window.jQuery || window.ender )
\ No newline at end of file
diff --git a/js/bootstrap-collapse.js b/js/bootstrap-collapse.js
index 93f91513e344a24a350a7f6951fee6d0c56f94cb..f56f6c7050cd5ee9a95764e88a63fd8db0276ed5 100644
--- a/js/bootstrap-collapse.js
+++ b/js/bootstrap-collapse.js
@@ -34,7 +34,9 @@
 
   Collapse.prototype = {
 
-    dimension: function () {
+    constructor: Collapse
+
+  , dimension: function () {
       var hasWidth = this.$element.hasClass('width')
       return hasWidth ? 'width' : 'height'
     }
diff --git a/js/bootstrap-dropdown.js b/js/bootstrap-dropdown.js
index 7259284bfedf3f2bd55a57215497aeb74900c76a..238a52e08607dbffb3db3c73afccc52470f5b2f1 100644
--- a/js/bootstrap-dropdown.js
+++ b/js/bootstrap-dropdown.js
@@ -32,7 +32,9 @@
 
   Dropdown.prototype = {
 
-    toggle: function ( e ) {
+    constructor: Dropdown
+
+  , toggle: function ( e ) {
       var li = $(this).parent('li')
         , isActive = li.hasClass('open')
 
diff --git a/js/bootstrap-modal.js b/js/bootstrap-modal.js
index 5f543c5537d87b19328b19557270ef482bbc351a..189bcf2acc35f1affbe7e0e5a95b75e3ac5a4bca 100644
--- a/js/bootstrap-modal.js
+++ b/js/bootstrap-modal.js
@@ -34,7 +34,9 @@
 
   Modal.prototype = {
 
-      toggle: function () {
+      constructor: Modal
+
+    , toggle: function () {
         return this[!this.isShown ? 'show' : 'hide']()
       }
 
diff --git a/js/bootstrap-popover.js b/js/bootstrap-popover.js
index 3c67b18fc230b09797dd208b84cbe49753384363..890f6efc0bec5b3123414aa37230eaafca1d4f66 100644
--- a/js/bootstrap-popover.js
+++ b/js/bootstrap-popover.js
@@ -34,7 +34,9 @@
 
   Popover.prototype = $.extend({}, $.fn.twipsy.Twipsy.prototype, {
 
-    setContent: function () {
+    constructor: Popover
+
+  , setContent: function () {
       var $tip = this.tip()
         , title = this.getTitle()
         , content = this.getContent()
diff --git a/js/bootstrap-scrollspy.js b/js/bootstrap-scrollspy.js
index fe34019ffc38d03129e7b69ad8a60952514d11ad..8248b6cbddb2a842d39c6635a5e7074cad803f21 100644
--- a/js/bootstrap-scrollspy.js
+++ b/js/bootstrap-scrollspy.js
@@ -39,7 +39,9 @@
 
   ScrollSpy.prototype = {
 
-      refresh: function () {
+      constructor: ScrollSpy
+
+    , refresh: function () {
         this.targets = this.$body
           .find(this.selector)
           .map(function () {
diff --git a/js/bootstrap-tab.js b/js/bootstrap-tab.js
index ba956cbe86aa0e0f103b6d07895f375857c10fe9..6aa8ae32cf8908d81b6c9fc13faecfb3650eec82 100644
--- a/js/bootstrap-tab.js
+++ b/js/bootstrap-tab.js
@@ -31,7 +31,9 @@
 
   Tab.prototype = {
 
-    show: function () {
+    constructor: Tab
+
+  , show: function () {
       var $this = this.element
         , $ul = $this.closest('ul:not(.dropdown-menu)')
         , href = $this.attr('data-target') || $this.attr('href')
diff --git a/js/bootstrap-twipsy.js b/js/bootstrap-twipsy.js
index fe4469a232f5824592d9587f348f1a729c9eaa08..ca8ac8800f675df68ed0141ae7ac7ec18d27992d 100644
--- a/js/bootstrap-twipsy.js
+++ b/js/bootstrap-twipsy.js
@@ -34,7 +34,9 @@
 
   Twipsy.prototype = {
 
-    show: function() {
+    constructor: Twipsy
+
+  , show: function() {
       var pos
         , actualWidth
         , actualHeight
@@ -183,7 +185,7 @@
     return this
   }
 
-  $.fn.twipsy.initWith = function (options, Constructor, name) {
+  $.fn.twipsy.initWith = function (options, Base, name) {
     var twipsy
       , binder
       , eventIn
@@ -209,7 +211,7 @@
       var twipsy = $.data(ele, name)
 
       if (!twipsy) {
-        twipsy = new Constructor(ele, $.fn.twipsy.elementOptions(ele, options))
+        twipsy = new Base(ele, $.fn.twipsy.elementOptions(ele, options))
         $.data(ele, name, twipsy)
       }