Client side implementation