Refactoring. Splitting code into multipl
Revert "Refactoring. Splitting code into multipl"

This reverts commit b5e10cb63d475f3aa19fed31b59686fe5d72bc91.
Revert "Revert "Refactoring. Splitting code into multipl""

This reverts commit a25f4cd970b88d9eddc86fef07dd5118d21c7952.