@startuml
actor App

activate App
create Khonsu
App -> Khonsu: Khonsu()

create PartFactory
App -> PartFactory: PartFactory()

App -> Khonsu: get part configs
deactivate App
activate Khonsu

loop for each known part
  Khonsu -> PartFactory: get config
  activate PartFactory
  Khonsu <-- PartFactory
  deactivate PartFactory
end

App <-- Khonsu
deactivate Khonsu

activate App
App -> App: select and populate configs
App -> Khonsu: create for configs
deactivate App

activate Khonsu
loop for each config
  Khonsu -> PartFactory: get factory func
  activate PartFactory
  Khonsu <-- PartFactory
  deactivate PartFactory
  Khonsu -> Khonsu: set part
end
App <--- Khonsu
deactivate Khonsu

activate App
App -> Khonsu: start
activate Khonsu
App <--- Khonsu: successfully started

@enduml
