split channel stuff into its own file