Author: Proteus.