added Bridge pattern