adding adapter abstractions