client side restructured