finish the 2nd version. SNup and SGdown need to be implemented