Rewrite channelmonitor framework and implement a bunch of it