Refactored into observable extension method