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

Package Model <<Rectangle>>{
Interface Model <<Interface>>
Interface ObservableList <<Interface>>
Interface ReadOnlyList<<Interface>>
Interface Version <<Interface>>
Interface Versionable <<Interface>>
Class AddressBook
Class Inventory
Class TransactionHistory
Class Model
Class ModelManager
Class UserPrefs
Class ReadOnlyUserPrefs

Class HiddenOutside #FFFFFF
HiddenOutside ..> Model

AddressBook .up.|> ReadOnlyList
Inventory .up.|> ReadOnlyList
TransactionHistory .up.|> ReadOnlyList

Version ^-- Versionable

AddressBook .up.|> Versionable
Inventory .up.|> Versionable
TransactionHistory .up.|> Versionable

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


@enduml
