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

package Storage{

package "UserPrefs Storage" #F4F6F6{
Class "<<interface>>\nUserPrefsStorage" as UserPrefsStorage
Class JsonUserPrefsStorage
}

Class "<<interface>>\nStorage" as Storage
Class StorageManager

package "Friday Storage" #F4F6F6{
Class "<<interface>>\nFridayStorage" as FridayStorage
Class JsonFridayStorage
Class JsonSerializableFriday
Class JsonAdaptedStudent
Class JsonAdaptedTag
}

}

Class HiddenOutside #FFFFFF
HiddenOutside ..> Storage

StorageManager .up.|> Storage
StorageManager -up-> "1" UserPrefsStorage
StorageManager -up-> "1" FridayStorage

Storage -left-|> UserPrefsStorage
Storage -right-|> FridayStorage

JsonUserPrefsStorage .up.|> UserPrefsStorage
JsonFridayStorage .up.|> FridayStorage
JsonFridayStorage ..> JsonSerializableFriday
JsonSerializableFriday --> "*" JsonAdaptedStudent
JsonAdaptedStudent --> "*" JsonAdaptedTag

@enduml
