constructors phase refactoring for readability

Rebase of #2586.