add subscription cleanup tests
implement client-side subscriptions