@startuml
hide footbox

participant "Ui" as none
participant ":AddLessonCommand" as Command
participant ":Lesson" as Lesson
participant ":MasterTimetable" as Master
participant ":Timetable" as Timetable

create Command
none -> Command : AddLessonCommand("john", "cs2113", "monday", 1200, 1400, "online")
activate Command
none <-- Command :
deactivate Command

none -> Command : execute(masterTimetable)
activate Command
create Lesson
Command -> Lesson : Lesson("cs2113", "monday", 1200, 1400, "online")
activate Lesson
Command <-- Lesson : lesson :Lesson
deactivate Lesson

Command ->  Master : addLesson(lesson, "john")
activate Master
Master -> Master : getByName("john")
activate Master
Master --> Master : :Timetable
deactivate Master

Master -> Timetable : add(lesson)
activate Timetable
Master <-- Timetable
deactivate Timetable

Command <-- Master
deactivate Master

Command -> Command : addConfirmation(lesson, "john")
activate Command
Command --> Command : :String
deactivate Command

none <-- Command : :String
deactivate Command
destroy Command

@enduml