Refactor 003 to use channels