code: function startTour(tour) {
  
              tour.config = extendDeep({}, service.config, tour.config);
  
              // Check for valid priorities
              var validPriorities = function (priorities) {
                  if (!angular.isArray(priorities)) { return false; }
                  for (var i = 0; i < priorities.length; i += 1) {
                      if (service.config.placementPriority.indexOf(priorities[i]) === -1) {
                          return false;
                      }
                  }
                  return true;
              };
  
              if (!validPriorities(tour.config.placementPriority)) {
                  tour.config.placementPriority = service.config.placementPriority;
              }
  
              angular.forEach(tour.steps, function (step) {
                  if (!step.placementPriority) { return; }
                  if (!validPriorities(step.placementPriority)) {
                      delete step.placementPriority;
                  }
              });
  
              service.current = {
                  tour: tour,
                  step: 0,
                  promise: $q.defer()
              };
  
              toggleElements(true, tour);
              return doStep();
          }
docs: Internals