refactoring transport to keep things managable