* fixed threading issue
* fixed channel offset issue
* only sends if changes