Sign-up wizard structure seems too repetitive I think my current structure is way too repetitive.  I feel like I must be missing something that would easily make this sign up wizard work far better.

  &lt;ol class="registerMeter"&gt;
    &lt;li class="progress-point" ng-click="wiz('step1')"     ng-class="{active: step1.active, done: step1.done, todo: step1.todo}"&gt;Step 1&lt;/li&gt;
    &lt;li class="progress-point" ng-click="wiz('step2')"     ng-class="{active: step2.active, done: step2.done, todo: step2.todo}"&gt;Step 2&lt;/li&gt;
    &lt;li class="progress-point" ng-click="wiz('step3')"     ng-class="{active: step3.active, done: step3.done, todo: step3.todo}"&gt;Step 3&lt;/li&gt;
&lt;/ol&gt;
&lt;section class="row formMain" ng-switch="step"&gt;
    &lt;section class="row" ng-switch-default&gt;
        &lt;form ng-submit="registerSubmit()"&gt;                
        &lt;/form&gt;        
    &lt;/section&gt;
    &lt;section ng-switch-when="step2"&gt;
        &lt;form&gt;

        &lt;/form&gt;
    &lt;/section&gt;
    &lt;section ng-switch-when="step3"&gt;
        &lt;form&gt;

        &lt;/form&gt;
    &lt;/section&gt;
&lt;/section&gt;


app.controller('registerCtrl', function($scope, $http, $location, FlashService){

    $scope.step1 = {active: true, done:false, todo: false};
    $scope.step2 = {active: false, done:false, todo: true};
    $scope.step3 = {active: false, done:false, todo: true};

    $scope.wiz = function(step){
        $scope.step = step;
        switch (step) {
            case 'step1':
                $scope.step1 = {active: true, done:false, todo: false};
                $scope.step2.active = false;
                $scope.step3.active = false;
                $scope.step2.todo = true;
                $scope.step3.todo = true;
                break;
            case 'step2':
                $scope.step1.active = false;
                $scope.step1.todo = true;
                $scope.step2 = {active: true, done:false, todo: false};                
                $scope.step3.active = false;
                $scope.step3.active = false;
                break;
            case 'step3':
                $scope.step1.active = false;
                $scope.step2.active = false;
                $scope.step1.todo = true;
                $scope.step2.todo = true;
                $scope.step3 = {active: true, done:false, todo: false};
                break
            default: 
                $scope.step1 = {active: true, done:false, todo: false};
                $scope.step2 = {active: false, done:false, todo: true};
                $scope.step3 = {active: false, done:false, todo: true};            
        }
    }



    $scope.registerSubmit = function(){
        $http.post()
            .success(function(data, status, headers, config){                
                $scope.step = 'step2';
                $scope.step1 = {active: false, done:true , todo:false}
                $scope.step2.active = true;
                if (data.msg !='') {
                      $scope.msgs.push(data.msg);
                  } else {
                       $scope.errors.push(data.error);
                   }
              }).error(function(data, status){
                      FlashService.show(response.flash);
                    $scope.errors.push(status);
                })
    };
});


I'm worried that the switch and ngclass statements are way more than I need. Is there a simpler way to accomplish this? This just doesn't feel DRY at all.
You can make this DRYer if you can assume that : 


You keep naming each step stepx
No other variables in $scope start with step


In that case you could use a function that sets in a first step the right scope active and then the other steps inactive:

function updateScopeSteps( $scope , step )
{
   //Default to step1
   step = step || 'step1';
   //Set step
   $scope.step = step;
   //Activate step
   $scope[ step ] = {active: true, done:false, todo: false};
   //De-activate all other steps
   for( var name in $scope ){
     if( name.substring(0,4) == 'step' &amp;&amp; name != step ){
       $scope[name].active = false;
       $scope[name].todo = true;
     }
   }
}