remove delegate stuff use simple channel
cleanup state reading