client-side implementation of ruhoh