Refactor the app construct method

Extracted the merge strategy in order to improve the readability.
Extracted app flow from run method

The run method is unreadable. I just extract the try/catch operations