Feature/implement generic adapter 3184

of* (will issue PR if you'd prefer)