refactor add_backend