refactor tx/rx into forward