a framework for dynamically adaptable augmented reality systems .
design patterns : elements of reusable object - oriented software .