Updated 2 and 3 by hongyi