fix: player disconnect, *huge* code clean-up