Updated Sept. 2011 by Satoshi Tomoda