bus refactor