build for client side