Design an object-oriented elevator system. Define core classes and interfaces (elevator, controller, request, floor, buttons, sensors) and their interactions, including concurrency and fault handling. Propose a scheduling algorithm that optimizes travel time and fairness. Given pending requests for floors [1, 99, 2], show how your scheduler ensures stopping at 2 before 99 while using only a single internal queue data structure; detail the queue operations required, tie-breaking rules, and time/space complexity. Explain how your design scales to multiple elevators and supports peak traffic modes.