Squashed commit of the following:

commit a3f905c2457673eb21e269df8ef2acf6b974c930
Author: SimonWu <wuhanyu@gmail.com>
Date:   Sun Jun 9 11:52:21 2013 +0800

    21

commit b59a69f56762520e375ade2938c982e2543a12c4
Author: SimonWu <wuhanyu@gmail.com>
Date:   Sat Jun 8 09:33:33 2013 +0800

    23