This is my GeekHub homework at stage 2.