extracted constructor resolution to its own class