add basic backend, adapter and transport API