From Nicholas Duffek (with minor changes by Martin Hunt,