separated build into constructor