implmented client side best in place