Author: ys@cor-e.com