fix bugs
use set-state! and get-state to establish and get channels