more client-side features