updated construction logic