added what I developed in 2009 by right now I can not understand it ;(