general client side implementation is done - but not tested