hide channel internals from callers