constrain constructor