refactored subscriber