http://www.2pole.com/docs/view.php?article=PyProgFAQ.htm