Allow user to add router, conversation and channel components

Is there a reason we store ``.data`` on scope, rather than just creating it when we call ``add(data)``?