the control flow is basically:
- if there is no animation in the map, put one in the map
- if there is an animation in the map, but it's not running, replace it
- if there is an animation in the map and it's running, try to replace it. If that fails, leave it in and run the new animation after the existing one finished