Handle error when loading and fix leaks. Mark streams as virtual if nothing else is specified. Try to reuse an existing core connection if possible. unload the module when the core is in error or when it is destroyed.
Add a new loopback module that can also create virtual-sink and virtual-source.