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

Package Model <<Rectangle>>{
Interface ReadOnlyMainCatalogue <<Interface>>
Interface Model <<Interface>>
Interface ObservableList <<Interface>>
Class MainCatalogue
Class ReadOnlyMainCatalogue
Class Model
Class ModelManager
Class UserPrefs
Interface ReadOnlyUserPrefs <<Interface>>

Package Project {
Class Project
Class Address
Class Email
Class Name
Class Phone
Class UniqueProjectList
}

Package Tag {
Class Tag
}
}

Class HiddenOutside #FFFFFF
HiddenOutside ..> Model

MainCatalogue .up.|> ReadOnlyMainCatalogue

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

MainCatalogue *--> "1" UniqueProjectList
UniqueProjectList o--> "*" Project
Project *--> Name
Project *--> Phone
Project *--> Email
Project *--> Address
Project *--> "*" Tag

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

ModelManager -->"1" Project : filtered list
@enduml
