Extract source by responsability to avoid one huge unmaintainable single file