in channel objects, use push/pull methods with optional handlers