added optional channel-based namespacing