added client side browser detection