Author: Kazuo MUT&#332;