It's sad that we have heavy constructors here that contain "return"s in the middle, would be nice to move all the logic to Extract methods instead (with following patches)