http://www.iro.umontreal.ca/~simardr/ssj/examples/