more work on client side