ignore filename with suffix '~'.
prettify ArgParser
use argvalue instead extractor
Don't use dst_msg as data member, make generate function can use multiple times.
refactor MsgGenerator, extract some logic out of substr extraction to private functions