decorator design pattern
Merge https://github.com/storypku/tlpi