Adaptable Distributed Object Oriented Systems Using the HATS Approach: A Fredhopper Case