reduce constructor complexity