added Bridge Pattern