Add spectator component and implement SpectatorHandler