Add multi-channel support + cleanup