refactoring subscriptions (thanks @Arunoda!)