Many spoilers ahead