I've made it use channels but I feel like this is all wrong.