@startuml :instantiate mussel object; :instantiate bluetooth object; group init :setup mussel voting; :setup bluetooth scanner; end group split while (each beacon detected) group "bluetooth callback" { :collect beacon data; end group endwhile -[hidden]-> kill split again while (each 500ms) group loop { :allign beacon data as ballots; :qualify ballots for a vote; :conclude vote result; :act on vote result; end group endwhile -[hidden]-> kill @enduml