Working on channel joining and some refactoring