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

Package Model <<Rectangle>>{
Interface ReadOnlyFlashBack <<Interface>>
Interface Model <<Interface>>
Interface ObservableList <<Interface>>
Class FlashBack
Class ReadOnlyFlashBack
Class Model
Class ModelManager
Class UserPrefs
Class ReadOnlyUserPrefs

Package Flashcard {
Class Flashcard
Class Priority
Class Category
Class Question
Class Answer
Class UniqueFlashcardList
}

Package Tag {
Class Tag
}
}

Class HiddenOutside #FFFFFF
HiddenOutside ..> Model

FlashBack .up.|> ReadOnlyFlashBack

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

FlashBack *--> "1" UniqueFlashcardList
UniqueFlashcardList o--> "*"Flashcard
Flashcard *--> Question
Flashcard *--> Answer
Flashcard *--> Category
Flashcard *--> Priority
Flashcard *--> "*" Tag

Question -[hidden]right-> Answer
Answer -[hidden]right-> Priority
Priority -[hidden]right-> Category

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