handle 1-4 channels, closes #2