Re-apply Dark Angel changes lost in past merges.

Specifically changes from commits:
f0c1cc709c69ce6bf5bc52b8316356eb296ae6db
27434398e268e3f20ca8253a0166ba1a7415de71
87ef8f320ec72b9c33f534153a0eadb6a7ebccd7