       return error err      if err?
       limits.splice 1, 0, computeLimit
       @renderLimits limits  if limits?
+
+    @plansByCode = {}
+
+    JGroupBundle.fetchPlans (err, plans) =>
+
+      @computePlans.addSubView computePlans = new KDInputRadioGroup
+        name    : 'computePlan'
+        radios  : plans.vm.cpu
+          .sort(upperBoundSortFn)
+          .map @bound 'mapPlansToRadios'
+        change  : =>
+          plan = @plansByCode[computePlans.getValue()]
+          @changePlan ['cpu','vms','ram','disk'], plan
+
+      @usersPlans.addSubView userPlans = new KDInputRadioGroup
+        name    : 'userPlan'
+        radios  : plans.group.user
+          .sort(upperBoundSortFn)
+          .map @bound 'mapPlansToRadios'
+        change  : =>
+          plan = @plansByCode[userPlans.getValue()]
+          @changePlan ['users'], plan
+
+    @usersPlans = new KDView cssClass: 'group-bundle-plan-chooser'
+    @computePlans = new KDView cssClass: 'group-bundle-plan-chooser'
 
     @usersLabel = new KDLabelView
       title       : 'Users'

      slider.setValue quota
      slider.emit 'change'

  renderLimits: (limits) ->
    @limits.destroySubViews()
    @limitsData = {}

    <h3>Bundle details</h3>
    <p>There will be some cool details here.</p>
    <div class="group-bundle-plan-sliders clearfix">
      <div>{{> @usersLabel}} {{> @usersPlans}}</div>
      <div>{{> @computeLabel}} {{> @computePlans}}</div>
      <div>{{> @overageLabel}} {div#overage{> @overagePolicy}}</div>
      <div>{{> @advancedModeLabel}} {{> @advancedMode}}</div>
    </div>
