@startuml !include skinparams.puml actor "GUI program / Human user" as user boundary "Engine CLI" as cli control "Play a stone" as playStone control "Think next move" as think entity "Board state" as state loop until desired board is set user -> cli : play stone cli -> playStone playStone -> state cli <- state end user -> cli : ask for move cli -> think think -> state cli <- state : Show move @enduml