implemented client-side push