duce(getSteps, []);
      this.currentStep = 0;
      
      function getSteps(steps, fragment){
        if(fragment.enter && steps.indexOf(fragment.enter) === -1) {
          steps.push(fragment.enter);
        }
    
        if(fragment.exit && steps.indexOf(fragment.exit) === 1) {
          steps.push(fragment.exit);
        }
    
        return steps.sort();
      }
    }
    
    FragmentsController.prototype.next = function() {
      if(this.currentStep === this.steps.length) {
        return false;
