This allows us to swap out the implementation in the future and on different platforms without major changes to the extensions themselves.
* Extract source api from app module * Extract source online api from app module