bridge and adapter patterns