Added a proper multichannel implementation
Refactored code (again), added some commands