@startuml !include skinparams.puml actor "GUI Program" as program boundary "Set board state" as setState control "State set to represent the needed board" as setStateEngine entity "Board state" as state boundary "Move is asked for" as ask control "Engine thinks next move" as think boundary "Move is suggested" as suggestion program -> setState setState -> setStateEngine setStateEngine -> state state -> ask program -> ask ask -> think think -> suggestion program -> suggestion @enduml