Author: Satoshi Minamibuchi