http://www.personal.reading.ac.uk/~sms06al2/reptate