This is start point for further investigation and refactorings ...