Allow user to add router, conversation and channel components

Does this really need to take ``data`` as a parameter? We have ``component.data``.