added client-side stuff