come from here
http://www.onjava.com/pub/a/onjava/2004/12/22/jakarta-gems-1.html. but
modify something because of it has something wrong within hard code way.