I always seem to be running out of data, but I have way more minutes than I need. I propose a system that allows users to select exactly what level of each service they desire. Basically a series of 'levels' for each service, ie text, data, minutes etc. And the users selects exactly what level they want of each.
So lets say a plan is $40/month and comes with 5 credits. Each credit covers one level, so as the user I can choose which categories I would like each credit to go toward. As an example I would select 3 credits worth of data and only one of text and one of minutes. Plus for add-ons it would be simple to say that one additional credit is $__ on top of your current plan.