Original version in Chinese. Waiting to be refatored into Angularjs & translated into English