Refactor player impulse into events (#225)