global protocol API(role API, role Controller, role Storage, role User) { Start(int) from Controller to Storage; Start(int) from Controller to API ; HardPing() from Storage to Controller; rec Loop { Request() from User to API; GetMode() from API to Controller; choice at Controller { Up() from Controller to API; Request(int) from API to Storage; Reponse(int) from Storage to Api; Response(int) from API to User; continue Loop; } or { Failure() from Controller to API; Restart() from Controller to Storage(); Failure() from API to User; continue Loop; } or { Stop() from Controller to API; Stop() from Controller to Storage(); Stop() from API to User; } } }