diff --git a/data/cubes.squareui.js b/data/cubes.squareui.js
index 785c1d5081cc51b7d40e8c04434fe74d3addb69f_ZGF0YS9jdWJlcy5zcXVhcmV1aS5qcw==..e388a69cb77f9c5b11113fd4a40278c1c551b5ef_ZGF0YS9jdWJlcy5zcXVhcmV1aS5qcw== 100644
--- a/data/cubes.squareui.js
+++ b/data/cubes.squareui.js
@@ -17,8 +17,8 @@
         var $contentCol = $('#main-center');
         var $asideCols = $(".cwjs-aside");
         if ($asideCols.length) {
-            var collapsendContentClass = twbs_col_cls + (12 - $asideCols.length * 3);
-            var fullContentClass = twbs_col_cls + 12;
+            var collapsendContentClass = twbs_col_cls + (twbs_grid_columns - $asideCols.length * 3);
+            var fullContentClass = twbs_col_cls + twbs_grid_columns;
             var displayAsideboxes = cw.cubes.squareui.getLocalData('asideboxes');
             if (toggle === undefined) {
                 displayAsideboxes = $asideCols.hasClass('hidden');
diff --git a/views/basetemplates.py b/views/basetemplates.py
index 785c1d5081cc51b7d40e8c04434fe74d3addb69f_dmlld3MvYmFzZXRlbXBsYXRlcy5weQ==..e388a69cb77f9c5b11113fd4a40278c1c551b5ef_dmlld3MvYmFzZXRlbXBsYXRlcy5weQ== 100644
--- a/views/basetemplates.py
+++ b/views/basetemplates.py
@@ -27,6 +27,9 @@
 basetemplates.TheMainTemplate.twbs_container_cls = 'container-fluid'
 basetemplates.TheMainTemplate.twbs_col_cls = 'col-xs-'
 
+# options which require recompiling bootstrap.css from source
+basetemplates.TheMainTemplate.twbs_grid_columns = 12
+
 
 @monkeypatch(basetemplates.TheMainTemplate)
 def call(self, view):
@@ -30,7 +33,6 @@
 
 @monkeypatch(basetemplates.TheMainTemplate)
 def call(self, view):
-    self.grid_nb_cols = 12
     self.set_request_content_type()
     self.template_header(self.content_type, view)
     self.template_page_content(view)
@@ -70,5 +72,5 @@
     right_boxes = list(self._cw.vreg['ctxcomponents'].poss_visible_objects(
         self._cw, rset=self.cw_rset, view=view, context='right'))
     nb_boxes = int(bool(left_boxes)) + int(bool(right_boxes))
-    content_cols = 12
+    content_cols = self.twbs_grid_columns
     if nb_boxes:
@@ -74,5 +76,5 @@
     if nb_boxes:
-        content_cols = self.grid_nb_cols-(3*nb_boxes)
+        content_cols = self.twbs_grid_columns-(3*nb_boxes)
     self.nav_column(view, left_boxes, 'left')
     self.content_column(view, content_cols)
     self.nav_column(view, right_boxes, 'right')
diff --git a/views/component.py b/views/component.py
index 785c1d5081cc51b7d40e8c04434fe74d3addb69f_dmlld3MvY29tcG9uZW50LnB5..e388a69cb77f9c5b11113fd4a40278c1c551b5ef_dmlld3MvY29tcG9uZW50LnB5 100644
--- a/views/component.py
+++ b/views/component.py
@@ -31,7 +31,9 @@
     icon_css_cls = 'glyphicon glyphicon-align-justify'
 
     def render(self, w):
-        self._cw.html_headers.define_var('twbs_col_cls', TheMainTemplate.twbs_col_cls)
+        define_var = self._cw.html_headers.define_var
+        define_var('twbs_col_cls', TheMainTemplate.twbs_col_cls)
+        define_var('twbs_grid_columns', TheMainTemplate.twbs_grid_columns)
         w(u'''<button class="btn btn-default navbar-btn" id="cw-aside-toggle"
               onclick="cw.cubes.squareui.toggleLeftColumn()" title="%(label)s">
               <span class="%(icon_class)s"></span>