Updated with Sequence Diagram