Humans are able to come up with plans to achieve their goals, and to adapt these plans to changes in their environment, finding fixes, alternatives and taking advantages of opportunities without much deliberation. For example, they may use a tea kettle to water the plants, or a mug instead of a glass. Despite decades of research, artificial agents are not as robust or as flexible. In this work, we introduce three reasoning phases that use affordances to enable such robustness and flexibility in robot task planning. The first phase generates a focused planning problem. The second phase expands the domain where necessary while the third and final reasoning phase uses affordances during plan execution and monitoring. This is accomplished by combining Hierarchical Task Network planning, description logics, and a robust execution/monitoring system.