Affordance theory for engineering design