implemented for three browsers