First! Beware, ugly code.