adding optional channel elements, and a few tests