fixed a couple of bugs; added per-channel ops