split drivers and channels into composable roles