See http://www.schnada.de/hylin/tao.html.