About Syncing the game state

Options
Hi,
I am building a game where the you can invite friends to a lobby (4 players max).
And the lobby is already inside the room, I'm implementing a lobby with real-time features like (chat with RPC's) and emotions triggering with RPC (smile, cry, dance.. etc..)
Now every player can click ready and the admin can click start game when all players in the lobby are ready.

So first of all,
1) how do I sync the ready state? I use each player custom props, and I use a OnPhotonPlayerPropertiesChanged on the player prefab, that sets a checkmark next to ready players.
all players check if (PhotonView.IsMine && PhotonNetwork.IsMasterClient) and if it's true, they itterate all players custom props and check if all are ready, if they are, enabling the start button, if not, disabling it (for the admin only).

2) How do I let all players know about changes as the master client? For this I'm less sure about my path, but will love to hear best practices :smile: .
When click "Start Game" as the admin, I'm changing the rooms custom props, and all players are listening to OnPhotonCustomRoomPropertiesChanged and fire up multiplayer game procedure functions like, ['Announce players', 'Start Game', 'Game Ended', 'Announce Scores', 'Announce Winners', etc.....].

So are those 2 ways of implementing this is fine? are there maybe any better ways? maybe best practices? because I need to let all players know exactly when the game starts

Thanks you all in advance! :D