http://www.cs.usask.ca/faculty/mccrosky/carl/index.html