channels refactoring, more work to go