refactoring for multi transport impl