bridge and adapter pattern