added the bridge pattern