@startuml

' Include theme using full system path
!include config.puml

' Interfaces
interface Model {
    +getValue(): Object
    +setValue(value: Object)
    +serialize(): string
}

interface Component {
    +getModel(): Model
    +setModel(model: Model)
}

interface Controller {
    +updateViews()
    +handleModelChange()
}

interface Loader {
    +load(ior: string): Promise<any>
    +canLoad(ior: string): boolean
}

' Implementation Classes
class UcpModel {
    -value: Object
    -proxy: Object
    +getValue(): Object
    +setValue(value: Object)
    +serialize(): string
    +createProxy(): Object
}

class UcpComponent {
    -model: UcpModel
    -data: Object
    +getModel(): UcpModel
    +setModel(model: Object)
}

class UcpScenario
