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

Interface Storage <<Interface>>
Interface UserPrefsStorage <<Interface>>
Interface WemeStorage <<Interface>>

Class StorageManager
Class JsonUserPrefsStorage
Class JsonWemeStorage

StorageManager .left.|> Storage
StorageManager o-right-> UserPrefsStorage
StorageManager o-down-> WemeStorage

JsonUserPrefsStorage .left.|> UserPrefsStorage
JsonWemeStorage .left.|> WemeStorage
JsonWemeStorage .down.> JsonSerializableWeme
JsonSerializableWeme .down.> JsonAdaptedMeme
JsonAdaptedMeme .right.> JsonAdaptedTag
JsonSerializableWeme .right.> JsonSerializableStats
JsonSerializableWeme .left.> JsonSerializableRecord
JsonSerializableWeme .down.> JsonAdaptedTemplate

@enduml
