Affordance Based Design: Theoretical Foundations and Practical Applications