event :: {:add_client | :remove_client, pid} | {:send, tuple, pid}
state :: [pid]
broadcast(atom, tuple, pid | nil) :: :ok
broadcast!(atom, tuple) :: :ok
handle_event(event, state) :: {:ok, state}
start_link(atom) :: {:ok, pid}
stop(atom) :: :ok
subscribe(atom, pid) :: :ok
unsubscribe(atom, pid) :: :ok