add received explicit state
refactor how the path channel works, thanks to @temas