improve cross-browser