Author: Cornafion.