added multiple channel support with custom callbacks