WIP
Protocol: make state type and state threading explicit