recursive state.go, implemented