added client-side .ready()