@startuml skinparam nodesep 10 skinparam ranksep 30 abstract class Trade { to: Agent } abstract class Transfer abstract class Organize "Associate" <|-- Organize "Associate" <|-- Transfer Organize <|-- Reserve Organize <|--- "Cancel\nReservation" Transfer <|-- Receive "Associate" <|-- Trade Trade <|-- Sell Trade <|-- Donate Trade <|-- Pay Trade <|-- Rent Trade <|-- "Dispose\nProduct" @enduml