Allow user to add router, conversation and channel components

This is the bit I was talking about on the phone earlier... many of these utility functions can either be cleaned up or completely removed by changing the structure of the data we are going to store.