namespace boost {
  namespace numeric {
    namespace odeint {
      template<typename Stepper, typename System, typename State, 
               typename TimeIterator, typename Time, typename Observer, 
               typename StepOverflowChecker> 
        size_t integrate_times(Stepper stepper, System system, 
                               State & start_state, TimeIterator times_start, 
                               TimeIterator times_end, Time dt, 
                               Observer observer, 
                               StepOverflowChecker checker);
      
      template<typename Stepper, typename System, typename State, 
               typename TimeIterator, typename Time, typename Observer, 
               typename StepOverflowChecker> 
        size_t integrate_times(Stepper stepper, System system, 
                               const State & start_state, 
                               TimeIterator times_start, 
                               TimeIterator times_end, Time dt, 
                               Observer observer, 
                               StepOverflowChecker checker);
      
      template<typename Stepper, typename System, typename State, 
               typename TimeRange, typename Time, typename Observer, 
               typename StepOverflowChecker> 
        size_t integrate_times(Stepper stepper, System system, 
                               State & start_state, const TimeRange & times, 
                               Time dt, Observer observer, 
                               StepOverflowChecker checker);
      
      template<typename Stepper, typename System, typename State, 
               typename TimeRange, typename Time, typename Observer, 
               typename StepOverflowChecker> 
        size_t integrate_times(Stepper stepper, System system, 
                               const State & start_state, 
                               const TimeRange & times, Time dt, 
                               Observer observer, 
                               StepOverflowChecker checker);
      template<typename Stepper, typename System, typename State, 
               typename TimeIterator, typename Time, typename Observer> 
        size_t integrate_times(Stepper, System, State &, TimeIterator, 
                               TimeIterator, Time, Observer);
      
      template<typename Stepper, typename System, typename State, 
               typename TimeIterator, typename Time, typename Observer> 
        size_t integrate_times(Stepper stepper, System system, 
                               const State & start_state, 
                               TimeIterator times_start, 
                               TimeIterator times_end, Time dt, 
                               Observer observer);
      
      template<typename Stepper, typename System, typename State, 
               typename TimeRange, typename Time, typename Observer> 
        size_t integrate_times(Stepper stepper, System system, 
                               State & start_state, const TimeRange & times, 
                               Time dt, Observer observer);
      
      template<typename Stepper, typename System, typename State, 
               typename TimeRange, typename Time, typename Observer> 
        size_t integrate_times(Stepper stepper, System system, 
                               const State & start_state, 
                               const TimeRange & times, Time dt, 
                               Observer observer);
    }
  }
}