modified by wenny 1, 2.