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

Package Model <<Rectangle>>{
Interface ReadOnlyWordBankList <<Interface>>
Interface ReadOnlyWordBankStatisticsList <<Interface>>
Interface ReadOnlyAppSettings <<Interface>>
Interface ReadOnlyUserPrefs <<Interface>>
Interface Model <<Interface>>
Interface ObservableList <<Interface>>
Class WordBankList
Class WordBankStatisticsList
Class GlobalStatistics
Class AppSettings
Class Model
Class ModelManager
Class UserPrefs
Class ReadOnlyUserPrefs
Class Game

'Package WordBankList {
Class WordBankList
Class UniqueWordBankList

Package WordBank {
Class WordBank
Class UniqueCardList

Package Card {
Class Card
}

}

}

WordBankList .up.|> ReadOnlyWordBankList
WordBankStatisticsList .up.|> ReadOnlyWordBankStatisticsList
AppSettings .up.|> ReadOnlyAppSettings


ModelManager .up.|> Model
Model .right.> ObservableList
ModelManager --> "1" WordBankList
ModelManager --> "1" WordBankStatisticsList
ModelManager --> "1" GlobalStatistics
ModelManager --> "1" AppSettings
ModelManager --> "1" UserPrefs
ModelManager --> "1" Game
UserPrefs .up.|> ReadOnlyUserPrefs

WordBankList *-down-> "1" UniqueWordBankList
UniqueWordBankList o--> "*" WordBank
WordBank *-down-> "1" UniqueCardList
UniqueCardList --> "1" Card
WordBankList -left[hidden]-> UserPrefs

ModelManager -->"1" WordBank : contains
@enduml
