making the product as functional as it can be, given the criteria and constraints