@startuml ChangeAssociation <|-- Organize ChangeAssociation <|-- Transfer Organize <|-- Plan Organize <|-- Allocate Allocate <|-- Accept Allocate <|-- Reject Allocate <|-- Assign Allocate <|-- Authorize Plan <|-- Reserve Plan <|-- Cancel Transfer <|-- Receive ChangeAssociation <|-- Trade Trade <|-- Sell Trade <|-- Donate Trade <|-- Pay Trade <|-- Rent Trade <|-- DisposeProduct class ChangeAssociation { agent: who did it } class Receive { sender recipient } class Reserve { reservee } class Cancel { reservee } class Trade { } class Allocate { purpose } class Sell { buyer } class Donate { recipient } class Pay { purpose recipient } class Rent { recipient } Association <|-- PhysicalPossessor Association <|-- TradeAssociation TradeAssociation <|-- Usufructuary TradeAssociation <|-- Ownership Sell - TradeAssociation Donate - TradeAssociation Rent -- Usufructuary : Sure? Receive - PhysicalPossessor @enduml