@startuml
!include style.puml
skinparam arrowThickness 1.1
skinparam arrowColor MODEL_COLOR
skinparam classBackgroundColor MODEL_COLOR

Package Model <<Rectangle>>{
Interface ReadOnlyAddressBook <<Interface>>
Interface Model <<Interface>>
Interface ObservableList <<Interface>>
Class AddressBook
Class ReadOnlyAddressBook
Class Model
Class ModelManager
Class UserPrefs
Class ReadOnlyUserPrefs

Package Passenger {
Class Passenger
Class Address
Class Name
Class Phone
Class UniquePassengerList
Class TripDay
Class TripTime
Class Price
Class Driver
}

Package Tag {
Class Tag
}
}

Class HiddenOutside #FFFFFF
HiddenOutside ..> Model

AddressBook .up.|> ReadOnlyAddressBook

ModelManager .up.|> Model
Model .right.> ObservableList
ModelManager o--> "1" AddressBook
ModelManager o-left-> "1" UserPrefs
UserPrefs .up.|> ReadOnlyUserPrefs

AddressBook *--> "1" UniquePassengerList
UniquePassengerList o--> "*" Passenger
Passenger *--> Name
Passenger *--> Phone
Passenger *--> Address
Passenger *--> TripDay
Passenger *--> TripTime
Passenger *--> "0..1" Price
Passenger *--> "0..1" Driver
Passenger *--> "*" Tag


Name -[hidden]right-> Phone
Phone -[hidden]right-> Address

ModelManager ----->" ~* filtered list" Passenger
@enduml
