Simplified, removed onPlayerChanged