     ram   : no
     disk  : no
 
+  mapPlansToRadios: (plan) ->
+    @plansByCode[plan.code] = plan
+    { category, resource, upperBound } = plan.usage
+    {
+      title       : @getPlanTitle category, resource, upperBound
+      value       : plan.code
+    }
+
+  getResourceTitle =(resource)->
+    switch resource
+      when 'cpu'    then 'virtual cores'
+      when 'user'   then 'group members'
+      else               '(not implemented)'
+
+
+  getPlanTitle: (category, resource, upperBound)=>
+    """
+    Up to #{upperBound} #{getResourceTitle resource}
+    """
+
+  upperBoundSortFn =(a, b)->
+    a.usage.upperBound - b.usage.upperBound
+
   constructor: (options, data) ->
     super
 
-    {group, bundle} = @getData()
-
-    {JLimit} = KD.remote.api
+    { group, bundle } = @getData()
+
+    { JLimit, JGroupBundle } = KD.remote.api
 
     computeLimit = new JLimit { usage: 0, quota: 0, unit: 'VM', title: 'vms' }
 

      return error err      if err?
      limits.splice 1, 0, computeLimit
      @renderLimits limits  if limits?

    @usersLabel = new KDLabelView
      title       : 'Users'

    <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>
