Software is hard to change for a variety of reasons, including the presence of assumptions about the external system (the context) being deeply embedded within software fragments. This project investigated this problem from two perspectives: reduction of assumptions in particular fragments through the appropriate choice of structuring (essential structure); and, mitigating the presence of assumptions already present.