constrained return value